前言
本文介绍了用户信息登录、增删改查等操作,也包含了相对复杂的删除选中功能、分页功能和复杂条件查询功能。
一、所用jar包
二、整体框架
三、用户登录
3.1登录展示
3.2基本思路
1.获取输入的验证码,与生成的验证码比较,不一致则报出验证码错误,跳转到login.jsp页面,一致则进行下一步。
2.获取输入的用户名与密码,与数据库中的数据比较,有则跳转到list.jsp页面,无则报出用户名或密码错误,跳转到login.jsp页面。
注意:每生成一个验证码都要进行属性的删除,作用是避免验证码重复。
3.3LoginServlet代码
package web.servlet;
import domain.User;
import org.apache.commons.beanutils.BeanUtils;
import service.Impl.UserServiceImpl;
import service.UserService;
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.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码
request.setCharacterEncoding("utf-8");
//获取验证码
String verifycode = request.getParameter("verifycode");
HttpSession session = request.getSession();
String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
//避免验证码重复
session.removeAttribute("CHECKCODE_SERVER");
//判断验证码是否一致
if (!checkcode_server.equalsIgnoreCase(verifycode)){
//验证码错误
request.setAttribute("login_msg","验证码错误!");
request.getRequestDispatcher("/login.jsp").forward(request,response);
return;
}
Map<String, String[]> map = request.getParameterMap();
User user=new User();
try {
BeanUtils.populate(user,map);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
UserService service=new UserServiceImpl();
User login_user=service.login(user);
if (login_user==null){
//用户名或密码错误
request.setAttribute("login_msg","用户名或密码错误!");
request.getRequestDispatcher("/login.jsp").forward(request,response);
}else {
//登录成功,返回index.jsp
request.getSession().setAttribute("user",user);
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
四、用户列表展示
4.1 列表模糊查询+分页展示
4.2PageBean对象
作用:用于存储数据。
4.3基本思路
1.在FindUserByPageServlet中获取当前页码(currentPage)、每页条数(rows)参数和所有参数集合(map)。
2.调用UserServiceImpl实现类中的findUserByPage(currentPage,rows,map)实现数据的分页
3.在findUserByPage(currentPage,rows,map)方法中调用UserDaoImpl中的findUserByPage(currentPage,rows,map)来访问数据库中的数据。
4.转发到list.jsp页面
4.4FindUserByPageServlet代码
package web.servlet;
import domain.PageBean;
import domain.User;
import service.Impl.UserServiceImpl;
import service.UserService;
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 java.io.IOException;
import java.util.Map;
@WebServlet("/findUserByPageServlet")
public class FindUserByPageServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {