一:项目结构
大致分为bean包,dao包,service包,util包,web包,resource包,WEB-INF包7个部分
二:预备阶段
预备阶段包括数据库,实体类与resource包配置文件,工具类util,部分 jar包部分,数据库与jar包部分参考上一篇博客,这里只汇总代码:
resource包:存放属性配置文件
db.properties 配置文件
url=jdbc:mysql://localhost:3306/mydemo1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
uname=root
upass=1380341
driverClass=com.mysql.cj.jdbc.Driver
bean包:存放实体类
Users实体类
package bean;
public class Users {
//属性
private Integer userid;
private String username;
private Integer age;
private String sex;
private String password;
private Integer status;
//无参
public Users() {
}
//全参
public Users(Integer userid, String username, Integer age, String sex, String password) {
this.userid = userid;
this.username = username;
this.age = age;
this.sex = sex;
this.password = password;
}
//重写toString(),get(),set()方法
@Override
public String toString() {
return "Users{" +
"userid=" + userid +
", username='" + username + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", password='" + password + '\'' +
", status=" + status +
'}';
}
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
}
util包:工具类
包括数据库连接池,分页工具类等
DBUtilsPlus(德鲁伊数据库连接池)
package util;
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.*;
import java.util.List;
import java.util.ResourceBundle;
// BaseDao 将链接数据库的步骤进行封装,简化后续JDBC操作
public class DBUtilsPlus {
// 德鲁伊 数据库连接池
private static DruidDataSource dataSource;
//1.定义常用的工具类(Protected修饰的属性或方法可以在子类中被调用)
protected Connection connection;
protected PreparedStatement pps;
protected ResultSet resultSet;
static {
dataSource=new DruidDataSource();
ResourceBundle db = ResourceBundle.getBundle("db");
dataSource.setUrl(db.getString("url"));
dataSource.setDriverClassName(db.getString("driverClass"));
dataSource.setUsername(db.getString("uname"));
dataSource.setPassword(db.getString("upass"));
//设置链接数量
// dataSource.setInitialSize(30);
dataSource.setMaxActive(8);
}
//3.得到链接对象
protected Connection getConnection(){
try {
connection = dataSource.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return connection;
}
//4.创建通道
protected PreparedStatement getPps(String sql){
getConnection();
try {
pps = connection.prepareStatement(sql);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return pps;
}
//5.绑定占位符的值 insert into A(sid,sname,sex,age .... ) values(?,?,?,?)
//List 参数存储的是给占位符所赋的值
//setParameter(new ArrayList())
public void setParameter(List list){
try {
if (list != null&&list.size()>0) { //对List集合进行有效性验证
for (int i=0;i<list.size();i++) {
pps.setObject(i+1,list.get(i));
}
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
//6.执行sql-增删改
protected int updateDB(String sql,List list){
int i = 0;
try {
getPps(sql);//sql
setParameter(list);//list-绑定的是占位符的参数
i = pps.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return i;
}
//7.执行sql-查询
protected ResultSet selectDB(String sql,List list){
try {
getPps(sql);//sql
setParameter(list);//list-绑定的是占位符的参数
resultSet=pps.executeQuery();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return resultSet;
}
//8.关闭资源
public void closeAll(){
try {
if (resultSet != null) {
resultSet.close();
}
if (pps != null) {
pps.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
PageUtil分页工具类
package util;
public class PageUtil {
//页码值
public static final int PAGESIZE=3;
}
PageUtilPlus分页工具类升级版
package util;
import java.util.List;
public class PageUtilPlus<T> {
//将分页相关数据定义在本类中
private Integer pageIndex;//页码值
private Integer pageSize=3;//每页显示条数
private Integer totalCount;//总条数
private Integer totalPages;//总页数
private List<T> datalist;//查询的数据集合
public Integer getPageIndex() {
return pageIndex;
}
public void setPageIndex(Integer pageIndex) {
this.pageIndex = pageIndex;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalCount() {
return totalCount;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getTotalPages() {
return totalCount%pageSize>0?totalCount/pageSize+1:totalCount/pageSize;
}
public void setTotalPages(Integer totalPages) {
this.totalPages = totalPages;
}
public List<T> getDatalist() {
return datalist;
}
public void setDatalist(List<T> datalist) {
this.datalist = datalist;
}
}
三:数据层dao
dao包
与数据库的操作,增删改查等方法,及其实现类
数据类:UsersDao
package dao;
import bean.Users;
import java.util.List;
public interface UsersDao {
//登录方法(根据用户名和密码查询用户信息)
public Users Login(String username,String pass);
//查询全部的方法
public List<Users> selectAll(int pageIndex,int size,String uname,String usex);
//查询总条数+模糊查询条件
public int totalCount(String uname,String usex);
//真删除(根据userid)
public int deleteUser(int userid);
//假删除
public int deleteByid(int userid);
//主键查询
public Users selectById(int userid);
//更新操作
public int updateuser(Users users);
//新增操作
public int insert(Users users);
}
实现类:UsersDaoImpl
package dao.impl;
import bean.Users;
import dao.UsersDao;
import util.DBUtilsPlus;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class UsersDaoImpl extends DBUtilsPlus implements UsersDao {
@Override
public Users Login(String username, String pass) {
Users u1 = null;
try {
String sql = "select * from users where username=? and password=? and status=0";
List params = new ArrayList();
params.add(username);
params.add(pass);
resultSet = selectDB(sql, params);
//将结果集的内容拿到java对象中(当结果集有数据时,就会进入得到循环中,每一次循环都会拿到数据库的中一行数据)
while (resultSet.next()) {
u1 = new Users();
u1.setUserid(resultSet.getInt("userid"));
u1.setAge(resultSet.getInt("age"));
u1.setPassword(resultSet.getString("password"));
u1.setSex(resultSet.getString("sex"));
u1.setUsername(resultSet.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll();
}
return u1;
}
@Override
public List<Users> selectAll(int pageIndex, int size,String uname,String usex) {
//既然是查询,还是要用到selectDB(sql,params)这个方法
//那就要先得到这两个参数
List userList = new ArrayList();
try {
// String sql="select * from users where status=0 and uname like ? or usex=? limit ?,?";
//注意:字符串两侧要加空格
StringBuffer sql=new StringBuffer(" select * from users where status=0 ");
List params=new ArrayList();
//当uname="" usex="" 时,两个if都不会进
if(uname!=null&&uname.trim().length()>0){
sql.append(" and username like ? ");
params.add("%"+uname+"%");
}
if(usex!=null && usex.length()>0&& !"请选择".equals(usex)){ //只有男或女的值时才进来
sql.append(" and sex=? ");
params.add(usex);
}
sql.append(" limit ?,? ");
params.add((pageIndex-1)*size);
params.add(size);
resultSet = selectDB(sql.toString(), params);
while (resultSet.next()) {
Users u1 = new Users();
u1.setUserid(resultSet.getInt("userid"));
u1.setUsername(resultSet.getString("username"));
u1.setAge(resultSet.getInt("age"));
u1.setSex(resultSet.getString("sex"));
u1.setPassword(resultSet.getString("password"));
userList.add(u1);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll();
}
return userList;
}
@Override
public int totalCount(String uname,String usex) {
int count = 0;
try {
//String sql = "select count(*) from users where status=0";
//注意:字符串两侧要加空格
StringBuffer sql=new StringBuffer(" select count(*) from users where status=0 ");
List params=new ArrayList();
//当uname="" usex="" 时,两个if都不会进做全查
if(uname!=null&&uname.trim().length()>0){
sql.append(" and username like ? ");
params.add("%"+uname+"%");
}
if(usex!=null && usex.length()>0&& !"请选择".equals(usex)){ //只有男或女的值时才进来
sql.append(" and sex=? ");
params.add(usex);
}
resultSet = selectDB(sql.toString(), params);
while (resultSet.next()) {
//int count=resultSet.getInt("count(*)");
count = resultSet.getInt(1);//列的位置从1开始数
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll();
}
return count;
}
@Override
public int deleteUser(int userid) {
int i = 0;
try {
String sql = "delete from users where userid=?";
List params = new ArrayList();
params.add(userid);
i = updateDB(sql, params);//i表示受影响的行数
} catch (Exception e) {
e.printStackTrace();
} finally {
closeAll();
}
return i;
}
@Override
public int deleteByid(int userid) {
int i = 0;
try {
String sql = "update users set status=1 where userid=?";
List params = new ArrayList();
params.add(userid);
i = updateDB(sql,params);//i表示受影响的行数
} catch (Exception e) {
e.printStackTrace();
} finally {
closeAll();
}
return i;
}
@Override
public Users selectById(int userid) {
Users users = new Users();
try {
String sql = "select * from users where userid=?";
List params=new ArrayList();
params.add(userid);
resultSet = selectDB(sql, params);
while (resultSet.next()){
users.setUserid(resultSet.getInt("userid"));
users.setUsername(resultSet.getString("username"));
users.setPassword(resultSet.getString("password"));
users.setSex(resultSet.getString("sex"));
users.setAge(resultSet.getInt("age"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeAll();
}
return users;
}
@Override
public int updateuser(Users users) {
int i=0;
try {
String sql="update users set username=?,age=?,sex=?,password=? where userid=?";
List params = new ArrayList();
params.add(users.getUsername());
params.add(users.getAge());
params.add(users.getSex());
params.add(users.getPassword());
params.add(users.getUserid());
i = updateDB(sql,params);
} catch (Exception e) {
e.printStackTrace();
}finally {
closeAll();
}
return i;
}
@Override
public int insert(Users users) {
int i=0;
try {
String sql="insert into users(username,age,sex,password,status) values(?,?,?,?,0)";
List params=new ArrayList();
params.add(users.getUsername());
params.add(users.getAge());
params.add(users.getSex());
params.add(users.getPassword());
i = updateDB(sql, params);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeAll();
}
return i;
}
}
四:业务层 service
service包:
供外部调用。对dao层进行包装,及其实现类
业务类:UsersService
package service;
import bean.Users;
import java.util.List;
public interface UsersService {
//登录逻辑方法
public Users Login(String username, String pass);
//查询全部的方法(参数:页码值,每页显示条数,模糊条件1,模糊条件2)
public List<Users> selectAll(int pageIndex,int size,String uname,String usex);
//查询总条数+模糊查询条件
public int totalCount(String uname,String usex);
//真删除(根据userid)
public int deleteUser(int userid);
//假删除
public int deleteByid(int userid);
//主键查询
public Users selectById(int userid);
//更新操作
public int updateuser(Users users);
//新增操作
public int insert(Users users);
}
实现类:UsersServiceImpl
package service.impl;
import bean.Users;
import dao.UsersDao;
import dao.impl.UsersDaoImpl;
import service.UsersService;
import java.util.List;
public class UsersServiceImpl implements UsersService {
UsersDao usersDao=new UsersDaoImpl();
@Override
public Users Login(String username, String pass) {
return usersDao.Login(username,pass);
}
@Override
public List<Users> selectAll(int pageIndex,int size,String uname,String usex) {
return usersDao.selectAll(pageIndex,size,uname,usex);
}
@Override
public int totalCount(String uname,String usex) {
return usersDao.totalCount(uname,usex);
}
@Override
public int deleteUser(int userid) {
return usersDao.deleteUser(userid);
}
@Override
public int deleteByid(int userid) {
return usersDao.deleteByid(userid);
}
@Override
public Users selectById(int userid) {
return usersDao.selectById(userid);
}
@Override
public int updateuser(Users users) {
return usersDao.updateuser(users);
}
@Override
public int insert(Users users) {
return usersDao.insert(users);
}
}
五:web包:处理类
存放servlet(请求处理类)每个请求对应一个xml配置文件(该类代码存放位置没有明确规定)
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_4_0.xsd"
version="4.0">
<display-name>Archetype Created Web Application</display-name>
<!--1.登录-->
<servlet>
<servlet-name>loginuser</servlet-name>
<servlet-class>
web.LoginServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginuser</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<!--2.退出-->
<servlet>
<servlet-name>loginout</servlet-name>
<servlet-class>
web.LoginOutServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginout</servlet-name>
<url-pattern>/loginout</url-pattern>
</servlet-mapping>
<!--3.查询全部-->
<servlet>
<servlet-name>selectall</servlet-name>
<servlet-class>
web.SelectUsersServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>selectall</servlet-name>
<url-pattern>/selectusers</url-pattern>
</servlet-mapping>
<!--4.真删除-->
<servlet>
<servlet-name>deletebyid</servlet-name>
<servlet-class>
web.DeleteUsersServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>deletebyid</servlet-name>
<url-pattern>/deleteuser</url-pattern>
</servlet-mapping>
<!--5.假删除-->
<servlet>
<servlet-name>delete</servlet-name>
<servlet-class>
web.DeleteByIdServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>delete</servlet-name>
<url-pattern>/deletebyid</url-pattern>
</servlet-mapping>
<!--6.主键查询-->
<servlet>
<servlet-name>selectbyid</servlet-name>
<servlet-class>
web.SelectByIdServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>selectbyid</servlet-name>
<url-pattern>/selectbyid</url-pattern>
</servlet-mapping>
<!--7.更新操作-->
<servlet>
<servlet-name>update</servlet-name>
<servlet-class>
web.UpdateUserServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>update</servlet-name>
<url-pattern>/updateuser</url-pattern>
</servlet-mapping>
<!--8.新增操作-->
<servlet>
<servlet-name>add</servlet-name>
<servlet-class>
web.AddUserServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>add</servlet-name>
<url-pattern>/adduser</url-pattern>
</servlet-mapping>
</web-app>
1.LoginServlet 登录请求
package web;
import bean.Users;
import service.UsersService;
import service.impl.UsersServiceImpl;
import javax.servlet.ServletException;
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.io.PrintWriter;
public class LoginServlet extends HttpServlet {
//重写方法时 二选一
//1重写Service()
//2重写doget()与dopost()方法
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.接参数
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");//要和表单的name值相同
String userpass =req.getParameter("userpass");
//写逻辑:面向接口编程
UsersService usersService=new UsersServiceImpl();
Users u = usersService.Login(username, userpass);
//3.返结果
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if (u==null){
//登录失败(在后端给前端返回一个弹窗-若用js,就不要再用重定向或转发跳页面了否则405错误)
//location.href是属于重定向跳转页面
writer.print("<script type='text/javascript'>alert('用户名或密码不正确');location.href='index.jsp'</script>");
}else {
//登录成功
HttpSession session = req.getSession();
session.setAttribute("u1",u);
writer.print("<script type='text/javascript'>alert('登录成功');location.href='success.jsp'</script>");
}
}
}
2. LoginOutServlet 退出请求
package web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LoginOutServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接参数
//写逻辑:清除session,跳转页面
HttpSession session = req.getSession();
session.invalidate();
//3返结果:跳转目标页面
resp.sendRedirect("index.jsp");
}
}
3.SelectUsersServlet 查询全部
package web;
import bean.Users;
import service.UsersService;
import service.impl.UsersServiceImpl;
import util.PageUtil;
import util.PageUtilPlus;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public class SelectUsersServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接参数
req.setCharacterEncoding("utf-8");
String pageindex = req.getParameter("pageindex");
//对页码值做非空处理,如果没有接受到pageindex默认查询第一页
int index = pageindex==null?1:Integer.parseInt(pageindex);//页码值
//接收模糊查条件
String uname = req.getParameter("uname");
String usex = req.getParameter("usex");
//写逻辑
UsersService usersService=new UsersServiceImpl();
List<Users> users=usersService.selectAll(index,PageUtil.PAGESIZE,uname,usex);
// 每页展示数据时,不够一页,也会单独占一页的位置
//总页数=总条数%每页显示条数>0?总条数/每页显示条数+1:总条数/每页显示条数
int total = usersService.totalCount(uname,usex);
//int totalPages=total%PageUtil.PAGESIZE>0?total/PageUtil.PAGESIZE+1:total/PageUtil.PAGESIZE;//总页数
//返结果(后端给前端传数据,必然涉及到存值问题)
// req.setAttribute("ulist",users);
// req.setAttribute("pindex",index);
// req.setAttribute("totalCount",total);
// req.setAttribute("totalPages",totalPages);
PageUtilPlus<Users> usersPageUtilPlus = new PageUtilPlus<>();
usersPageUtilPlus.setPageIndex(index);
usersPageUtilPlus.setTotalCount(total);
//usersPageUtilPlus.setTotalPages(totalPages);
usersPageUtilPlus.setDatalist(users);
req.setAttribute("pu",usersPageUtilPlus);
//存储模糊条件
req.setAttribute("username",uname);
req.setAttribute("usersex",usex);
req.getRequestDispatcher("/list.jsp").forward(req,resp);
}
}
4.DeleteUsersServlet 真删除
package web;
import service.UsersService;
import service.impl.UsersServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class DeleteUsersServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.接参数
String userid = req.getParameter("userid");
//2.调逻辑
UsersService usersService = new UsersServiceImpl();
int i = usersService.deleteUser(Integer.parseInt(userid));
//3.返结果
resp.setContentType("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
if (i>0){
//删除成功 注意,不可以用重定向list.jsp
//deleteservlet->location.href->selectusersservlet->list.jsp
writer.println("<script type='text/javascript'>alert('用户删除成功');location.href='selectusers?pageIndex=1'</script>");
}else {
//删除失败
writer.println("<script type='text/javascript'>alert('用户删除失败');location.href='selectusers?pageIndex=1'</script>");
}
}
}
5.DeleteByIdServlet 假删除
package web;
import service.UsersService;
import service.impl.UsersServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class DeleteByIdServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.接参数
String userid = (String) req.getParameter("userid");
int uid = Integer.parseInt(userid);
//2.写逻辑
UsersService usersService=new UsersServiceImpl();
int i = usersService.deleteByid(uid);
//3.返结果
resp.setContentType("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
if (i>0){
//删除成功 注意,不可以用重定向list.jsp
//deleteservlet->location.href->selectusersservlet->list.jsp
writer.println("<script type='text/javascript'>alert('用户删除成功');location.href='selectusers?pageIndex=1'</script>");
}else {
//删除失败
writer.println("<script type='text/javascript'>alert('用户删除失败');location.href='selectusers?pageIndex=1'</script>");
}
}
}
6.SelectByIdServlet 主键查询
package web;
import bean.Users;
import service.UsersService;
import service.impl.UsersServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class SelectByIdServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 接参数
String userid=req.getParameter("userid");
// 写逻辑
UsersService usersService=new UsersServiceImpl();
Users users = usersService.selectById(Integer.parseInt(userid));
// 返结果
req.setAttribute("user",users);
req.getRequestDispatcher("update.jsp").forward(req,resp);
}
}
7.UpdateUserServlet 更新请求
package web;
import bean.Users;
import service.UsersService;
import service.impl.UsersServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class UpdateUserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//接参数+处理post请求的乱码
req.setCharacterEncoding("utf-8");
String uid = req.getParameter("uid");
String uname = req.getParameter("uname");
String usex = req.getParameter("usex");
String uage = req.getParameter("uage");
String upass = req.getParameter("upass");
//写逻辑
UsersService usersService=new UsersServiceImpl();
Users users = new Users();
users.setUserid(Integer.parseInt(uid));
users.setUsername(uname);
users.setSex(usex);
users.setAge(Integer.parseInt(uage));
users.setPassword(upass);
int i = usersService.updateuser(users);
//返结果
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if(i>0){
//更新成功,回到展示用户列表的界面(不能直接跳回到list.jsp,而是需要重新发送新的请求,间接走到list.jsp)
writer.print("<script type='text/javascript'>alert('更新成功');location.href='/selectusers?pageindex=1'</script>");
}else{
//更新失败,则回到更新页面update.jsp(不能直接跳回到update.jsp,而是需要重新发送新的请求,间接走到update.jsp)
writer.print("<script type='text/javascript'>alert('更新失败');location.href='/selectbyid?userid="+uid+"'</script>");
}
}
8.SelectUsersServlet 新增请求
package web;
import bean.Users;
import service.UsersService;
import service.impl.UsersServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class AddUserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.接参数+设置编码
req.setCharacterEncoding("utf-8");
String uname = req.getParameter("uname");
String usex = req.getParameter("usex");
String uage = req.getParameter("uage");
String upass = req.getParameter("upass");
//2.写逻辑
UsersService usersService=new UsersServiceImpl();
Users users=new Users();
users.setUsername(uname);
users.setSex(usex);
users.setAge(Integer.parseInt(uage));
users.setPassword(upass);
int i = usersService.insert(users);
//3.返结果
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if(i>0){
writer.print("<script type='text/javascript'>alert('新增成功');location.href='/selectusers?pageindex=1'</script>");
}else{
writer.print("<script type='text/javascript'>alert('新增失败');location.href='/add.jsp'</script>");
}
}
}
六:前端页面
index.jsp,success.jsp,list.jsp,update.jsp,add.jsp等页面
1.index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>登录</h1>
<form action="/login" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="userpass"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
2.success.jsp
<%@ page import="bean.Users" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Users u1 =(Users) session.getAttribute("u1");
%>
<h1>
success.jsp,<%=u1==null?"":u1.getUsername()%>欢迎您:
<a href="/loginout">退出</a>
<input type="button" value="查询用户列表" onclick="javascript:location.href='/selectusers?pageindex=1'">
</h1>
</body>
</html>
3.list.jsp
<%@ page import="bean.Users" %>
<%@ page import="java.util.List" %>
<%@ page import="util.PageUtilPlus" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Users u1 =(Users) session.getAttribute("u1");
%>
<h1>list.jsp,<%=u1==null?"":u1.getUsername()%>欢迎您:</h1>
<%
// List<Users> ulist=(List<Users>)request.getAttribute("ulist");
// int pindex= (Integer)request.getAttribute("pindex");
// int totalCount = (Integer)request.getAttribute("totalCount");
// int totalPages = (Integer)request.getAttribute("totalPages");
PageUtilPlus<Users> pu =(PageUtilPlus)request.getAttribute("pu");
//得到模糊查询条件
String username = (String)request.getAttribute("username");
username=(username==null?"":username);
String usersex = (String)request.getAttribute("usersex");
usersex=(usersex==null?"":usersex);
%>
<div>
<input type="button" value="新增" onclick="javascript:location.href='add.jsp'">
</div>
<div>
<form action="/selectusers" method="post">
姓名:<input type="text" name="uname" value="<%=username%>">
性别:<select name="usex">
<option value="请选择"<%="请选择".equals(usersex)?"selected":""%>>请选择</option>
<option value="男"<%="男".equals(usersex)?"selected":""%>>男</option>
<option value="女"<%="女".equals(usersex)?"selected":""%>>女</option>
</select>
<input type="submit" value="查询"/>
</form>
</div>
<table border="1" cellspacing="0" width="500">
<tr>
<td>用户编号</td>
<td>用户姓名</td>
<td>用户性别</td>
<td>用户年龄</td>
<td>用户密码</td>
</tr>
<%for (Users u:pu.getDatalist()){%>
<tr>
<td><%=u.getUserid()%></td>
<td><%=u.getUsername()%></td>
<td><%=u.getSex()%></td>
<td><%=u.getAge()%></td>
<td><%=u.getPassword()%></td>
<td><a href="/deleteuser?userid=<%=u.getUserid()%>">删除</a>
<a href="/deletebyid?userid=<%=u.getUserid()%>">假删除</a>
<a href="/selectbyid?userid=<%=u.getUserid()%>">修改 </a>
</td>
</tr>
<%}%>
<tr>
<td colspan="6">
<a href="/selectusers?pageindex=1&uname=<%=username%>&usex=<%=usersex%>">首页</a>
<a href="/selectusers?pageindex=<%=pu.getPageIndex()-1<=1?1:pu.getPageIndex()-1%>&uname=<%=username%>&usex=<%=usersex%>">上一页</a>
<%for(int i=1;i<=pu.getTotalPages();i++){%>
<a href="/selectusers?pageindex=<%=i%>&uname=<%=username%>&usex=<%=usersex%>"><span><%=i%></span></a>
<%}%>
<a href="/selectusers?pageindex=<%=pu.getPageIndex()+1>=pu.getTotalPages()?pu.getTotalPages():pu.getPageIndex()+1%>&uname=<%=username%>&usex=<%=usersex%>">下一页</a>
<a href="/selectusers?pageindex=<%=pu.getTotalPages()%>&uname=<%=username%>&usex=<%=usersex%>">尾页</a>
当前页:<%=pu.getPageIndex()%>
总页数:<%=pu.getTotalPages()%>,
总条数:<%=pu.getTotalCount()%>
</td>
</tr>
</table>
</body>
</html>
4.update.jsp
<%@ page import="bean.Users" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
Users user =(Users)request.getAttribute("user");
%>
<h1>update.jsp</h1>
<form action="/updateuser" method="post">
userid:<input type="text" name="uid" readonly value="<%=user.getUserid()%>"><br>
username:<input type="text" name="uname" value="<%=user.getUsername()%>"><br>
sex:<input type="radio" name="usex" value="男" <%="男".equals(user.getSex())?"checked":""%>>男
<input type="radio" name="usex" value="女" <%="女".equals(user.getSex())?"checked":""%>>女<br>
age:<input type="text" name="uage" value="<%=user.getAge()%>"><br>
password:<input type="text" name="upass" value="<%=user.getPassword()%>"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
5.add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>add.jsp</h1>
<form action="/adduser" method="post">
username:<input type="text" name="uname" ><br>
sex:<input type="radio" name="usex" value="男" >男
<input type="radio" name="usex" value="女" >女 <br>
age:<input type="text" name="uage" ><br>
password:<input type="text" name="upass" ><br>
<input type="submit" value="保存">
</form>
</body>
</html>