Java語言實現簡單的登陸注冊


1.1數據庫設計

create table USER_INFO(
      id number not null,
      name varchar2(20) not null,
      pass varchar2(20)
)
insert into USER_INFO values(1,'zhang','121314');

1.2 新建項目

1.2.1 添加項目說需要的包 即連接數據庫的ojdbc的jar包

1.2.2編寫連接數據庫的工具類

package org.user.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {
    private static String driver="oracle.jdbc.driver.OracleDriver";
    private static String url="jdbc:oracle:thin:@localhost:1521:orcl";
    private static String user="yongl";
    private static String passwd="121314";
    public static Connection getConnection() {
        try {
            Class.forName(driver);
            return DriverManager.getConnection(url, user, passwd);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public static void closeConn(Connection conn,Statement stm , ResultSet rs ) {

        if(stm!=null){
            try {
                stm.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(rs!=null){
            try{
                rs.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {

        System.out.println(getConnection());
    }
}

運行效果:

連接成功。

1.2.3 編寫實體類

package org.user.entity;

public class User {
    private int uid;
    private String userName;
    private String userPass;
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserPass() {
        return userPass;
    }
    public void setUserPass(String userPass) {
        this.userPass = userPass;
    }
    @Override
    public String toString() {
        return "User [uid=" + uid + ", userName=" + userName + ", userPass=" + userPass + "]";
    }
    
    
}

1.2.4 編寫dao方法

package org.user.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.user.entity.User;
import org.user.util.DBUtil;

public class UserDao {
    //根據用戶名查找用戶
    public User findUserByName(String userName){
        //編寫sql語句
        String sql="select * from USER_INFO where name=?";
        //獲得連接
        Connection conn= DBUtil.getConnection();
        //有返回的結果
        ResultSet rs= null;
        //實例化一個User對象
        User user = new User();
        try {
            //用來發送sql語句的
            PreparedStatement ps = conn.prepareStatement(sql);
            //設置要傳入的參數,這里是userN
            ps.setString(1, userName);
            //執行sql語句
            rs=ps.executeQuery();
            //如果能找到結果
            if(rs.next()){
                //則把找到的結果一一set進User對象中
                user.setUid(rs.getInt(1));
                user.setUserName(rs.getString(2));
                user.setUserPass(rs.getString(3));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {//關閉連接
            DBUtil.closeConn(conn, null, rs);
        }
        //最后要把這個user返回出去
        return user;
        
    }
    
    //添加用戶
    //在這里把整個用戶對象傳進來
    public int addUser(User user){
        //編寫sql語句
        String sql = "insert into USER_INFO values(?,?,?)";
        Connection conn= DBUtil.getConnection();
        //有返回的結果
        ResultSet rs= null;
        int i=0;
        try {
            PreparedStatement ps = conn.prepareStatement(sql);
            //這些參數是要保存到數據的
            ps.setInt(1, user.getUid());
            ps.setString(2, user.getUserName());
            ps.setString(3, user.getUserPass());
            //執行sql語句
            i=ps.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            DBUtil.closeConn(conn, null, rs);
        }
    return i;
    }
    public static void main(String[] args) {
        UserDao dao = new UserDao();
        User i = dao.findUserByName("zhang");
        System.out.println(i.getUserPass());
        
    }
}

運行結果:

1.2.5 編寫servlet

a)添加用戶的servlet

package org.user.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.user.dao.UserDao;
import org.user.entity.User;

@WebServlet("/addServlet")
public class AddUserServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
     
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                //設置編碼
                request.setCharacterEncoding("utf-8");
                response.setCharacterEncoding("utf-8");
                //獲取從頁面中提交過來的數據
                int id = Integer.parseInt(request.getParameter("id")) ;//數據類型轉換
                String userName = request.getParameter("name");
                String userPass = request.getParameter("pass");    
                
                User user = new User();
                user.setUid(id);
                user.setUserName(userName);
                user.setUserPass(userPass);
                
                //調用dao方法
                UserDao dao = new UserDao();
                int i=dao.addUser(user);
                if(i==1){
                    request.getRequestDispatcher("index.jsp").forward(request, response);
                }
    }

}

b)查詢用戶的servlet
package org.user.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.user.dao.UserDao;
import org.user.entity.User;
import org.user.service.LoginService;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //設置編碼
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    //獲取從頁面中提交過來的數據
    String userName = request.getParameter("name");
    String userPass = request.getParameter("pass");
    
    LoginService service = new LoginService();
    //調用service方法 把用戶名 密碼傳入給service
    boolean flag = service.checkUser(userName, userPass);
    String msg = flag?"success":"error";
    
    request.setAttribute("msg", msg);
    if(msg=="success"){
        request.getRequestDispatcher("index.jsp").forward(request, response);    
    }
    else{
        System.out.println("賬戶名或密碼錯誤");
    }
}

}

service方法

package org.user.service;

import org.user.dao.UserDao;
import org.user.entity.User;

public class LoginService {
public boolean checkUser(String userName, String password) {
//在這里調用dao方法
UserDao dao = new UserDao();
//把名字傳入對象中查詢
User user = dao.findUserByName(userName);
System.out.println(user);
//山木運算 如果找到了user 並且 自己輸入的password 跟數據庫查出來的user.getUserPass() 一致 則返回true 否則返回false
return user != null && password.equals(user.getUserPass()) ? true : false;

    /*if(user != null){
        if(password.equals(user.getUserPass())){
            return true;
        }
    }
    return false;*/
}

}

1.2.6登陸頁面
<head>
    <meta charset="utf-8">
    <title></title>
</head>

<body >
<form method="post" action="loginServlet">
     用戶名:<input type="text" name="name"/><br/><br/>
     密碼:<input type="password" name="pass"/><br/><br/>
     <input type="submit" > 
</form>
</body>

運行效果:

1.2.7注冊頁面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form method="post" action="addServlet">
         學號:<input type="text" name="id"/><br/><br/>
         姓名:<input type="text" name="name"/><br/><br/>
         密碼<input type="password" name="pass"/><br/><br/>
         <input type="submit" > 
    </form>
</body>
</html>



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM