登錄代碼
- entity類
package com.wy.entity; public class User { private int id; private String username; private String password; private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
- userDao接口
package com.wy.dao; import com.wy.entity.User; public interface UserDao { //保存用戶信息 public void save(User user); //登錄接口 public User login(String username,String password); //根據用戶名查詢用戶方法接口 public boolean findByName(String username); }
- userDaoImpl(接口的實現)
package com.wy.daoImpl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import com.wy.dao.UserDao; import com.wy.db.DBUtils; import com.wy.entity.User; public class UserDaoImpl implements UserDao { @Override //保存 public void save(User user) { // TODO Auto-generated method stub Connection conn = null; PreparedStatement ps = null; try { //連接數據庫 conn = DBUtils.getConnection(); //SQL語句 ps = conn .prepareStatement("insert into user(username,password,email)values(?,?,?)"); //給用戶屬性動態設置 ps.setString(1, user.getUsername()); ps.setString(2, user.getPassword()); ps.setString(6, user.getEmail()); ps.executeUpdate(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ //關閉數據庫連接 DBUtils.close1(ps, conn); } } @Override public User login(String username, String password) { // TODO Auto-generated method stub Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=DBUtils.getConnection(); ps=conn.prepareStatement("select * from user where username=? and password=?"); ps.setString(1, username); ps.setString(2, password); rs=ps.executeQuery(); if(rs.next()){ User user=new User(); user.setId(rs.getInt("id")); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); user.setEmail(rs.getString("email")); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ DBUtils.close2(rs, ps, conn); } return null; } @Override public boolean findByName(String username) { // TODO Auto-generated method stub Connection conn=null; PreparedStatement ps=null; ResultSet rs=null; try { conn=DBUtils.getConnection(); ps=conn.prepareStatement("select * from user where name=?"); ps.setString(1, username); rs=ps.executeQuery(); if(rs.next()){ user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); }finally{ DBUtils.close2(rs, ps, conn); } return false; } }
- 數據庫的設置
package com.wy.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBUtils { //數據庫的連接設置 static String url="jdbc:mysql://localhost:3306/java"; static String user="root"; static String password="wy123"; static{ try { //加載數據庫驅動 Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO: handle exception e.printStackTrace(); } } /** * 建立連接 * @throws SQLException * */ public static Connection getConnection() throws SQLException{ Connection conn=DriverManager.getConnection(url, user, password); return conn; } /** * 數據庫關閉操作1:PreparedStatement ps,Connection conn * */ public static void close1(PreparedStatement ps,Connection conn){ if(ps!=null){ try { ps.close(); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } } } /** * 數據庫關閉操作2:ResultSet rs,PreparedStatement ps,Connection conn * */ public static void close2(ResultSet rs,PreparedStatement ps,Connection conn){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO: handle exception e.printStackTrace(); } } close1(ps, conn); } }
- 登錄Servlet(LoginServlet)
package com.wy.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.wy.daoImpl.UserDaoImpl; import com.wy.entity.User; public class LoginServlet extends HttpServlet{ //doPost方法 @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //獲取jsp頁面參數 String username=request.getParameter("username"); String password=request.getParameter("password"); //實例化userDaoImpl,該類中為接口的實現方法 UserDaoImpl userDaoImpl=new UserDaoImpl(); //根據得到的參數信息查詢數據庫中的用戶名以及密碼是否匹配 User user=userDaoImpl.login(username, password); //匹配結果是否為空,即該用戶是否存在 if(user!=null){ request.getSession().setAttribute("user", user); request.getRequestDispatcher("message.jsp").forward(request ,response); }else { request.setAttribute("message", "用戶名或密碼錯誤!!!"); request.getRequestDispatcher("message.jsp").forward(request, response); } } }
這次登錄的心得體會:在最開始的時候看了一些基礎的Servlet視頻進行的學習,對於它的頁面跳轉有一些了解,但是並具體的功能實現。敲代碼我覺得是最快的了解語言的方式,這次的登錄做完后比剛開始要更加了解Servlet,就如同在剛開始的時候我都不太理解如何區分executeUpdate與executeQuery,所以在去敲的時候有專門去查它們的區別然后再去使用就知道為什么去用它,要去研究它的用法,個人認為比看書要好一些。代碼肯定還需要去不斷的完善,新人也還在摸索更適合自己的學習道路,希望大家多多指教