1.登錄注冊
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登陸頁面
<!DOCTYPE html> <html> <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> </html>
運行效果:
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>