128 Servlet_11 _综合案例

1.数据库环境搭建

  • 该案例是EmpProject员工管理系统。使用了两张表
    • EMP员工信息表
    • EmpManager 管理员表
1.1创建数据库
CREATE DATABASE EMP ;
1.2创建数据表并插入数据
CREATE TABLE emp(
    id INT PRIMARY KEY AUTO_INCREMENT ,
    name VARCHAR(20) NOT NULL,
    salary DOUBLE NOT NULL,
    age INT NOT NULL
)CHARSET=UTF8;

INSERT INTO emp(NAME,salary,age)VALUES('tom',2000,18);
INSERT INTO emp(NAME,salary,age)VALUES('marry',3000,19);
INSERT INTO emp(NAME,salary,age)VALUES('jack',4000,20);

CREATE TABLE EmpManager(
    username VARCHAR(20) NOT NULL,
    password VARCHAR(28) NOT NULL
)CHARSET=UTF8;

INSERT INTO empmanager(username,PASSWORD)VALUES('xiaoming','123456');

2.创建Web项目

  • 创建Web项目,导入相关jar包
  • commons dbutils-1.7.jar
  • druid-1.1.5.jar
  • mysql-connector-java-5.1.25-bin.jar
  • ValidateCode.jar

3.基础环境搭建

  • 项目下创建包目录结构
    • com.wlw.emp.entity 实体类
    • com.wlw.emp.dao 数据访问层
    • com.wlw.emp.daoimpl 数据访问层实现类
    • com.wlw.emp.service 业务逻辑层
    • com.wlw.emp.service.impl 业务逻辑层实现类
    • com.wlw.emp.filter 过滤器
    • com.wlw.emp.servlet.controller 调用业务逻辑Servlet
    • com.wlw.emp.servlet.jsp 打印显示页面Servlet
    • com.wlw.emp.utils 工具类
    • database.properties数据库连接及连接池配置文件

4.管理员登录功能

database.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/emp?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
initialSize=10
maxActive=20
minIdle=5
maxWait=3000
DbUtils
package com.wlw.emp.utils;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DbUtils {
    private static DruidDataSource dataSource;//连接池
    private static final ThreadLocal<Connection> ThreadLocal =  new ThreadLocal<Connection>();//线程,控制事务,确保一个事务是同一个连接
    static {
        Properties properties = new Properties();
        InputStream is = DbUtils.class.getResourceAsStream("/database.properties");
        try {
            properties.load(is);
            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection(){
        Connection connection = ThreadLocal.get();
        try {
            if(connection == null){
                connection = dataSource.getConnection();
                ThreadLocal.set(connection);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public static void begin(){
        Connection connection = null;
        try {
            connection = getConnection();
            connection.setAutoCommit(false);//设置为手动提交
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    public static void commit(){
        Connection connection = null;
        try {
            connection = getConnection();
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            CloseAll(connection,null,null);
        }
    }
    public static void rollback(){
        Connection connection = null;
        try {
            connection = getConnection();
            connection.rollback();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            CloseAll(connection,null,null);
        }
    }

    public static void CloseAll(Connection connection, Statement statement, ResultSet resultSet){
        try {
            if(resultSet != null){
                resultSet.close();
            }
            if(statement != null){
                statement.close();
            }
            if(connection != null){
                connection.close();
                ThreadLocal.remove();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}
EmpManager 实体类
package com.wlw.emp.entity;

public class EmpManager {
    private String username;
    private String password;

    public EmpManager() {}

    public EmpManager(String username, String password) {
        this.username = username;
        this.password = password;
    }

    @Override
    public String toString() {
        return "EmpManager{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

EmpManagerDao
package com.wlw.emp.dao;

import com.wlw.emp.entity.EmpManager;

public interface EmpManagerDao {
    public EmpManager select(String username);
}
EmpManagerDaoImpl
package com.wlw.emp.dao.impl;

import com.wlw.emp.dao.EmpManagerDao;
import com.wlw.emp.entity.EmpManager;
import com.wlw.emp.utils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

import java.sql.SQLException;

public class EmpManagerDaoImpl implements EmpManagerDao {
    private QueryRunner queryRunner = new QueryRunner();

    @Override
    public EmpManager select(String username) {
        try {
            EmpManager empManager = queryRunner.query(DbUtils.getConnection(), "select * from empmanager where username=?;"
                    , new BeanHandler<EmpManager>(EmpManager.class), username);
            return  empManager;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

EmpManagerService
package com.wlw.emp.service;

import com.wlw.emp.entity.EmpManager;

public interface EmpManagerService {
    public EmpManager login(String username,String password);
}

EmpManagerServiceImpl
package com.wlw.emp.service.impl;

import com.wlw.emp.dao.EmpManagerDao;
import com.wlw.emp.dao.impl.EmpManagerDaoImpl;
import com.wlw.emp.entity.EmpManager;
import com.wlw.emp.service.EmpManagerService;
import com.wlw.emp.utils.DbUtils;

import javax.swing.*;

public class EmpManagerServiceImpl implements EmpManagerService {
    private EmpManagerDao empManagerDao = new EmpManagerDaoImpl();
    @Override
    public EmpManager login(String username, String password) {
        EmpManager result = null;

        try {
            DbUtils.begin(); //开启事务
            EmpManager empManager = empManagerDao.select(username);
            if( empManager!= null ){//表明有信息
                if(empManager.getPassword().equals(password)){//对比密码
                    result = empManager;
                }
            }
            DbUtils.commit();//提交事务
        } catch (Exception e) {
            DbUtils.rollback();//回滚事务
            e.printStackTrace();
        }

        return result;
    }
}

EmpManagerLoginController
package com.wlw.emp.servlet.controller;

import com.wlw.emp.entity.EmpManager;
import com.wlw.emp.service.EmpManagerService;
import com.wlw.emp.service.impl.EmpManagerServiceImpl;

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;

@WebServlet(name = "EmpManagerLoginController",value = "/manager/EmpManagerLoginController")
public class EmpManagerLoginController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.收参
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String inputVcode = request.getParameter("inputVcode");
        //2.校验验证码
        String codes = (String)request.getSession().getAttribute("codes");
        if(inputVcode != null && inputVcode.equalsIgnoreCase(codes)){//验证码正确
            //执行业务逻辑
            EmpManagerService empManagerService = new EmpManagerServiceImpl();
            EmpManager empManager = empManagerService.login(username, password);
            if(empManager != null){//登录成功
                //保存登录信息,在session作用域(便于权限验证)
                request.getSession().setAttribute("empManager",empManager);

                //跳转到查询所有员工的Controller
                response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmpController");
            }else {//登录失败,返回登录页面
                response.sendRedirect(request.getContextPath()+"/login.html");
            }
        }else {//验证码错误,返回登录页面
            response.sendRedirect(request.getContextPath()+"/login.html");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

CreateCodeController
package com.wlw.emp.servlet.controller;

import com.wlw.emp.entity.EmpManager;
import com.wlw.emp.service.EmpManagerService;
import com.wlw.emp.service.impl.EmpManagerServiceImpl;

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;

@WebServlet(name = "EmpManagerLoginController",value = "/manager/EmpManagerLoginController")
public class EmpManagerLoginController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.收参
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String inputVcode = request.getParameter("inputVcode");
        //2.校验验证码
        String codes = (String)request.getSession().getAttribute("codes");
        if(inputVcode != null && inputVcode.equalsIgnoreCase(codes)){//验证码正确
            //执行业务逻辑
            EmpManagerService empManagerService = new EmpManagerServiceImpl();
            EmpManager empManager = empManagerService.login(username, password);
            if(empManager != null){//登录成功
                //保存登录信息,在session作用域(便于权限验证)
                request.getSession().setAttribute("empManager",empManager);

                //跳转到查询所有员工的Controller
                response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmpController");
            }else {//登录失败,返回登录页面
                response.sendRedirect(request.getContextPath()+"/login.html");
            }
        }else {//验证码错误,返回登录页面
            response.sendRedirect(request.getContextPath()+"/login.html");
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>管理员登陆页面</title>
</head>
<body>
    <form action="/empproject/manager/EmpManagerLoginController" method="post">
        <label>用户名: </label><input type="text" name="username"/> <br/>
        <label>密码: </label><input type="password" name="password"/><br/>
        <label>验证码: </label><input type="text" name="inputVcode"/><img src="/empproject/createcode" /><br/>
        <input type="submit" value="登录"/>
    </form>
</body>
</html>

5.查询所有员工功能

Emp
package com.wlw.emp.entity;

public class Emp {
    private int id;
    private String name;
    private double salary;
    private int age;

    public Emp() {}

    public Emp(int id, String name, double salary, int age) {
        this.id = id;
        this.name = name;
        this.salary = salary;
        this.age = age;
    }

    @Override
    public String toString() {
        return "emp{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                ", age=" + age +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

EmpDao
package com.wlw.emp.dao;

import com.wlw.emp.entity.Emp;

import java.util.List;

public interface EmpDao {
    public int insert(Emp emp);
    public int update(Emp emp);
    public int delete(int id);
    public Emp select(int id);
    public List<Emp> selectAll();

}

EmpDaoImpl
package com.wlw.emp.dao.impl;

import com.wlw.emp.dao.EmpDao;
import com.wlw.emp.entity.Emp;
import com.wlw.emp.utils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class EmpDaoImpl implements EmpDao {
    private QueryRunner queryRunner = new QueryRunner();
    @Override
    public int insert(Emp emp) {
        return 0;
    }

    @Override
    public int update(Emp emp) {
        try {
            int result = queryRunner.update(DbUtils.getConnection(), "update emp set name=?,salary=?,age=? where id=?;"
                    , emp.getName(), emp.getSalary(), emp.getAge(), emp.getId());
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }

    @Override
    public int delete(int id) {
        try {
            int result = queryRunner.update(DbUtils.getConnection(), "delete from emp where id=?;", id);
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return 0;
    }

    @Override
    public Emp select(int id) {
        try {
            Emp emp = queryRunner.query(DbUtils.getConnection(), "select * from emp where id=?;"
                    , new BeanHandler<Emp>(Emp.class), id);
            return emp;
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    public List<Emp> selectAll() {
        try {
            List<Emp> emps = queryRunner.query(DbUtils.getConnection(), "select * from emp;"
                    , new BeanListHandler<Emp>(Emp.class));
            return emps;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}

EmpService
package com.wlw.emp.service;

import com.wlw.emp.entity.Emp;

import java.util.List;

public interface EmpService {
    public List<Emp> showAllEmp();
    public int removeEmp(int id);
    public int modify(Emp emp);
    public Emp showEmp(int id);

}

EmpServiceImpl
package com.wlw.emp.service.impl;

import com.sun.jndi.dns.DnsUrl;
import com.wlw.emp.dao.EmpDao;
import com.wlw.emp.dao.impl.EmpDaoImpl;
import com.wlw.emp.entity.Emp;
import com.wlw.emp.service.EmpService;
import com.wlw.emp.utils.DbUtils;

import java.util.ArrayList;
import java.util.List;

public class EmpServiceImpl implements EmpService {
    private EmpDao empDao = new EmpDaoImpl();
    @Override
    public List<Emp> showAllEmp() {
        List<Emp> results = new ArrayList<>();

        try {
            DbUtils.begin(); //开启事务
            List<Emp> emps = empDao.selectAll();
            if(emps!=null){
                results = emps;
            }
            DbUtils.commit();//提交事务
        } catch (Exception e) {
            DbUtils.rollback();//回滚事务
            e.printStackTrace();
        }
        return results;
    }

    @Override
    public int removeEmp(int id) {
        int result = 0;
        try {
            DbUtils.begin();
            result = empDao.delete(id);
            DbUtils.commit();
        } catch (Exception e) {
            DbUtils.rollback();
            e.printStackTrace();
        }
        return result;
    }

    @Override
    public int modify(Emp emp) {
        int result = 0;
        try {
            DbUtils.begin();
            result = empDao.update(emp);
            DbUtils.commit();
        } catch (Exception e) {
            DbUtils.rollback();
            e.printStackTrace();
        }
        return result;
    }

    @Override
    public Emp showEmp(int id) {
        Emp emp = null;

        try {
            DbUtils.begin();
            emp = empDao.select(id);

            DbUtils.commit();
        } catch (Exception e) {
            DbUtils.rollback();
            e.printStackTrace();
        }
        return emp;
    }
}

CheckFilter权限验证过滤器
package com.wlw.emp.filter;

import com.wlw.emp.entity.Emp;
import com.wlw.emp.entity.EmpManager;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter(value = "/manager/safe/*")
public class CheckFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //管理员权限验证,是否是在登录状态
        //向下转型
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;

        EmpManager empManager = (EmpManager)request.getSession().getAttribute("empManager");
        if(empManager != null){//已登录
            filterChain.doFilter(request,response);
        }else {//未登录,跳转登录页面
            response.sendRedirect(request.getContextPath()+"/login.html");
        }
    }

    @Override
    public void destroy() {}
}

EncodingFilter 字符编码过滤器
package com.wlw.emp.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(value = "/manager/*")
public class EncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //处理乱码
        servletRequest.setCharacterEncoding("UTF-8");
        servletResponse.setContentType("text/html;charset=utf-8");
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {}
}

ShowAllEmpController 调用业务逻辑Controller
package com.wlw.emp.servlet.controller;

import com.wlw.emp.entity.Emp;
import com.wlw.emp.service.EmpService;
import com.wlw.emp.service.impl.EmpServiceImpl;

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;

@WebServlet(name = "ShowAllEmpController",value = "/manager/safe/showAllEmpController")
public class ShowAllEmpController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //权限验证,放在了过滤器里
        //业务逻辑,查询所有
        EmpService empService = new EmpServiceImpl();
        List<Emp> emps = empService.showAllEmp();

        //request域保存,转发跳转到ShowAllEmpJsp
        request.setAttribute("emps",emps);
        request.getRequestDispatcher("/manager/safe/ShowAllEmpJsp").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

ShowAllEmpJsp 显示页面JSP
package com.wlw.emp.servlet.jsp;

import com.wlw.emp.entity.Emp;
import com.wlw.emp.entity.EmpManager;

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.io.PrintWriter;
import java.util.List;

@WebServlet(name = "ShowAllEmpJsp",value = "/manager/safe/ShowAllEmpJsp")
public class ShowAllEmpJsp extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        EmpManager empManager = (EmpManager) request.getSession().getAttribute("empManager");
        //获得ShowAllEmpController 转发过来的全部员工信息
        List<Emp> emps = (List<Emp>)request.getAttribute("emps");

        //响应
        PrintWriter writer = response.getWriter();
        if(emps != null){
            writer.println("<html>");
            writer.println("<head>");
            writer.println("<meta charset='utf-8'>");
            writer.println("<title>显示所有员工</title>");
            writer.println("</head>");
            writer.println("<body>");
            writer.println("<h1>欢迎你:"+ empManager.getUsername() +"</h1>");
            writer.println("<table border='1'>");
            writer.println("    <tr>");
            writer.println("        <td>编号</td>");
            writer.println("        <td>姓名</td>");
            writer.println("        <td>工资</td>");
            writer.println("        <td>年龄</td>");
            writer.println("        <td colspan='2'>操作</td>");
            writer.println("    </tr>");
            for (Emp emp : emps){
                writer.println("    <tr>");
                writer.println("        <td>"+emp.getId()+"</td>");
                writer.println("        <td>"+emp.getName()+"</td>");
                writer.println("        <td>"+emp.getSalary()+"</td>");
                writer.println("        <td>"+emp.getAge()+"</td>");
                writer.println("        <td> <a href='"+request.getContextPath()+"/manager/safe/removeEmpController?id="+emp.getId()+"'>删除</a> </td>");
                writer.println("        <td> <a href='"+request.getContextPath()+"/manager/safe/showEmpController?id="+emp.getId()+"'>修改</a> </td>");
                writer.println("    </tr>");
            }
            writer.println("</table>");
            writer.println("</body>");
            writer.println("</html>");
        }else {
            writer.println("<html>");
            writer.println("<head>");
            writer.println("<meta charset='utf-8'>");
            writer.println("<title>显示所有员工</title>");
            writer.println("</head>");
            writer.println("<body>");
            writer.println("<h1>当前没有员工</h1>");
            writer.println("</body>");
            writer.println("</html>");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

6.删除员工功能

RemoveEmpController 删除员工Controller
package com.wlw.emp.servlet.controller;

import com.wlw.emp.service.EmpService;
import com.wlw.emp.service.impl.EmpServiceImpl;

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;

@WebServlet(name = "RemoveEmpController",value = "/manager/safe/removeEmpController")
public class RemoveEmpController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Integer id = Integer.valueOf(request.getParameter("id"));//获得id
        
        EmpService empService = new EmpServiceImpl();
        empService.removeEmp(id);//执行删除
        //跳转到ShowAllEmpController 进行重新显示
        response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmpController");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

7.修改员工功能

7.1 ShowEmpController 查询单个员工Controller
package com.wlw.emp.servlet.controller;

import com.wlw.emp.entity.Emp;
import com.wlw.emp.service.EmpService;
import com.wlw.emp.service.impl.EmpServiceImpl;

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;

@WebServlet(name = "ShowEmpController",value = "/manager/safe/showEmpController")
public class ShowEmpController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Integer id = Integer.valueOf(request.getParameter("id"));//收参

        EmpService empService = new EmpServiceImpl();
        Emp emp = empService.showEmp(id);//执行单个查询

        request.setAttribute("emp",emp);//将要修改的员工信息 存入request域中,在修改页面做展示
        request.getRequestDispatcher("/manager/safe/showUpdateEmpInfoJSP").forward(request,response);

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

7.2 ShowUpdateEmpInfoJSP 显示修改页面JSP
package com.wlw.emp.servlet.jsp;

import com.wlw.emp.entity.Emp;

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.io.PrintWriter;

@WebServlet(name = "ShowUpdateEmpController",value = "/manager/safe/showUpdateEmpInfoJSP")
public class ShowUpdateEmpInfoJSP extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取要修改的员工对象
        Emp emp = (Emp) request.getAttribute("emp");
        //展示
        PrintWriter writer = response.getWriter();
        writer.println("<html>");
        writer.println("<head>");
        writer.println("    <meta charset='utf-8'>");
        writer.println("    <title>修改员工信息页面</title>");
        writer.println("</head>");
        writer.println("<body>");
        writer.println("    <form action='"+request.getContextPath()+"/manager/safe/updateEmpController' method='post'>");
        writer.println("    编号:<input type='text' name='id' value='"+emp.getId()+"' readonly/><br/>");
        writer.println("    姓名:<input type='text' name='name' value='"+emp.getName()+"' /><br/>");
        writer.println("    工资:<input type='text' name='salary' value='"+emp.getSalary()+"' /><br/>");
        writer.println("    年龄:<input type='text' name='age' value='"+emp.getAge()+"' /><br/>");
        writer.println("    <input type='submit'  value='修改' /><br/>");
        writer.println("    </form>");
        writer.println("</body>");
        writer.println("</html>");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}
7.3修改员工信息Controller
package com.wlw.emp.servlet.controller;

import com.wlw.emp.entity.Emp;
import com.wlw.emp.service.EmpService;
import com.wlw.emp.service.impl.EmpServiceImpl;

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;

@WebServlet(name = "UpdateEmpController",value = "/manager/safe/updateEmpController")
public class UpdateEmpController extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //收参
        Integer id = Integer.valueOf(request.getParameter("id"));
        String name = request.getParameter("name");
        Double salary = Double.valueOf(request.getParameter("salary"));
        Integer age = Integer.valueOf(request.getParameter("age"));

        Emp emp = new Emp(id,name,salary,age);
        EmpService empService = new EmpServiceImpl();
        empService.modify(emp);//执行修改

        //修改后,跳转到ShowAllEmpController 进行重新展示
        response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmpController");

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

8.总结

  1. 转发数据时, request.getRequestDispatcher(“目标URL-pattern”).forward(request,response); 注意参数(“目标URL-pattern”),前面不能加 request.getContextpath() ,例如本案例中的 request.getRequestDispatcher("/manager/safe/ShowAllEmpJsp").forward(request,response);

  2. 重定向时,response.sendRedirect(“目标 URI”); 路径可以加上 request.getContextpath(),例如本案例中的response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmpController");

  3. html页面中的form表单提交action=“ ”,

    里面可以写目标资源的全路径,如:< form action="/empproject/manager/EmpManagerLoginController" method=“post”>

    也可以写< form action=“manager/EmpManagerLoginController” method=“post”>

    (要访问的目标资源的配置是,@WebServlet(name = “EmpManagerLoginController”,value = “/manager/EmpManagerLoginController”))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悬浮海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值