使用javaweb进行用户管理系统的增删改查,分页和条件查询

如有转载请标注来源!!!谢谢配合
源码已经上传,可以自行下载
https://download.csdn.net/download/weixin_44476520/13087005
主要实现增删改查,分为customer表和user表,customer表主要是客户实现增删改查,分页,和条件查询,user表主要是实现用户的登陆和注册功能
dao层的接口:

(customerDao)dao层接口的代码:
package cn.cyp.dao;import cn.cyp.bean.Customer;
import cn.cyp.bean.pageBean;import java.util.List;
import java.util.Map;/*** @Author:cyp* @date:2019/8/14 19:54* @Desc:*/
public interface customerDao {//查询所有用户List<Customer> selectAllCustomer();//进行添加判断邮箱Customer ckEmailName(String email);//增加用户Boolean addCustomer(Customer customer);// 删除用户void deleteCustomer(int id);//修改//修改数据Customer updateCustomer(int id);//编辑数据Boolean editeCustomer(Customer customer);//显示查询的总共有多少条int findTotalCounts(Map<String, String[]> map);//查询每页显示的数据是什么List<Customer> findTotalCustomers(pageBean pageBean, Map<String, String[]> map);}
(userDao)dao层接口:
package cn.cyp.dao;import cn.cyp.bean.User;/*** @Author:cyp* @date:2019/8/16 8:20* @Desc:*/
public interface userDao {User userLogin(User user);Boolean registerUser(User user);User registerOk(String username);
}

dao层接口的实现:

(customerDaoImpl)dao层接口实现的代码:
package cn.cyp.dao.impl;import cn.cyp.bean.Customer;
import cn.cyp.bean.pageBean;
import cn.cyp.dao.customerDao;
import cn.cyp.util.jdbcUtil;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;/*** @Author:cyp* @date:2019/8/14 19:55* @Desc:dao层,发送sql语句到db中*/
public class customerDaoImpl implements customerDao {//jdbc模板操作JdbcTemplate template = new JdbcTemplate(jdbcUtil.getDataSource());//查询所有人的信息@Overridepublic List<Customer> selectAllCustomer() {String sql = "select  * from customer";List<Customer> list = template.query(sql, new BeanPropertyRowMapper<Customer>(Customer.class));return list;}//检查邮箱@Overridepublic Customer ckEmailName(String email) {String sql = "select * from customer where email=?";try {return this.template.queryForObject(sql, new BeanPropertyRowMapper<Customer>(Customer.class), email);} catch (DataAccessException e) {e.printStackTrace();}return null;}//添加客户的信息@Overridepublic Boolean addCustomer(Customer customer) {//定义sql语句String sql = "insert into customer(name,sex,age,addr,qq,email) values(?,?,?,?,?,?) ";//执行sqlint add = template.update(sql, customer.getName(), customer.getSex(),customer.getAge(), customer.getAddr(), customer.getQq(), customer.getEmail());if (add > 0) {return true;}return false;}//删除用户信息@Overridepublic void deleteCustomer(int id) {String sql = "delete from customer where id=?";template.update(sql, id);}//查询数据库是否有需要修改的数据@Overridepublic Customer updateCustomer(int id) {String sql = "select * from customer where id=id";List<Customer> customers = template.query(sql, new BeanPropertyRowMapper<Customer>(Customer.class));for (Customer customer1 : customers) {if (customer1.getId() == id) {return customer1;}}return null;}@Overridepublic Boolean editeCustomer(Customer customer) {String sql = "update customer set name=?,sex=?,age=?,addr=?,qq=?,email=? where id=?";int edit = template.update(sql, customer.getName(), customer.getSex(),customer.getAge(), customer.getAddr(), customer.getQq(), customer.getEmail(), customer.getId());if (edit > 0) {return true;}return false;}/***    分页功能的实现,查询总共有多少条数*/@Overridepublic int findTotalCounts(Map<String, String[]> map) {// String sql = "select count(1) from customer";// try {//     return template.queryForObject(sql, Integer.class);// } catch (Exception e) {//     e.printStackTrace();//     throw new RuntimeException("sql查询条数语句出现异常");// }StringBuilder sql =new StringBuilder("select count(1) from customer where 1=1");//设置可变参数List<Object> list=new ArrayList<>();Set<String> keySet = map.keySet();for (String key:keySet){//排除pageNumif ("pageNum".equals(key)){//跳出本次循环continue;}String value=map.get(key)[0];if (value!=null&&!value.equals("")){sql.append(" and " +  key + " like ?");list.add("%" +value+ "%");}}return template.queryForObject(sql.toString(), Integer.class,list.toArray());}//查询每页显示的数目@Overridepublic List<Customer> findTotalCustomers(pageBean pageBean, Map<String, String[]> map) {StringBuilder sql =new StringBuilder("select * from customer where 1=1");//将参数放在list集合中List<Object> list = new ArrayList<>();//将map1集合中的内容循环遍历进行判断Set<String> key = map.keySet();for(String key1:key){//排除pageNumif ("pageNum".equals(key1)){//跳出本次循环continue;}String value = map.get(key1)[0];if (key1!= null && !key1.equals("")){sql.append(" and " +  key1 + " like ?");list.add("%" +value+ "%");}}//进行拼接分页sql.append(" limit ?,?");list.add(pageBean.getStartIndex());list.add(pageBean.getPageSize());try {//list.toArray转化成return this.template.query(sql.toString(), new BeanPropertyRowMapper<Customer>(Customer.class), list.toArray());} catch (DataAccessException e) {e.printStackTrace();throw new RuntimeException("sql查询分页出现异常");}}
}
(userDaoImpl)dao层接口实现的代码:
package cn.cyp.dao.impl;import cn.cyp.bean.User;
import cn.cyp.dao.userDao;
import cn.cyp.util.jdbcUtil;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;import java.util.Date;/*** @Author:cyp* @date:2019/8/16 8:19* @Desc:*/
public class userDaoImpl implements userDao {//jdbc模板操作JdbcTemplate template = new JdbcTemplate(jdbcUtil.getDataSource());//查询登陆的用户是否是数据库中的@Overridepublic User userLogin(User user) {String sql = "select * from user where username=? and pwd=?";try {return template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), user.getUsername(), user.getPwd());} catch (DataAccessException e) {e.printStackTrace();}//使用list进行获取// String username = user.getUsername();// String pwd = user.getPwd();//// String sql="select * from admin ";// List<User> list = template.query(sql, new BeanPropertyRowMapper<User>(User.class));// for(User user1:list){//     if(user1.getUsername().equals(username.trim()) &  user1.getPwd().equals(pwd.trim())){//         return user;//     }// }return null;}//添加用户,进行判断该用户是否已经存在,使名字唯一@Overridepublic User registerOk(String username) {String sql = "select * from user where username=?";try {return this.template.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), username);} catch (DataAccessException e) {e.printStackTrace();}return null;}@Overridepublic Boolean registerUser(User user) {Date date=new Date();String sql="insert into user(username,pwd,nickname,createtime,updatetime) values(?,?,?,?,?)";int update = template.update(sql, user.getUsername(), user.getPwd(),user.getNickname(),date,date);if (update>0){return true;}return null;}
}

service层的接口:

(customerService)service层接口的代码:
package cn.cyp.service;import cn.cyp.bean.Customer;
import cn.cyp.bean.pageBean;import java.util.List;
import java.util.Map;/*** @Author:cyp* @date:2019/8/14 19:12* @Desc:*/
public interface customerService {//查询所有用户List<Customer> selectAllCustomer();// 增加用户Boolean addCustomer(Customer customer);// 删除用户void deleteCustomer(int id);//删除选中的用户void deleteCheckedCustomer(String[] items);//修改用户//判断用户id是不是选择的idCustomer updateCustomer(int id);//进行编辑用户的信息boolean editCustomer(Customer customer);//关于分页的方法pageBean findCustomerPage(pageBean pageBean, Map<String, String[]> map);
}
(userService)service层接口的代码:
package cn.cyp.service;import cn.cyp.bean.User;/*** @Author:cyp* @date:2019/8/15 22:05* @Desc:*/
public interface userService {User userLogin(User user);Boolean registerUser(User user);
}

service层的接口的实现:

(userServiceImpl)service层接口实现的代码:
package cn.cyp.service.impl;
import cn.cyp.bean.User;
import cn.cyp.dao.userDao;
import cn.cyp.dao.impl.userDaoImpl;
import cn.cyp.service.userService;
import cn.cyp.util.MD5Utils;/*** @Author:cyp* @date:2019/8/15 22:05* @Desc:*/
public class userServiceImpl implements userService {@Overridepublic User userLogin(User user){//创建dao对象,调用dao里面的方法,进行判断userDao userDao =new userDaoImpl();return  userDao.userLogin(user);}//判断用户是否存在@Overridepublic Boolean registerUser(User user) {//进行md5加密user.setPwd(MD5Utils.getPWD(user.getPwd()));//创建dao对象,调用dao里面的方法,进行判断userDao userDao =new userDaoImpl();//判断用户名是否为空User u=userDao.registerOk(user.getUsername());if (u==null){userDao.registerUser(user);return true;}return  false;}
}
(addCustomerServlet)添加客户功能的实现,web层的代码:
package cn.cyp.web;import cn.cyp.bean.Customer;
import cn.cyp.service.customerService;
import cn.cyp.service.impl.customerServiceImpl;
import org.apache.commons.beanutils.BeanUtils;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;/*** @Author:cyp* @date:2019/8/16 20:38* @Desc:添加用户信息的页面*/
@WebServlet(urlPatterns = "/addCustomerServlet")
public class addCustomerServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//通过map获取页面上输入框的所有内容response.setContentType("text/html;charset=utf-8");//设置post请求字符集request.setCharacterEncoding("utf-8");Map<String, String[]> map = request.getParameterMap();Customer customer = new Customer();//进行封装实体类try {BeanUtils.populate(customer, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}customerService addCustomerService = new customerServiceImpl();Boolean customer1 = addCustomerService.addCustomer(customer);if (customer1 == true) {response.getWriter().print("添加成功");request.getRequestDispatcher("/pageBeanServlet").forward(request, response);} else {response.getWriter().print("添加失败");request.setAttribute("msg","邮箱已存在");//    当邮箱存在的时候,进行回显到添加界面request.setAttribute("old", customer);request.getRequestDispatcher("addCustomer.jsp").forward(request, response);}}
}

servlet

(deleteCustomerServlet)删除客户功能的实现,web层的代码:
package cn.cyp.web;import cn.cyp.service.customerService;
import cn.cyp.service.impl.customerServiceImpl;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;/*** @Author:cyp* @date:2019/8/17 14:47* @Desc:*/
@WebServlet(urlPatterns = "/deleteCustomerServlet")
public class deleteCustomerServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取前台传来的id值String idstr = request.getParameter("id");int id=Integer.parseInt(idstr);customerService deleteCustomerService = new customerServiceImpl();deleteCustomerService.deleteCustomer(id);//删除成功response.sendRedirect(request.getContextPath()+"/pageBeanServlet");// request.getRequestDispatcher("/selectCustomerServlet").forward(request,response);System.out.println("删除成功");}}
(deleteCheckedCustomerServlet)删除选中客户功能的实现,web层的代码:
package cn.cyp.web;import cn.cyp.service.customerService;
import cn.cyp.service.impl.customerServiceImpl;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;/*** @Author:cyp* @date:2019/8/20 18:08* @Desc:*/
@WebServlet(urlPatterns = "/deleteCheckedCustomerServlet")
public class deleteCheckedCustomerServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String[] items = request.getParameterValues("items");customerService deleteCustomerService = new customerServiceImpl();deleteCustomerService.deleteCheckedCustomer(items);response.sendRedirect(request.getContextPath()+"/pageBeanServlet");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}
(pageBeanServlet)分页和条件查询功能的实现  ,web层的代码:
package cn.cyp.web;
import cn.cyp.bean.pageBean;
import cn.cyp.service.customerService;
import cn.cyp.service.impl.customerServiceImpl;
import org.apache.commons.beanutils.BeanUtils;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;/*** @Author:cyp* @date:2019/8/22 9:34* @Desc:*/
@WebServlet(urlPatterns = "/pageBeanServlet")
public class pageBeanServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//解决乱码问题request.setCharacterEncoding("utf-8");response.setContentType("text/html;  charset=utf-8");//条件查询,获取前台传过来的pageNum,name,sex,ageMap<String, String[]> map=request.getParameterMap();//实例化一个pageBean变量pageBean pageBean=new pageBean();//    使用BeanUtil封装实体类try {BeanUtils.populate(pageBean,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}//    注入业务层customerService customerService=new customerServiceImpl();pageBean pageBean1=customerService.findCustomerPage(pageBean,map);//将pageBean的值传到浏览器request.setAttribute("pageBean",pageBean1);//实现输入框的值回显的功能request.setAttribute("map",map);request.getRequestDispatcher("/list.jsp").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}
(selectCustomerServlet)查询所有用户功能的实现 ,web层的代码:
package cn.cyp.web;import cn.cyp.bean.Customer;
import cn.cyp.service.customerService;
import cn.cyp.service.impl.customerServiceImpl;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.List;/*** @Author:cyp* @date:2019/8/14 19:17* @Desc:*/
@WebServlet(urlPatterns= "/selectCustomerServlet")
public class selectCustomerServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {customerService selectCustomerService =new customerServiceImpl();//使用list集合来接收从service传过来的值List<Customer> list= selectCustomerService.selectAllCustomer();request.setAttribute("list",list);request.getRequestDispatcher("/list.jsp").forward(request,response);}
}
(updateCustomerServlet)修改用户功能的实现   ,web层的代码:
package cn.cyp.web;import cn.cyp.bean.Customer;
import cn.cyp.service.customerService;
import cn.cyp.service.impl.customerServiceImpl;
import org.apache.commons.beanutils.BeanUtils;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;/*** @Author:cyp* @date:2019/8/16 19:45* @Desc:修改操作*/
@WebServlet(urlPatterns= "/updateCustomerServlet")
public class updateCustomerServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//通过map获取页面上输入框的所有内容response.setContentType("text/html;charset=utf-8");//设置post请求字符集request.setCharacterEncoding("utf-8");Map<String, String[]> map = request.getParameterMap();Customer customer = new Customer();//进行封装实体类try {BeanUtils.populate(customer, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}customerService updateCustomerService = new customerServiceImpl();boolean customer1 = updateCustomerService.editCustomer(customer);if (customer1 == true) {response.getWriter().print("添加成功");request.getRequestDispatcher("/pageBeanServlet").forward(request, response);} else {response.getWriter().print("添加失败");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String idstr = request.getParameter("id");int id=Integer.parseInt(idstr);customerService updateCustomerService = new customerServiceImpl();Customer customer1 = updateCustomerService.updateCustomer(id);//判断是否是需要的idif (customer1!=null) {request.setAttribute("customer",customer1);request.getRequestDispatcher("/updateCustomer.jsp").forward(request,response);}System.out.println("查询不到");}}
(userLoginServlet)user登陆功能的实现
package cn.cyp.web;import cn.cyp.bean.User;
import cn.cyp.service.impl.userServiceImpl;
import cn.cyp.service.userService;
import cn.cyp.util.MD5Utils;
import org.apache.commons.beanutils.BeanUtils;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;/*** @Author:cyp* @date:2019/8/15 21:06* @Desc: 查询所有的人员的信息的dao层*/
@WebServlet(urlPatterns = "/userLoginTestServlet")
public class userLoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");//获取用户输入的验证码String img = request.getParameter("img");//获取服务器验证码的内容,sessionHttpSession session = request.getSession();//获取登陆框的内容String imgsession =(String) session.getAttribute("CHECKCODE_SERVER");//判断不匹配的情况if(!img.equalsIgnoreCase(imgsession)){request.setAttribute("imgmsg","验证码错误");request.getRequestDispatcher("/login.jsp").forward(request,response);return;}//再进行获取从前台输入的内容Map<String, String[]> map = request.getParameterMap();User user =new User();//将从登陆框中获取的内容通过传参传到后面,进行判断try {//进行MD5解码user.setUsername(MD5Utils.getPWD(user.getPwd()));BeanUtils.populate(user,map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}userService userLoginService =new userServiceImpl();User adminService1 = userLoginService.userLogin(user);if(adminService1!=null){//表示成功之后将用户名记住// Cookie cookie=new Cookie("name",username);// //设置生存时间// cookie.setMaxAge(60*60);// //响应给浏览器// response.addCookie(cookie);response.sendRedirect(request.getContextPath()+"/pageBeanServlet");//创建ssession对象HttpSession session1 = request.getSession();session1.setAttribute("username",user.getUsername());response.getWriter().print("登陆成功");}else{request.getRequestDispatcher("/login.jsp").forward(request,response);response.getWriter().print("登录失败");}}
}
(userOutLoginServlet)user注销功能的的实现,web层的代码:
package cn.cyp.web;import javax.servlet.ServletException;
import javax.servlet.SessionCookieConfig;
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;/*** @Author:cyp* @date:2019/8/16 15:17* @Desc:*/
@WebServlet(urlPatterns= "/userOutLoginServlet")
public class userOutLoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{//获取session对象HttpSession session = request.getSession();//手动去销毁session对象session.invalidate();request.getRequestDispatcher("/login.jsp").forward(request,response);}}
(userRegisterServlet)user注册功能的的实现,web层的代码:
package cn.cyp.web;import cn.cyp.bean.User;
import cn.cyp.dao.impl.userDaoImpl;
import cn.cyp.service.impl.userServiceImpl;
import cn.cyp.service.userService;
import org.apache.commons.beanutils.BeanUtils;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;/*** @Author:cyp* @date:2019/8/19 15:12* @Desc:*/
@WebServlet(urlPatterns = "/userRegisterServlet")
public class userRegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String img = request.getParameter("img");//创建session对象HttpSession session = request.getSession();String code = (String)session.getAttribute("code");//进行判断输入框的内容和验证码是否一致if(!code.equalsIgnoreCase(img)) {request.setAttribute("imgmsg","验证码错误");request.getRequestDispatcher("/register.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();}//进行判断用户名和密码不能为空if(user.getUsername()==null||user.getPwd()==null||user.getUsername()==""||user.getPwd()==""){request.getRequestDispatcher("/register.jsp").forward(request,response);}//进行判断该用户是否存在userService userService = new userServiceImpl();Boolean flag = userService.registerUser(user);if (flag) {System.out.println("添加成功");request.getRequestDispatcher("login.jsp").forward(request,response);}else {System.out.println("添加失败");}}
}

jsp部分的代码

(addCustomer.jsp)添加用户的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title><link href="css/bootstrap.min.css" rel="stylesheet"><script src="js/jquery/1.11.3/jquery.min.js"></script><script src="js/bootstrap.min.js"></script><script>function check() {//验证年龄var  age = document.getElementById("ageid");if(isNaN(age.value)){document.getElementById("spanage").innerHTML="年龄只能是数字";return false;}if(age.value.length==0){document.getElementById("spanage").innerHTML="年龄不能为空";return false;}//验证邮箱var emailid = document.getElementById("emailid");//不区分邮箱大小写var regExp = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/if (!regExp.test(emailid.value)) {document.getElementById("spanemail").innerHTML="请输入正确的邮箱";return false;}return true;}</script>
</head>
<body>
<h2 align="center">请输入添加用户信息</h2>
<div style="text-align:center;padding-left: 300px" class="container table-responsive"><form action="${pageContext.request.contextPath}/addCustomerServlet" method="post" onsubmit="return check()"><table  class="table table-bordered table-hover" style="width: 600px;"><tr><td>姓名:</td><td><input type="text" name="name" id="nameid" value="${old.name}" ></td></tr><tr><td>性别:</td><td><input type="radio" checked="checked" name="sex" value="女"<c:if test="${old.sex=='女'}">checked</c:if>/>女<input type="radio" name="sex" value="男"<c:if test="${old.sex=='男'}">checked</c:if>/>男</td></tr><tr><td>年龄:</td><td><input type="text" name="age" id="ageid" value="${old.age}"><span id="spanage" style="color: red"></span></td></tr><tr><td>籍贯:</td><td><select name="addr" id="addrid"><option value="河南省" selected="selected" <c:if test="${old.addr=='河南省'}">selected</c:if>>河南省</option><option value="郑州" <c:if test="${old.addr=='郑州'}">selected</c:if>>郑州</option><option value="开封" <c:if test="${old.addr=='开封'}">selected</c:if>>开封</option ><option value="商丘" <c:if test="${old.addr=='商丘'}">selected</c:if>>商丘</option></select></td></tr><tr><td>qq:</td><td><input type="text" name="qq" id="qqid" value="${old.qq}"></td></tr><tr><td>邮箱:</td><td><input type="text" name="email" id="emailid" value="${old.email}"><span id="spanemail"style="color: red">${msg}</span></td></tr><tr><td colspan="2"><input type="submit" class="btn btn-primary" value="提交"><input type="reset" class="btn btn-primary" value="重置"><a  class="btn btn-primary" href="${pageContext.request.contextPath}/pageBeanServlet">返回</a></td></tr></table></form>
</div>
</body>
</html>

**(list.jsp)显示首页面**<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 101 Template</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery/1.11.3/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script>//获取全选/全不选的idfunction checkall() {var checkinputid = document.getElementById("checkinputid");//   获取所有名字为id的对象var items = document.getElementsByName("items");//    进行循环遍历for (var i = 0; i < items.length; i++) {//使得全选,全不选的内容为选中,选不中items[i].checked = checkinputid.checked;}}function isdelete() {//是否删除所选的内容var b = window.confirm("您确定删除吗?");if (b) {alert("确定");} else {alert("取消")}}//    进行判断有没有选择复选框window.onload = function () {document.getElementById("selectdelete").onclick = function () {//    取得所有选中的checkboxvar items = document.getElementsByName("items");var str = "";//遍历checkboxfor (var i = 0; i < items.length; i++) {if (items[i].checked == true) {str += items[i].value + ",";}}if (str == "") {alert("请先选择复选框")} else {var b = window.confirm("确定要删除编号:" + str);if (b) {document.getElementById("formid").submit();}}}}//    分页的方法function go(pageNum) {location.href = "${pageContext.request.contextPath}/pageBeanServlet?name=${map.name[0]}&age=${map.age[0]}&sex=${map.sex[0]}&pageNum=" + pageNum;}
</script>
<head><title>Title</title>
</head>
<body>
<%--<form action="${pageContext.request.contextPath}/deleteCheckedCustomerServlet" method="post">--%>
<div class="row"><div class="col-lg-1"></div><div class="col-lg-6">欢迎<font size="5px" color="red">${sessionScope.username}</font>登陆:</div>
</div><div class="row"><div class="col-lg-1"></div><div class="col-lg-6"><a href="${pageContext.request.contextPath}/userOutLoginServlet"><font size="3px" color="red">注销</font></a></div>
</div>
<h1 style="text-align: center;color: red">用户管理系统</h1>
<div class=" container" style="margin-top: 60px;"><div class="container" style="margin-top: 20px;margin-bottom: 10px"><%--模糊查询--%><div class="row"><form action="${pageContext.request.contextPath}/pageBeanServlet" method="post"><div class="col-lg-2"><input type="text" class="form-control" name="name" value="${map.name[0]}" placeholder="按姓名查"></div><div class="col-lg-2"><input type="text" class="form-control" name="age" value="${map.age[0]}" placeholder="按年龄查"></div><div class="col-lg-2"><input type="text" class="form-control" name="sex" value="${map.sex[0]}" placeholder="按性别查"></div><div class="col-lg-3"><%--onclick='window.location.href<c:if test="${pageBean.totalCounts==0}">="index.jsp"</c:if>'--%><input type="submit" class="btn btn-warning btn-md " value="查询" ></div></form><div class="col-lg-3" style="padding-right: 0px"><a class="btn btn-primary" href="addCustomer.jsp">添加客户</a><a class="btn btn-primary" href="javaScript:void(0);" id="selectdelete">删除客户</a><%--<button class="btn btn-primary" onclick="javascript:window.location.reload();" >刷新</button>--%><a class="btn btn-primary" href="${pageContext.request.contextPath}/pageBeanServlet">刷新</a><%--<input type="submit" class="btn btn-primary" value="删除选中" onclick="isdelete()">--%></div></div></div><form id="formid" action="${pageContext.request.contextPath}/deleteCheckedCustomerServlet" method="post"><table class="table table-bordered table-hover" <c:if test="${pageBean.totalCounts==0}">hidden</c:if> ><tr class="success"><th><input type="checkbox" id="checkinputid" onclick="checkall()">全选/全不选</th><th>编号</th><th>姓名</th><th>性别</th><th>年龄</th><th>籍贯</th><th>qq</th><th>邮箱</th><th>操作</th></tr><c:forEach items="${requestScope.pageBean.list}" var="list"><tr><td><input type="checkbox" name="items" id="items" value="${list.id}"></td><td>${list.id}</td><td>${list.name}</td><td>${list.sex}</td><td>${list.age}</td><td>${list.addr}</td><td>${list.qq}</td><td>${list.email}</td><td><a class="btn btn-default btn-lg"href="${pageContext.request.contextPath}/updateCustomerServlet?id=${list.id}">修改</a>&nbsp;<a class="btn btn-default btn-lg"href="${pageContext.request.contextPath}/deleteCustomerServlet?id=${list.id}">删除</a></td></tr></c:forEach></table></form><%--分页--%><%--如果在数据库没有搜到相关信息,提示一句话"未查到相关信息"--%><div <c:if test="${pageBean.totalCounts!=0}">hidden</c:if> ><span style="color: red;font-size: 40px;text-align: center">未查询到内容</span></div><div><nav class="nav1"><ul class="pagination pagination-lg"><li><span>当前页${pageBean.pageNum}/${pageBean.totalPages}</span><a <c:if test="${pageBean.totalCounts==0}">hidden</c:if> href="javascript:void(0);" onclick="go(1)">首页</a><a <c:if test="${pageBean.totalCounts==0}">hidden</c:if> href="javascript:void(0);" onclick="go(${pageBean.beforePage})" aria-label="Previous"><span aria-hidden="true">上一页</span></a></li><%--分页栏--%><c:forEach items="${pageBean.pageBar}" var="bar"><c:if test="${pageBean.pageNum==bar}"><%--显示激活状态active--%><li class="active"><a href="">${bar}</a></li></c:if><c:if test="${pageBean.pageNum!=bar}"><li class=""><a href="javascript:void(0)" onclick="go(${bar})">${bar}</a></li></c:if></c:forEach><li><%--判断最大条数是不是0--%><a <c:if test="${pageBean.totalCounts==0}">hidden</c:if> href="javascript:void(0);" onclick="go(${pageBean.nextPage})" aria-label="Next"><span aria-hidden="true">下一页</span><a <c:if test="${pageBean.totalCounts==0}">hidden</c:if> href="javascript:void(0);" onclick="go(${pageBean.totalPages})">尾页</a><span>共${pageBean.totalCounts}条</span></a></li></ul></nav></div>
</div>
</body>
</html>
(login.jsp)登陆界面<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><link href="css/bootstrap.min.css" rel="stylesheet"><script src="js/jquery/1.11.3/jquery.min.js"></script><script src="js/bootstrap.min.js"></script><script>//传到submit中的条件function demo1() {var inputusername = document.getElementById("inputusername");var inputpwd = document.getElementById("inputpwd");if ((inputusername.value=="") || (inputpwd.value=="")){alert("请检查您的用户名和密码");return false;}return true;}function demo() {var img = document.getElementById("_img");//通过拼接字符串的方式,对验证码进行切换img.src="${pageContext.request.contextPath}/checkCodeServlet?"+new Date().getTime();}</script>
</head>
<body background="img/bg3.jpg" style="width: 100%" >
<div class="row" style="padding-top: 50px"><div class="col-lg-5"></div><div class="col-lg-2"><h1>管理员登陆</h1></div>
</div>
<div class="container" style="padding-left: 250px ;padding-top: 50px;"><form class="form-horizontal" action="${pageContext.request.contextPath}/userLoginTestServlet"  method="post"onsubmit="return demo1();"><div class="form-group"><label for="inputusername" class="col-lg-2 control-label">用户名</label><div class="col-lg-4"><input type="text" class="form-control" name="username" id="inputusername" placeholder="请输入用户名"></div></div><div class="form-group"><label for="inputPassword" class="col-lg-2 control-label">密码</label><div class="col-lg-4"><input type="password" class="form-control" name="pwd" id="inputPassword" placeholder="请输入密码"></div><div class="“col-lg-2"><span id="spanid"></span></div></div><div class="form-inline"><label for="checkcode" class="col-lg-2 control-label">验证码</label>&nbsp;<input type="text" class="form-control" name="img" id="checkcode" placeholder="请输入验证码"><img src="${pageContext.request.contextPath}/checkCodeServlet" id="_img"  onclick="demo()">${requestScope.imgmsg}</div><div class="form-group" style="margin-top: 10px;margin-left: 10px"><div class="col-lg-offset-2 col-lg-10"><input type="submit" class="btn btn-primary" value="登陆">没有账号,点击<a class="" href="register.jsp" style="text-decoration: none">注册</a></div></div></form>
</div>
</body>
</html>
(register.jsp)注册界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><link href="css/bootstrap.min.css" rel="stylesheet"><script src="js/jquery/1.11.3/jquery.min.js"></script><script src="js/bootstrap.min.js"></script><script>//检查验证码是否一致function demo200() {var _img = document.getElementById("_img");//通过拼接字符串的方式,对验证码进行切换_img.src = "${pageContext.request.contextPath}/Checkcode?" + new Date().getTime();}<%--清除所有框的历史记录--%>window.onload = function () {var tagName = document.getElementsByTagName("input");for (var i = 0; i < tagName.length; i++) {tagName[i].setAttribute("autocomplete", "off");}}//返回的一个方法的true或者false结果function checkdemo(){<%--检查输入的用户名是否符合要求--%>var username = document.getElementById("inputname");var regUsername=/^[a-zA-Z][a-zA-Z0-9]{3,15}$/;if (!regUsername.test(username.value)) {document.getElementById("strongid").innerHTML ="用户名由英文字母和数字组成的4-16位字符,以字母开头";return false;}//检查密码的格式是否正确/*密码验证*/var inputPassword1 = document.getElementById("inputPassword1");var regpwd=/^[a-zA-Z0-9]{4,10}$/;if(!regpwd.test(inputPassword1.value)){document.getElementById("strongid").innerHTML="密码不能含有非法字符,长度在4-10之间";return false;}//检查两次输入的密码是否一致var inputPassword2 = document.getElementById("inputPassword2");if (inputPassword1.value != inputPassword2.value) {document.getElementById("strongid").innerHTML = "两次输入的密码不一致";return false;}return true;}</script>
</head>
<body background="img/bg3.jpg" style="width: 100%">
<div class="row" style="padding-top: 50px"><div class="col-lg-5"></div><div class="col-lg-2"><h1>管理员注册</h1></div>
</div>
<div class="container" style="padding-left: 250px ;padding-top: 50px;"><form class="form-horizontal" action="${pageContext.request.contextPath}/userRegisterServlet" method="post"onsubmit="return checkdemo()"><div class="form-group"><label for="inputname" class="col-lg-2 control-label">用户名</label><div class="col-lg-4"><input type="text" class="form-control" name="username" id="inputname" placeholder="请输入用户名"></div></div><div class="form-group"><label for="inputNickname" class="col-lg-2 control-label">昵称</label><div class="col-lg-4"><input type="text" class="form-control" name="nickname" id="inputNickname" placeholder="请输入昵称"></div></div><div class="form-group"><label for="inputPassword1" class="col-lg-2 control-label">密码</label><div class="col-lg-4"><input type="password" class="form-control" name="pwd" id="inputPassword1" placeholder="请输入密码"></div><div class="“col-lg-2"><span id="spanid"></span></div></div><div class="form-group"><label for="inputPassword2" class="col-lg-2 control-label">确认密码</label><div class="col-lg-4"><input type="password" class="form-control" id="inputPassword2" placeholder="请再次确认密码"></div></div><div class="form-inline"><label for="checkcode" class="col-lg-2 control-label">验证码</label>&nbsp;<input type="text" class="form-control" name="img" id="checkcode" placeholder="请输入验证码"><img src="${pageContext.request.contextPath}/Checkcode" id="_img" onclick="demo200()"></div><div class="form-group" style="margin-top: 10px;margin-left: 10px"><div class="col-lg-offset-2 col-lg-10"><button type="submit" class="btn btn-primary">注册</button><button type="reset" class="btn btn-primary">重置</button></div></div><div class="container" style="padding-left: 140px"><%--出错信息框--%><div class="alert alert-warning alert-dismissible" role="alert" style="text-align: center;width: 350px;height: 50px"><button type="button" class="close" data-dismiss="alert"><span class="glyphicon glyphicon-remove"></span></button><strong id="strongid">${imgmsg}</strong></div></div></form>
</div>
</body>
</html>
(updateCustomer.jsp)修改用户的界面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>Title</title><link href="css/bootstrap.min.css" rel="stylesheet"><script src="js/jquery/1.11.3/jquery.min.js"></script><script src="js/bootstrap.min.js"></script><script><%--进行判断id,id不可被修改--%></script>
</head>
<body>
<h2 align="center">修改用户数据</h2>
<div style="text-align:center;padding-left: 300px" class="container table-responsive"><form action="${pageContext.request.contextPath}/updateCustomerServlet" method="post"><table  class="table table-bordered table-hover" style="width: 600px;"><tr><td>id:</td><td><input type="text" name="id" value="${customer.id}" id="idid" readonly="readonly" onclick="demo()"><span id="spanid" style="color: red">id不可被修改</span></td></tr><tr><td>姓名:</td><td><input type="text" name="name" value="${customer.name}" id="nameid"></td></tr><tr><td>性别:</td><td><input type="radio" checked="checked" name="sex" value="女"<c:if test="${customer.sex=='女'}">checked</c:if>/>女<input type="radio" name="sex" <c:if test="${customer.sex=='男'}">checked</c:if>  value="男"/>男</td></tr><tr><td>年龄:</td><td><input type="text" name="age" value="${customer.age}" id="ageid"><span id="spanage"style="color: red"></span></td></tr><tr><td>籍贯:</td><td><select name="addr" id="addrid"><option value="河南省" selected="selected" <c:if test="${customer.addr=='河南省'}">selected</c:if>>河南省</option><option value="郑州" <c:if test="${customer.addr=='郑州'}">selected</c:if>>郑州</option><option value="开封" <c:if test="${customer.addr=='开封'}">selected</c:if>>开封</option ><option value="商丘" <c:if test="${customer.addr=='商丘'}">selected</c:if>>商丘</option></select></td></tr><tr><td>qq:</td><td><input type="text" name="qq"  value="${customer.qq}" id="qqid"></td></tr><tr><td>邮箱:</td><td><input type="text" name="email" value="${customer.email}" id="emailid"><span id="spanemail"style="color: red"></span></td></tr><tr><td colspan="2"><input type="submit" class="btn btn-primary" value="提交"><input type="reset"  class="btn btn-primary" value="重置"><a class="btn btn-primary" href="${pageContext.request.contextPath}/pageBeanServlet">返回</a></td></tr></table></form>
</div>
</body>
</html>

工具类的编写
需要验证码工具类(Checkcode),(checkCodeServlet),
jdbc数据库(jdbcUtil),MD5Utils(加密),MyFilter.java(过滤器)
为了解决页面显示乱码问题,配合myFilter.java过滤器进行配置web.xml
配置web.xml如下代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><display-name></display-name><!-- 处理乱码 --><filter><filter-name>MyFilter</filter-name><filter-class>cn.cyp.util.MyFilter</filter-class><init-param><param-name>type</param-name><param-value>text/html</param-value></init-param><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param></filter><filter-mapping><filter-name>MyFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

工具类:jdbc

jdbc连数据库:
package cn.cyp.util;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;public class jdbcUtil {//    工具类的抽取
//    定义成员们变量DataSourceprivate static DataSource ds;static {Properties pro = null;try {//1.加载配置文件pro = new Properties();InputStream is = jdbcUtil.class.getClassLoader().getResourceAsStream("druid.properties");pro.load(is);//2.获取DataSourceds = DruidDataSourceFactory.createDataSource(pro);} catch (Exception e) {e.printStackTrace();}}//获取连接public static Connection getConnection() throws Exception {return ds.getConnection();}//    释放资源public static void close(Connection conn, Statement stmt) {try {if (stmt != null) {stmt.close();stmt = null;//gc垃圾回收机制会优先处理这些对象}} catch (Exception e) {e.printStackTrace();}try {if (conn != null) {conn.close();conn = null;//gc垃圾回收机制会优先处理这些对象}} catch (Exception e) {e.printStackTrace();}}public static void close(Connection conn, Statement stmt, ResultSet rs) {try {if (rs != null) {rs.close();rs = null;//gc垃圾回收机制会优先处理这些对象}} catch (Exception e) {e.printStackTrace();}try {if (stmt != null) {stmt.close();stmt = null;//gc垃圾回收机制会优先处理这些对象}} catch (Exception e) {e.printStackTrace();}try {if (conn != null) {conn.close();conn = null;//gc垃圾回收机制会优先处理这些对象}} catch (Exception e) {e.printStackTrace();}}//获取连接池的办法public static DataSource getDataSource() {return ds;}
}

MD5Utils(加密)

package cn.cyp.util;import java.security.MessageDigest;import java.security.MessageDigest;/** 负责给字符串数据进行加密*/
public class MD5Utils {public static String getPWD( String strs ){/** 加密需要使用JDK中提供的类*/StringBuffer sb = new StringBuffer();try{MessageDigest digest = MessageDigest.getInstance("MD5");byte[] bs = digest.digest(strs.getBytes());/**  加密后的数据是-128 到 127 之间的数字,这个数字也不安全。*   取出每个数组的某些二进制位进行某些运算,得到一个具体的加密结果**   0000 0011 0000 0100 0010 0000 0110 0001*  &0000 0000 0000 0000 0000 0000 1111 1111*  ---------------------------------------------*   0000 0000 0000 0000 0000 0000 0110 0001*   把取出的数据转成十六进制数*/for (byte b : bs) {int x = b & 255;String s = Integer.toHexString(x);if( x > 0 && x < 16 ){sb.append("0");sb.append(s);}else{sb.append(s);}}}catch( Exception e){System.out.println("加密失败");}return sb.toString();}}

checkCodeServlet(验证码)

package cn.cyp.util;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 验证码*/
@WebServlet(urlPatterns = "/checkCodeServlet")
public class checkCodeServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//服务器通知浏览器不要缓存response.setHeader("pragma","no-cache");response.setHeader("cache-control","no-cache");response.setHeader("expires","0");//在内存中创建一个长80,宽30的图片,默认黑色背景//参数一:长//参数二:宽//参数三:颜色int width = 80;int height = 30;BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//获取画笔Graphics g = image.getGraphics();//设置画笔颜色为灰色g.setColor(Color.GRAY);//填充图片g.fillRect(0,0, width,height);//产生4个随机验证码,12EyString checkCode = getCheckCode();//将验证码放入HttpSession中request.getSession().setAttribute("CHECKCODE_SERVER",checkCode);//设置画笔颜色为黄色g.setColor(Color.YELLOW);//设置字体的小大g.setFont(new Font("黑体",Font.BOLD,24));//向图片上写入验证码g.drawString(checkCode,15,25);//将内存中的图片输出到浏览器//参数一:图片对象//参数二:图片的格式,如PNG,JPG,GIF//参数三:图片输出到哪里去ImageIO.write(image,"PNG",response.getOutputStream());}/*** 产生4位随机字符串 */private String getCheckCode() {String base = "0123456789ABCDEFGabcdefg";int size = base.length();Random r = new Random();StringBuffer sb = new StringBuffer();for(int i=1;i<=4;i++){//产生0到size-1的随机值int index = r.nextInt(size);//在base字符串中获取下标为index的字符char c = base.charAt(index);//将c放入到StringBuffer中去sb.append(c);}return sb.toString();}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}
}

MyFilter.java(过滤器)

package cn.cyp.util;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
/*** 解决乱码问题* @author Administrator**/
public class MyFilter implements Filter {private String type;private String encoding;@Overridepublic void destroy() {// 容器正常关闭 该方法会被执行..}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;// 过滤器业务方法编写 默认 拦截后续资源的访问的// 重写getParameter 方法!// 思想: 自己编写 HttpServletRequest接口实现类 覆盖getParameter 方法 自己定义解码 utf-8MyRequest myrequest = new MyRequest(request);// 构造方法注入 对象response.setContentType(type+";charset="+encoding);// perperties xml// class MYRequest implements HttpServletRequest /{ getParamter getParameterValue getParam..Map}// 自己定义request 具备 getParameter系统方法 重写 保留 request其他api 的使用chain.doFilter(myrequest, response);// request response 传递下去 ... 将request response 对象传递后续 servlet /jsp}@Overridepublic void init(FilterConfig config) throws ServletException {type = config.getInitParameter("type");encoding = config.getInitParameter("encoding");}}// 找接口 中间类 Wrapper 包装类 加强 paramter 默认iso-8859-1 继承 HttpServletRequestWrapper 加强 getParameterXX sun 公司 设计类
class MyRequest extends HttpServletRequestWrapper {private HttpServletRequest request;// 获取 为加强 request 对象private boolean flag = false;public MyRequest(HttpServletRequest request) {super(request);// TODO Auto-generated constructor stubthis.request = request;}@Overridepublic String getParameter(String name) {// 首先获取请求方式 ... key 表单 input name 对应属性值 value 表单用户提交信息数据 String[]Map<String, String[]> map = getParameterMap();if (map != null && map.size() != 0) {String[] values = map.get(name);if (values != null && values.length != 0) {return values[0];}}return super.getParameter(name);}@Overridepublic String[] getParameterValues(String name) {Map<String, String[]> map = getParameterMap();if (map != null && map.size() != 0) {String[] values = map.get(name);if (values != null && values.length != 0) {return values;}}return super.getParameterValues(name);}@Overridepublic Map getParameterMap() {// get/postString method = request.getMethod();if ("post".equalsIgnoreCase(method)) {try {request.setCharacterEncoding("utf-8");return request.getParameterMap();} catch (UnsupportedEncodingException e) {e.printStackTrace();}}// 后续代码调用 getParameter getParameterValues 重复调用 getParameterMap// 引入标记 开关 boolean 1--100 素数 双色球 6 1 1-33 6个红球 01 02 ...33 08if ("get".equalsIgnoreCase(method)) {if (!flag) {// 必须要获取 map 遍历map 将 String[] 值获取 每一个数组元素都要 先编码后解码Map<String, String[]> map = request.getParameterMap();// 原始request 获取数据 iso-88590-1解码if (map != null && map.size() != 0) {for (String key : map.keySet()) {// 每一次循环 获取 map keyString[] values = map.get(key);if (values != null && values.length != 0) {// 先编码 后解码 forIn 简化查询for (int i = 0; i < values.length; i++) {try {values[i] = new String(values[i].getBytes("iso-8859-1"), "utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}}}}flag = true;return map;}}return super.getParameterMap();// 其他的请求}}

使用javaweb进行用户管理系统的增删改查,分页和条件查询相关推荐

  1. 微信小程序云开发增删改查、按条件查询、排序方法实例详解。

    前言 身为一个后端程序员却一直对微信小程序云开发很感兴趣,自己也用云开发写了三个开源项目了,主要是不需要配置服务器,减少服务器的花费,钱省下来用来买猪肘子啃不香嘛,不过云开发的数据库是nosql类型, ...

  2. 学生管理系统实现增删改查

    学生管理系统实现增删改查 文章目录 学生管理系统实现增删改查 前言 一.代码块 二.代码分析 1.代码思路 2,学生类 3,接口 4,chuli类 5, 在主类中,kaishi方法 5,显示效果 前言 ...

  3. 复习JavaWeb的小项目书籍信息的增删改查分页功能实现Java面试题Session和Cookie的基础概念生活【记录一个咸鱼大学生三个月的奋进生活】034

    记录一个咸鱼大学生三个月的奋进生活034 JavaWeb的增删改查分页功能实现 前期准备工作(数据库连接类和实体类) 数据库建立 数据库连接类(DBManager) 书籍信息的实体类(Book) 操作 ...

  4. php mysql增删改查实例_php连接数据库实现用户数据的增删改查实例

    下面小编就为大家带来一篇使用PHP连接数据库_实现用户数据的增删改查的整体操作示例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 main页面(主页面) 代号 姓名 性 ...

  5. SSM:实现用户信息的增删改和分页展示

    maven项目:实现用户信息的增删改和分页展示 接着上一篇博客项目的基础上开始 在page目录下,创建failer.jsp,当用户登录失败后,进入failer.jsp提示用户登录失败 <%@ p ...

  6. C++通讯管理系统------实现增删改查的小练习

    C++通讯管理系统------实现增删改查的小练习 仅以此文标记C++的C部分基础语法学习结束 程序非常简单,注意指针传递和值传递 #include <iostream> #include ...

  7. java+SQL做学生信息管理系统(增删改查)

    java+SQL做学生信息管理系统(增删改查) [过程中需要用到的所有工具数据库以及数据库管理器等等] https://pan.baidu.com/s/1cLKJPKXauLCl-Vwah6wFIQ ...

  8. springboot+mybatisplus+postgis实现几何点和线串增删改查分页

    postgis类型介绍 对象分类 描述 POINT 点 MULTIPOINT 多点 LINESTRING 线 LINEARRING 线环 MULTILINESTRING 点串 POLYGON 面 MU ...

  9. servlet增删改查实例_SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)

    前言 说起整合自然离不开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4 ...

最新文章

  1. nginx转发及后端服务器获取真实client的IP
  2. R语言unique函数计算数据对象(vector、dataframe)的unique独特值:unique函数从vector向量、dataframe中删除重复项、删除dataframe重复行
  3. Visual Studio 2017软件安装教程
  4. 水阀门开关方向图解_低压阀门开闭器
  5. Java两则故障分析和常见连接超时时间
  6. Asp.net就业课之Ado.net第一次课
  7. c语言调用go函数,C中调用go中的回调函数
  8. 创建工程师文化的3个步骤 | IDCF
  9. PDH-SDH光端机指示灯具体含义介绍
  10. PHP 大括号{} 的使用
  11. paip.软件开发之COOKIE调试
  12. Wowza流媒体Live直播和VOD点播配置实战
  13. [PKUWC2018] Minimax
  14. 服务器后端开发,学什么编程语言?
  15. HDU - 4960 Another OCD Patient 真实的DP
  16. 王左中右致出版商的信件稿
  17. Linux 块设备之bio结构体
  18. TopLevel和Topmost
  19. UE5学习笔记(二)——3D材质蓝图的常用节点介绍
  20. Excel中的小技巧amp;大智慧

热门文章

  1. unity开发之游戏视野剔除显示FieldOfViewRenderer
  2. 架构(二):如何对现有系统做微服务改造?
  3. 普罗米修斯统计信息上报结构设计
  4. 高清壁纸下载:15款精美的2014年元旦桌面壁纸
  5. [npm]安装n模块报错notsup Unsupported platform
  6. Java与设备(PLC)通信
  7. “抢滩”日本市场 细数阿里云国际化道路与战略
  8. XMPP的优点和不足
  9. angular手机应用_灵活且易于维护的Laravel + Angular材质应用
  10. 7-1 有重复的数据