我的第一个Javaweb项目(优化前代码整理)

这篇博客详细介绍了作者的首个JavaWeb项目的结构,包括bean、dao、service、util、web、resource和WEB-INF七个部分。在预备阶段,提到了数据库配置、实体类、属性配置文件以及工具类如DBUtilsPlus和PageUtil。数据层涉及DAO接口及其实现,业务层包含服务类和服务实现。web包中涵盖了处理不同请求的Servlet,如登录、退出、查询和更新操作。前端页面包括index.jsp和success.jsp等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:项目结构

 

大致分为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%>">&nbsp;&nbsp;&nbsp;&nbsp;
           性别:<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> &nbsp;&nbsp;
            <%}%>
            <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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值