界面建議用可視化來做,美觀且便捷。下面這個是完全用代碼寫的,僅供參考。\x0d\x0aimport javax.swing.*;\x0d\x0aimport java.awt.event.*;\x0d\x0aimport java.awt.*;\x0d\x0aimport java.sql.*;\x0d\x0apublic class Register extends JFrame {\x0d\x0a JLabel jl1 = new JLabel("用戶名");\x0d\x0a JTextField jt1 = new JTextField();\x0d\x0a JLabel jl2 = new JLabel("郵箱");\x0d\x0a JTextField jt2 = new JTextField();\x0d\x0a JLabel jl3 = new JLabel("密碼");\x0d\x0a JPasswordField jpw1 = new JPasswordField();\x0d\x0a JLabel jl4 = new JLabel("密碼確認");\x0d\x0a JPasswordField jpw2 = new JPasswordField();\x0d\x0a JButton register = new JButton("注冊");\x0d\x0a JButton clean = new JButton("清空");\x0d\x0a public Register(){\x0d\x0a setLayout(new GridLayout(5,2));\x0d\x0a add(jl1);\x0d\x0a add(jt1);\x0d\x0a add(jl2);\x0d\x0a add(jt2);\x0d\x0a add(jl3);\x0d\x0a add(jpw1);\x0d\x0a add(jl4);\x0d\x0a add(jpw2);\x0d\x0a add(register);\x0d\x0a add(clean);\x0d\x0a String name = jt1.getText();\x0d\x0a String email = jt2.getText();\x0d\x0a String pw = jpw1.getText();\x0d\x0a register.addActionListener(new ActionListener(){\x0d\x0a public void actionPerformed(ActionEvent e){\x0d\x0a try{\x0d\x0a Class.forName("com.mysql.jdbc.Driver");\x0d\x0a Connection con = DriverManager.getConnection("jdbc:mysql://localhost/db","root","");\x0d\x0a Statement sta = con.createStatement();\x0d\x0a sta.executeUpdate("INSERT INTO register VALUES(name,email,pw)");\x0d\x0a JOptionPane.showMessageDialog(null,"注冊成功","提示",JOptionPane.INFORMATION_MESSAGE);\x0d\x0a }\x0d\x0a catch(Exception ex){\x0d\x0a ex.getStackTrace();\x0d\x0a }\x0d\x0a }\x0d\x0a });\x0d\x0a clean.addActionListener(new ActionListener(){\x0d\x0a public void actionPerformed(ActionEvent e){\x0d\x0a jt1.setText("");\x0d\x0a jt2.setText("");\x0d\x0a jpw1.setText("");\x0d\x0a jpw2.setText("");\x0d\x0a }\x0d\x0a });\x0d\x0a }\x0d\x0a public static void main(String[] args){\x0d\x0a Register frame = new Register();\x0d\x0a frame.setTitle("用戶注冊");\x0d\x0a frame.setLocationRelativeTo(null);\x0d\x0a frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\x0d\x0a frame.setSize(400,400);\x0d\x0a frame.setVisible(true);\x0d\x0a }\x0d\x0a}
成都創(chuàng)新互聯專業(yè)為企業(yè)提供薊州網站建設、薊州做網站、薊州網站設計、薊州網站制作等企業(yè)網站建設、網頁設計與制作、薊州企業(yè)網站模板建站服務,十余年薊州做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
首先,我們得明白用戶登錄使用什么登陸的,即用戶在線的原理。這只是將用戶的對象存放在了session中而已,然后再frame中進行調用,其他特定頁面也進行直接引用就行。那么實現“擠下來”的功能就是讓新生成的session有效,讓原來存放用戶的session失效就行。到此,大體思路已經有了。那怎么實現呢?
想要知道怎么實現,就必須要明白session存放用戶對象的過程了。在用戶登錄之后,我們可以得到用戶的對象user,而存放到session中需要執(zhí)行session.setAttribute(key,value); 我們將用戶的userId或是其他的唯一標識存為key,將用戶對象存為值。這樣就能隨時隨地調用唯一用戶了。user存放的問題解決了,那相同 登錄 時session廢除的問題呢?
?
這個其實也不難,我們可以更具session的特性一樣,用map進行存貯,將用戶的標識存為key,而將其所對應的session存為value,那么當重復用戶登錄時,只需要取出對應的session,將其invalidate就行了。
至此,實現思路已經明了,聒噪了這么久,大家都急不可耐地想看代碼了吧?以下是代碼:
前置準備,jsp界面
界面很簡單,只是一個簡單的登錄界面
form action ="%=request.getContextPath()%/UserWXPServlet" method = "post"
用戶名?input type = "text" name = "username"/br/
密碼?input type = "text" name = "password"/br/
input type = "submit" value ="提交"/
/form
成功后跳轉頁面
歡迎:${sessionScope.user.username}登陸!br/
我這沒有寫失敗頁面,大家可以自己寫,失敗頁面也沒什么好說的了
entity和登錄的實現
user的javabean
private String username;
private String password;
public User() {
}
public User(String user, String password) {
super();
this.username = user;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
登錄user的service實現方法,這里就不寫dao和接口了,一切以簡單為
public boolean dologin(User user){
Properties pro = new Properties();
InputStream is = UserWXPServlet.class.getClassLoader().getResourceAsStream("user_wxp.properties");
String password = null;
System.out.println(is+"---------"+pro);
if(user==null){
return false;
}
try {
pro.load(is);
password = pro.getProperty(user.getUsername());
if(user.getPassword()!=nulluser.getPassword().equals(password)){
System.out.println("登陸成功");
return true;
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return false;
}
登錄成功返回true,失敗則返回false。
hibernate-mapping
class name="com.model.Member" table="t_member"
id name="member_id" type="java.lang.Integer"
column name="member_id" /
generator class="native"
/generator
/id
property name="member_truename" type="java.lang.String"
column name="member_truename" /
/property
property name="member_birth" type="java.util.Date"
column name="member_birth" /
/property
property name="member_qq" type="java.lang.String"
column name="member_qq" /
/property
property name="member_provinceid" type="java.lang.Integer"
column name="member_provinceid" /
/property
property name="member_cityid" type="java.lang.Integer"
column name="member_cityid" /
/property
property name="member_areaid" type="java.lang.Integer"
column name="member_areaid" /
/property
/class
/hibernate-mapping
@Service
@SuppressWarnings({ "rawtypes", "unchecked" })
public class MemberService {
MemberDaoMember memberDao = new MemberDao();
public void saveMember(Member member) {
memberDao.save(member);
}
}
@Repository
public class MemberDaoMember {
@Autowired
public SessionFactory sessionFactory;
/**
* 獲得當前事物的session
*
* @return org.hibernate.Session
*/
public Session getCurrentSession() {
return this.sessionFactory.getCurrentSession();
}
public Serializable save(Member member) {
if (member != null) {
return this.getCurrentSession().save(member);
}
return null;
}
}
這篇文章主要介紹了java通過JFrame做一個登錄系統(tǒng)的界面完整代碼示例,具有一定借鑒價值,需要的朋友可以參考下。
在java的JFrame內通過創(chuàng)建匿名對象的方式做登錄界面
package com.sxt;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LoginFrame extends JFrame{
JTextField txtname=new JTextField();
JPasswordField txtpass=new JPasswordField();
JButton bl=new JButton("登錄");
JButton bg=new JButton("關閉");
//構造無參構造器把主要的方法放在構造器里,然后在main方法里面調
public LoginFrame(){
setBounds(25,25,250,250);
Container c = getContentPane();
c.setLayout(new GridLayout(4,2,10,10));
c.add(new JLabel("用戶名"));
c.add(txtname);
c.add(new JLabel("密碼"));
c.add(txtpass);
c.add(bl);
c.add(bg);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
//注意:此處是匿名內部類
bg.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.exit(0);
}
}
);
//注意:此處是匿名內部類
bl.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Java寫提示注冊成功的方法如下:
1、首先用戶注冊完成后,返回一個boolean值的變量;
2、利用Servlet類判斷這個變量,如果為true,跳轉到提示界面,提示用戶注冊成功,如果為false,跳轉到提示界面,提示用戶注冊失敗;
3、具體代碼如下所示:
public?class?DemoServlet?extends?HttpServlet?{
public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
throws?ServletException,?IOException?{
String?username?=?request.getParameter("username");
String?usepwd=?request.getParameter("usepwd");
boolean?flag?=?Dao.register(username,usepwd);//注冊方法
if(flag){
//提示注冊成功
request.getRequestDispatcher("/success.jsp").forward(request,?response);
}else{
//提示注冊失敗
request.getRequestDispatcher("/success.jsp").forward(request,?response);
}
}
public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)
throws?ServletException,?IOException?{
doGet(request,?response);
}
}
4、至此,就完成了提示注冊成功的功能。