MVC案例-----登录验证
结构图:
View视图层:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>登录</title> 8 </head> 9 <body> 10 <form action="../Login" method="post"> 11 姓名:<input type="text" name="uname"><br> 12 密码:<input type="password" name="upwd"> 13 <input type="submit" value="提交"> 14 </form> 15 </body> 16 </html>
控制器,LoginServlet:
1 package dao; 2 import java.io.IOException; 3 import javax.servlet.ServletException; 4 import javax.servlet.annotation.WebServlet; 5 import javax.servlet.http.HttpServlet; 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 9 import LoginDao.Login; 10 import LoginDao.LoginDao; 11 12 13 @WebServlet("/Login" ) 14 15 //控制器层:接收view请求,并分发给模型层处理 16 public class LoginServlet extends HttpServlet { 17 18 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 19 request.setCharacterEncoding("UTF-8"); 20 //获取前端数据 21 String name = request.getParameter("uname"); 22 String pwd =request.getParameter("upwd"); 23 24 Login login = new Login(name,pwd); 25 26 int result = LoginDao.login(login); 27 if(result >0) { 28 response.sendRedirect("jsp/welcome.jsp");//登录成功 29 }else { 30 response.sendRedirect("jsp/login.jsp");//登录失败,可能是密码有误,也可能是服务器出错 31 } 32 33 } 34 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 35 36 37 doGet(request, response); 38 } 39 40 }
Model层:
1 package LoginDao; 2 3 public class Login { 4 private String uname; 5 private String upwd; 6 7 public Login(String uname, String upwd, int id) { 8 this.uname = uname; 9 this.upwd = upwd; 10 this.id = id; 11 } 12 public Login(String uname, String upwd) { 13 this.uname = uname; 14 this.upwd = upwd; 15 } 16 public Login() { 17 18 } 19 private int id; 20 public int getId() { 21 return id; 22 } 23 public void setId(int id) { 24 this.id = id; 25 } 26 public String getUname() { 27 return uname; 28 } 29 public void setUname(String uname) { 30 this.uname = uname; 31 } 32 public String getUpwd() { 33 return upwd; 34 } 35 public void setUpwd(String upwd) { 36 this.upwd = upwd; 37 } 38 39 40 41 42 43 44 }
构造方法:
1 package LoginDao; 2 3 public class Login { 4 private String uname; 5 private String upwd; 6 7 public Login(String uname, String upwd, int id) { 8 this.uname = uname; 9 this.upwd = upwd; 10 this.id = id; 11 } 12 public Login(String uname, String upwd) { 13 this.uname = uname; 14 this.upwd = upwd; 15 } 16 public Login() { 17 18 } 19 private int id; 20 public int getId() { 21 return id; 22 } 23 public void setId(int id) { 24 this.id = id; 25 } 26 public String getUname() { 27 return uname; 28 } 29 public void setUname(String uname) { 30 this.uname = uname; 31 } 32 public String getUpwd() { 33 return upwd; 34 } 35 public void setUpwd(String upwd) { 36 this.upwd = upwd; 37 } 38 39 }
遇到的问题:
索引超出范围:
问题位置:模糊查询:select count(*) from login where uname = ? and upwd = ?
原因:“=”与“?”之间有空格,去掉中间的空格即可