先来说一下思路:
- 实现jsp,form表单提交时,先做非空校验,发送post请求
- servlet获取请求,获取表单参数,做非空校验
- 调用model模型处理, 连接数据库,做select操作,用PreraredStatement预编译,把结果返回给servlet
- servlet返回响应
- 跳转页面显示结果
注意:一定得是post请求会防止用户信息泄露,get会在地址栏显示信息
-
//前端login.jsp页面 <html> <head> <title>Title</title> <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script> </head> <body> <form method="post" action="login" id="loginform"> 用户名:<input type="text" name="username"><span id="un_msg"></span><br> 密码:<input type="text" name="password"><span id="pw_msg"></span><br> <input type="button" id="btn2" value="登录"><span id="msg"></span> <script> $("#btn2").click(function(){ var username=$("input[name='username']").val(); console.log(username); var password=$("input[name='password']").val(); console.log(password); //检验是否成功,页面再判断一下,如果为空的话就不在向服务器发送请求,目的减少向服务器发送请求。 前端后端都要写判断 var checked=false; if(username==""){ checked=false; $("#un_msg").html("请输入用户名!"); }else{ checked=true; $("#un_msg").html(""); } if(password==""){ checked=false; $("#pw_msg").html("请输入密码!"); }else{ checked=true; $("#pw_msg").html(""); } if(checked){ $("#loginform").submit(); } }) </script> </form> </body> </html>
Servlet获取前端页面参数并且调用Model,把数据库的结果以User对象的形式返回给Servlet,并且跳转页面
LoginServlet:
package com.zrgj;
import com.blog.util.DBUtil;
import com.blog.util.Key;
import com.model.LoginModel;
import com.pojo.User;
import javax.servlet.ServletConfig;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private String charset=null;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session=req.getSession();//获取session对象
String username = req.getParameter("username");
String password = req.getParameter("password");
if (username != null && !"".equals(username)) {
//表示正确
} else {
req.setAttribute("msg", "用户名不能为空,请您输入用户名");
req.getRequestDispatcher("/reg_result.jsp").forward(req, resp);
}
if (password != null && !"".equals(password)) {
//表示正确
} else {
req.setAttribute("msg", "密码不能为空,请您输入密码");
req.getRequestDispatcher("/reg_result.jsp").forward(req, resp);
}
User user=null;
LoginModel lm=new LoginModel();
List list=null;
try {
user = lm.Loginmodel(username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
if(user !=null ){
session.setAttribute(Key.SISSION_USER,user);
req.getRequestDispatcher("/mgr/article.jsp").forward(req, resp);
}else{
req.setAttribute("msg", "用户名或密码输入错误,请重新输入");
req.getRequestDispatcher("/reg_result.jsp").forward(req, resp);
}
}
}
连接数据库,做查询操作
LoginModel:
package com.model;
import com.blog.util.DBUtil;
import com.pojo.User;
import java.sql.SQLException;
import java.util.List;
public class LoginModel {
public User Loginmodel(String username,String password)throws ClassNotFoundException,SQLException {
DBUtil dbUtil = new DBUtil();
User user=null;
try {
String url = "jdbc:mysql://localhost:3306/blog?useSSL=false&serverTimezone=Asia/Shanghai";
dbUtil.connect("com.mysql.cj.jdbc.Driver", url, "root", "root");
String sql = "select id, username,password from t_user where username=? and password=?";
List list = dbUtil.query(sql, username, password);
if(list!=null && list.size()>0){
user=new User();
Object[] arr=(Object[])list.get(0);
String id=(String)arr[0];
String usernameDB=(String)arr[1];
String passwordDB=(String)arr[2];
user.setId(id);
user.setUsername(usernameDB);
user.setPassword(passwordDB);
}
} finally {
if(dbUtil!=null){
try{
dbUtil.close();
}catch (SQLException throwables){
throwables.printStackTrace();
}
}
}
return user;
}
}
通过getter和setter方法创建User对象
User:
package com.pojo;
public class User {
private String id;
private String username;
private String password;
public String getId() {
return id;
}
public void setId(String 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;
}
}