利用MVC思想编写代码实现登录功能
M层代码:
package org.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import org.entity.Login; //模型层,用于处理登录(查询数据) public class LoginDAO { public static int login(Login login){ final String URL="jdbc:mysql://localhost:3306/java?useSSL=false"; final String USERNAME = "root"; final String PASSWORD = "123456"; Connection connection = null; PreparedStatement pstmt = null; ResultSet rs = null; int result = -1; int flag = -1;//-1:系统异常。0:用户名或密码有误。1:登录成功 try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(URL,USERNAME,PASSWORD); String sql = "select count(*) from login where uname=? and upwd=?"; pstmt = connection.prepareStatement(sql); pstmt.setString(1,login.getUname()); pstmt.setString(2, login.getUpwd()); rs = pstmt.executeQuery(); if(rs.next()){ result = rs.getInt(1); } if(result>0){ return 1;//登录成功 }else{ return 0;//登录失败,用户名或密码错误 } } catch (ClassNotFoundException e) { e.printStackTrace(); return -1;//登录失败(系统异常) }catch(SQLException e){ e.printStackTrace(); return -1;//登录失败(系统异常) }catch(Exception e){ e.printStackTrace(); return -1;//登录失败(系统异常) }finally{ try { if(connection!=null) connection.close(); if(pstmt!=null) pstmt.close(); if(rs!=null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } catch(Exception e){ e.printStackTrace(); } } } }
C层代码:
先将uname和upwd进行封装
package org.entity; public class Login { private int id; private String uname; private String upwd; public Login() {} public Login( String uname, String upwd) { this.uname = uname; this.upwd = upwd; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getUpwd() { return upwd; } public void setUpwd(String upwd) { this.upwd = upwd; } }
C层调用M层实现登录操作
package org.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 org.dao.LoginDAO; import org.entity.Login; //控制器层,接收view请求,并分发给model层 public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理登录请求 request.setCharacterEncoding("utf-8"); String name = request.getParameter("uname"); String pwd = request.getParameter("upwd"); Login login = new Login(name,pwd);//用户名,密码 //调用模型层的登录功能 int result = LoginDAO.login(login); if(result > 0){//登录成功 response.sendRedirect("welcome.jsp"); }else{//登录失败 response.sendRedirect("login.jsp"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
V层:
<form action="LoginServlet"> 用户名:<input type="text" name="uname"/> 密码:<input type="password" name="upwd"/> <input type="submit" value="登录"/> </form>
原文:https://www.cnblogs.com/hsy-go/p/12530275.html