Struts2+AJAX+JQuery 實現使用者登入與註冊功能。

Cheng發表於2014-04-20

要求

    • 必備知識

      JAVA/Struts2,JS/JQuery,HTML/CSS基礎語法。

    • 開發環境

      MyEclipse 10

    • 演示地址

      演示地址


預覽截圖(抬抬你的滑鼠就可以看到演示地址哦):

 

2014-04-20_132250

 

2014-04-20_132403

2014-04-20_132338

2014-04-20_132452

2014-04-20_132325

 

關於UI部分請檢視下列連結,有詳細製作步驟:

 

前段時間學校剛學完Struts2-Action篇,又自學了一點AJAX/JQuery,到網上看了一些CSS3知識。突然想要不要乾脆做一個使用者註冊與登入功能。下面是JAVA部分的核心程式碼, 如果這樣的邏輯和大家想的很有出入的話,歡迎拍磚劈斧,呵呵。

UserAction.java

package action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedList;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import dao.UserDao;
import entity.User;

public class UserAction extends ActionSupport {

    private String contentType = "text/html;charset=utf-8"; 
    private User user;
    private LinkedList<User> users;
    public LinkedList<User> getUsers() {
        return users;
    }
    public void setUsers(LinkedList<User> users) {
        this.users = users;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    /**
     * 查詢使用者   登入驗證
     * @return
     * @throws IOException 
     */
    public void select() throws IOException{
        //指定輸出內容型別和編碼  
        ServletActionContext.getResponse().setContentType(contentType);  
        //獲取輸出流,然後使用  
        PrintWriter out = null;
        out = ServletActionContext.getResponse().getWriter();
        this.user=new UserDao().select(user); //給this.user賦值
        if(user==null){
            out.print("登入失敗");
        }else{
            ActionContext actionContext=ActionContext.getContext();
            actionContext.getSession().put("user",user);
            actionContext.getSession().put("users",new UserDao().getList());
            out.print("登入成功");
        }
        out.flush();  
        out.close(); 
    }
    
    
    
    /**
     * 新增使用者控制器
     * @throws Exception
     */
    public void add() throws IOException{
        //指定輸出內容型別和編碼  
        ServletActionContext.getResponse().setContentType(contentType);   
        //獲取輸出流,然後使用  
        PrintWriter out = null;
        out = ServletActionContext.getResponse().getWriter();
        int rs=new UserDao().add(this.user);
        if(rs==1){
            ActionContext actionContext=ActionContext.getContext();
            actionContext.getSession().put("user",user);
            actionContext.getSession().put("users",new UserDao().getList());
            
        }
        out.print(rs);
        out.flush();  
        out.close(); 
        //System.out.print(new UserDao().add(this.user));  這裡不能在用 System.out.print() 否則後臺報錯
    
    }
    
    
    public String upd(){
        
        return null;
    }
    
    
    public String del(){
        
        return null;
    }
    
    
    /*@Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return super.execute();
    }*/

    
    
    
    
}

 

UserDao.java

package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import tools.ConvertJson;
import tools.JDBCUtilSingle;
import entity.User;
public class UserDao {

    
    /**
     * 插入操作 註冊功能
     * @param user   使用者例項 POJO
     * @return 操作標記 1成功 2郵箱存在 3使用者名稱存在
     */
    public int add(User user){
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet rs=null;
        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
        String sql="select * from form2_user where name=? or email=?";
        try {
            statement=connection.prepareStatement(sql);
            statement.setString(1,user.getName());
            statement.setString(2, user.getEmail());
            rs=statement.executeQuery(); 
            if(rs.next()){
                if(rs.getString("email").equals(user.getEmail())){return 2;} //2郵箱存在
                if(rs.getString("name").equals(user.getName())){return 3;} //3使用者名稱存在
            }
            sql="INSERT INTO form2_user (`id`, `email`, `name`, `pass`) VALUES (NULL,?,?,?)";
            statement=connection.prepareStatement(sql);
            statement.setString(1,user.getEmail());
            statement.setString(2,user.getName() );
            statement.setString(3, user.getPass());
            statement.executeUpdate(); 
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
        }
        
        return 1;  //1表示成功註冊
    }
    
    
    
    
    
    /**
     * 使用者登入 放回登入使用者物件資訊
     * @param user 使用者物件
     * @return
     */
    public User select(User user){
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet rs=null;
        User myUser=null;
        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
        String sql="select * from form2_user where (name=? or email=?) and pass=?";
        try {
            statement=connection.prepareStatement(sql);
            statement.setString(1,user.getName());
            statement.setString(2,user.getName());
            statement.setString(3,user.getPass());
            rs=statement.executeQuery();
            if(rs.next()){
                myUser=new User();
                myUser.setName(rs.getString("name"));
                myUser.setEmail(rs.getString("email"));
                myUser.setPass(rs.getString("pass"));
                
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
        }
         
        return myUser;
    }
    
    
    
    
    /**
     * 獲取所有使用者資訊
     * @return 使用者集合
     */
    public LinkedList<User> getList(){
        Connection connection=null;
        PreparedStatement statement=null;
        ResultSet rs=null;
        User myUser=null;
        LinkedList<User> users=new LinkedList<User>();
        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();
        String sql="select * from form2_user";
        try {
            statement=connection.prepareStatement(sql);
            rs=statement.executeQuery();
            while(rs.next()){
                myUser=new User(rs.getString("email"),rs.getString("name"), rs.getString("pass"));
                users.add(myUser);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);
        }
        
        return users;
    }
    
    
}

 

User.java

package entity;

public class User {
        private String email;
        private String name;
        private String pass;
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPass() {
            return pass;
        }
        public void setPass(String pass) {
            this.pass = pass;
        }
        public User(){}
        
        public User(String email,String name, String pass){
            this.email=email;
            this.name=name;
            this.pass=pass;
        }
        
}

 

呵呵,又結束了,不知到你們看懂了沒。請原諒童鞋我目前的表述能力只能到這了。歡迎大家來拍磚來劈斧,希望我幼小的心靈能抗得住。

如以上文章或連結對你有幫助的話,別忘了在文章結尾處輕輕點選一下 “還不錯”按鈕或到頁面右下角點選 “贊一個” 按鈕哦。你也可以點選頁面右邊“分享”懸浮按鈕哦,讓更多的人閱讀這篇文章。

 

作者:Li-Cheng
由於本人水平有限,文章在表述和程式碼方面如有不妥之處,歡迎批評指正。留下你的腳印,歡迎評論哦。你也可以關注我,一起學習哦!

相關文章