- 前言
- 一、所用jar包
- 二、整体框架
- 三、用户登录
- 3.1登录展示
- 3.2基本思路
- 3.3LoginServlet代码
- 四、用户列表展示
- 4.1 列表模糊查询+分页展示
- 4.2PageBean对象
- 4.3基本思路
- 4.4FindUserByPageServlet代码
- 4.5UserServiceImpl类中的分页方法
- 4.6 sql查询
- 4.7 分页相关的 web界面
- 五、添加操作
- 5.1 页面展示
- 5.2基本思路
- 5.3AddUserServlet代码
- 六、修改操作
- 6.1页面展示
- 6.2 基本思路
- 6.3UpdateUserServlet代码
- 七、删除操作
- 7.1 通过删除按钮进行删除
- 7.2 通过删除选中按钮删除
- 7.3 相应的web页面
- 7.4 Javascript代码
前言
本文介绍了用户信息登录、增删改查等操作,也包含了相对复杂的删除选中功能、分页功能和复杂条件查询功能。
一、所用jar包
二、整体框架
三、用户登录 3.1登录展示 3.2基本思路
1.获取输入的验证码,与生成的验证码比较,不一致则报出验证码错误,跳转到login.jsp页面,一致则进行下一步。
2.获取输入的用户名与密码,与数据库中的数据比较,有则跳转到list.jsp页面,无则报出用户名或密码错误,跳转到login.jsp页面。
注意:每生成一个验证码都要进行属性的删除,作用是避免验证码重复。
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 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对象
作用:用于存储数据。
1.在FindUserByPageServlet中获取当前页码(currentPage)、每页条数(rows)参数和所有参数集合(map)。
2.调用UserServiceImpl实现类中的findUserByPage(currentPage,rows,map)实现数据的分页
3.在findUserByPage(currentPage,rows,map)方法中调用UserDaoImpl中的findUserByPage(currentPage,rows,map)来访问数据库中的数据。
4.转发到list.jsp页面
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 {
//获取参数
String currentPage = request.getParameter("currentPage");
String rows = request.getParameter("rows");
if (currentPage==null||"".equals(currentPage)){
currentPage="1";
}
if (rows==null||"".equals(rows)){
rows="5";
}
Map map = request.getParameterMap();
//调用函数
UserService service=new UserServiceImpl();
PageBean pb=service.findUserByPage(currentPage,rows,map);
request.setAttribute("pb",pb);
request.setAttribute("condition",map);
System.out.println(pb);
request.getRequestDispatcher("/list.jsp").forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
4.5UserServiceImpl类中的分页方法
@Override
public PageBean findUserByPage(String _currentPage, String _rows, Map map) {
int currentPage = Integer.parseInt(_currentPage);
int rows = Integer.parseInt(_rows);
PageBean pb=new PageBean();
pb.setCurrentPage(currentPage);
pb.setRows(rows);
//获取总条数
int totalCount=dao.findCount(map);
pb.setTotalCount(totalCount);
//获取当前总页码
int totalPage=(totalCount%rows==0)?totalCount/rows:(totalCount/rows+1);
pb.setTotalPage(totalPage);
//获取数据
int start=(currentPage-1)*rows;
List list=dao.findUserByPage(start,rows,map);
pb.setList(list);
return pb;
}
4.6 sql查询
@Override
public List findUserByPage(int start, int rows, Map map) {
String sql="select * from user where 1=1";
StringBuilder sb=new StringBuilder(sql);
Set keySet = map.keySet();
List
4.7 分页相关的 web界面
五、添加操作 5.1 页面展示
在list.jsp界面中点击添加联系人按钮,进行添加操作
1.获取所有参数,封装到User中
2.调用UserServiceImpl中的addUser(User user)方法进行简单sql查询即可
3.跳转到findUserByPageServlet界面
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 java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/addUserServlet")
public class AddUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码
request.setCharacterEncoding("utf-8");
//获取参数集合
Map 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();
service.addUser(user);
response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
六、修改操作 6.1页面展示
首先要进行数据回显,点击修改后要看到此人的相关数据。这里需要在表单中设置一个隐藏数据框来存储对应的id。然后通过id查询,将User对象转发到update.jsp,通过对应的value属性显示出来即可。
1.获取所以参数,封装到User对象中
2.调用UserServiceImpl中的updateUser(User user)方法进行简单sql修改即可
3.跳转到findUserByPageServlet界面
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 java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/updateUserServlet")
public class UpdateUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码
request.setCharacterEncoding("utf-8");
//获取参数
Map 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();
service.updateUser(user);
response.sendRedirect(request.getContextPath()+"/findUserByPageServlet");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
七、删除操作 7.1 通过删除按钮进行删除
基本思路:获取对应的id,调用UserServiceImpl中的deleteUser(int id)方法进行简单sql删除即可
7.2 通过删除选中按钮删除基本思路:通过复选框来获取对应的id集合uids,调用UserServiceImpl中的deleteUser(String[] uids)方法,遍历所有的id,然后再调用deleteUser(int id)删除即可
7.3 相应的web页面
function deleteUser(id) {
if (/confirm/i("您确定要删除吗?")){
location.href="${pageContext.request.contextPath}/delUserServlet?id="+id;
}
}
window.onload=function () {
document.getElementById("del").onclick=function () {
var uids = document.getElementsByName("uid");
var flag=false;
var count=0;
for (var i = 0; i 


