文章目录

  • 1.项目需求
  • 2.项目搭建
    • 2.1项目目录搭建
    • 2.2项目资源引入
    • 2.3数据库创建
  • 3.项目开发
    • database.properties
    • DbUtils
    • Emp
    • EmpManager
    • Page
    • EmpManagerDao
    • EmpManagerDaoImpl
    • EmpDao
    • EmpDaoImpl
    • EmpManagerService
    • EmpManagerServiceImpl
    • EmpService
    • EmpServiceImpl
    • CheckFilter
    • EncodingFilter
    • 3.1登录功能EmpManagerLoginController
    • 3.2验证码CreateCodeController
    • 3.3 分页查询(Controller)ShowAllEmpController
    • 3.5新增InsertEmpController
    • 3.6修改 ShowEmpController 、UpdateEmpController
    • 3.7删除DeleteEmpController
    • login.jsp
    • emplist.jsp
    • addEmp.jsp
    • updateEmp.jsp
  • Web开发总结
    • 开发流程

1.项目需求

  • 将提供好的HTML页面,修改为JSP。

  • 实现管理员登录功能,并应用权限验证。

  • 对员工实现增删改查。

  • 查询员工使用分页查询,并提供首页、尾页、上一页、下一页。

2.项目搭建

2.1项目目录搭建

• com.wlw.ems.utils 工具包

• com.wlw.ems.entity 实体类

• com.wlw.ems.dao 数据访问接口

• com.wlw.ems.dao.impl数据访问实现类

• com.wlw.ems.service 业务逻辑接口

• com.wlw.ems.service.impl 业务逻辑实现类

• com.wlw.ems.controller 控制器

• com.wlw.ems.filter 过滤器

2.2项目资源引入

创建EMS项目,导入相关jar文件。

​ commons-d butils-1.7.jar

​ druid-1.1.5.jar

​ jstl.jar

​ standard.jar

​ ValidateCode.jar

​ mysql-connector-java-5.1.25-bin.jar

2.3数据库创建

#员工信息表
CREATE TABLE emp(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, salary DOUBLE NOT NULL, age INT NOT NULL)CHARSET=utf8;
#管理员表
CREATE TABLE empManager(username VARCHAR(20) NOT NULL,PASSWORD VARCHAR(20) NOT NULL
)CHARSET=utf8;

3.项目开发

database.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ems?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
initialSize=10
maxActive=20
minIdle=5
maxWait=3000

DbUtils

package com.wlw.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();}}}

Emp

package com.wlw.enity;public class Emp {private int id;private String name;private double salary;private int age;public Emp() {}public Emp(String name, double salary, int age) {this.name = name;this.salary = salary;this.age = age;}public Emp(int id, String name, double salary, int age) {this.id = id;this.name = name;this.salary = salary;this.age = age;}@Overridepublic 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;}
}

EmpManager

package com.wlw.enity;public class EmpManager {private String username;private String password;public EmpManager() {}public EmpManager(String username, String password) {this.username = username;this.password = password;}@Overridepublic 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;}
}

Page

package com.wlw.enity;public class Page {private Integer pageIndex;//页码private Integer pageSize;//页大小  显示多少行数据private Integer totalCounts;//数据的总行数private Integer totalPages;//总页数private Integer startRows;//起始行public Page(Integer pageIndex) {this(pageIndex, 5);}public Page(Integer pageIndex, Integer pageSize) {this.pageIndex = pageIndex;this.pageSize = pageSize;this.setStartRows((pageIndex - 1) * pageSize);//计算起始行}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 getTotalCounts() {return totalCounts;}public void setTotalCounts(Integer totalCounts) { //设置总条数时,设置总页数this.totalCounts = totalCounts;this.setTotalPages(totalCounts % pageSize == 0? totalCounts/pageSize : totalCounts/pageSize +1);}public Integer getTotalPages() {return totalPages;}public void setTotalPages(Integer totalPages) {this.totalPages = totalPages;}public Integer getStartRows() {return startRows;}public void setStartRows(Integer startRows) {this.startRows = startRows;}
}

EmpManagerDao

package com.wlw.dao;import com.wlw.enity.EmpManager;public interface EmpManagerDao {public EmpManager select(String username);
}

EmpManagerDaoImpl

package com.wlw.dao.impl;import com.wlw.dao.EmpManagerDao;
import com.wlw.enity.EmpManager;
import com.wlw.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();@Overridepublic 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;}
}

EmpDao

package com.wlw.dao;import com.wlw.enity.Emp;
import com.wlw.enity.Page;import java.util.List;public interface EmpDao {public List<Emp> select(Page page);public long selectCount();public int delete(int id);public int insert(Emp emp);public Emp select(int id);public int update(Emp emp);
}

EmpDaoImpl

package com.wlw.dao.impl;import com.wlw.dao.EmpDao;
import com.wlw.enity.Emp;
import com.wlw.enity.Page;import com.wlw.utils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;import java.sql.SQLException;
import java.util.ArrayList;import java.util.List;public class EmpDaoImpl implements EmpDao {private QueryRunner queryRunner = new QueryRunner();@Overridepublic List<Emp> select(Page page) {List<Emp> emps = new ArrayList<>();try {emps = queryRunner.query(DbUtils.getConnection(),"select * from emp limit ?,?;",new BeanListHandler<Emp>(Emp.class),page.getStartRows(),page.getPageSize());return emps;} catch (SQLException e) {e.printStackTrace();}return null;}@Overridepublic long selectCount() {try {long count = queryRunner.query(DbUtils.getConnection(),"select count(*) from emp;",new ScalarHandler<>());return count;} catch (SQLException e) {e.printStackTrace();}return 0;}@Overridepublic 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;}@Overridepublic int insert(Emp emp) {try {int result = queryRunner.update(DbUtils.getConnection(), "insert into emp (name,salary,age) values (?,?,?);", emp.getName(), emp.getSalary(), emp.getAge());return result;} catch (SQLException e) {e.printStackTrace();}return 0;}@Overridepublic 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;}@Overridepublic 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;}
}

EmpManagerService

package com.wlw.service;import com.wlw.enity.EmpManager;public interface EmpManagerService {public EmpManager login(String username,String password);
}

EmpManagerServiceImpl

package com.wlw.service.impl;import com.wlw.dao.EmpManagerDao;
import com.wlw.dao.impl.EmpManagerDaoImpl;
import com.wlw.enity.EmpManager;
import com.wlw.service.EmpManagerService;
import com.wlw.utils.DbUtils;public class EmpManagerServiceImpl implements EmpManagerService {private EmpManagerDao empManagerDao = new EmpManagerDaoImpl();@Overridepublic EmpManager login(String username, String password) {EmpManager empManager = null;try {DbUtils.begin();EmpManager temp = empManagerDao.select(username);if(temp != null){if(temp.getPassword().equals(password)){//判断密码empManager = temp;}}DbUtils.commit();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return empManager;}
}

EmpService

package com.wlw.service;import com.wlw.enity.Emp;
import com.wlw.enity.Page;import java.util.List;public interface EmpService {public List<Emp> showAllEmpByPage(Page page);public int deleteEmp(int id);public int addEmp(Emp emp);public Emp selectEmpById(int id);public int modifyEmp(Emp emp);
}

EmpServiceImpl

package com.wlw.service.impl;import com.wlw.dao.EmpDao;
import com.wlw.dao.impl.EmpDaoImpl;
import com.wlw.enity.Emp;
import com.wlw.enity.Page;
import com.wlw.service.EmpService;
import com.wlw.utils.DbUtils;import java.util.ArrayList;
import java.util.List;public class EmpServiceImpl implements EmpService {private EmpDao empDao = new EmpDaoImpl();@Overridepublic List<Emp> showAllEmpByPage(Page page) {List<Emp> emps = null;try {DbUtils.begin();long count = empDao.selectCount();page.setTotalCounts((int)count);//赋值总条数,进而设置了总页数emps = empDao.select(page); //查询DbUtils.commit();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return emps;}@Overridepublic int deleteEmp(int id) {int result = 0;try {DbUtils.begin();result = empDao.delete(id);DbUtils.commit();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return result;}@Overridepublic int addEmp(Emp emp) {int result = 0;try {DbUtils.begin();result = empDao.insert(emp);DbUtils.commit();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return result;}@Overridepublic Emp selectEmpById(int id) {Emp emp = null;try {DbUtils.begin();emp = empDao.select(id);DbUtils.commit();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return emp;}@Overridepublic int modifyEmp(Emp emp) {int result = 0;try {DbUtils.begin();result = empDao.update(emp);DbUtils.commit();} catch (Exception e) {DbUtils.rollback();e.printStackTrace();}return result;}
}

CheckFilter

package com.wlw.filter;import com.wlw.enity.EmpManager;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebFilter(value = "/manager/safe/*")
public class CheckFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {//向下转型HttpServletRequest request = (HttpServletRequest)req;HttpServletResponse response = (HttpServletResponse)resp;HttpSession session = request.getSession();EmpManager empManager = (EmpManager) session.getAttribute("empManager");if(empManager != null){//已登录  , 管理员登录之后就保存了登录信息chain.doFilter(request, response);}else { //未登录response.sendRedirect(request.getContextPath()+"/login.jsp");//重定向}}public void init(FilterConfig config) throws ServletException {}
}

EncodingFilter

package com.wlw.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter(value = "/manager/*")
public class EncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic 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);}@Overridepublic void destroy() {}
}

3.1登录功能EmpManagerLoginController

package com.wlw.controller;import com.wlw.enity.EmpManager;
import com.wlw.service.EmpManagerService;
import com.wlw.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/empManagerLogin")
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.验证码校验HttpSession session = request.getSession();String codes = (String)session.getAttribute("codes");if(inputVcode != null && inputVcode.equalsIgnoreCase(codes)){ //验证码正确//执行业务,查询EmpManagerService empManagerService =new EmpManagerServiceImpl();EmpManager empManager = empManagerService.login(username, password);if(empManager != null){//登录成功//保存登录信息,在session作用域(便于权限验证)session.setAttribute("empManager",empManager);//跳转到查询所有员工的Controllerresponse.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmp");}else {//登录失败response.sendRedirect(request.getContextPath()+"/login.jsp");}}else { //验证码失败response.sendRedirect(request.getContextPath()+"/login.jsp");}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

3.2验证码CreateCodeController

package com.wlw.controller;import cn.dsna.util.images.ValidateCode;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 = "CreateCodeController",value = "/createCode")
public class CreateCodeController extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ValidateCode code = new ValidateCode(200,30,4,20);String codes = code.getCode();//获取验证码的内容,并存入session,方便对比校验request.getSession().setAttribute("codes",codes);code.write(response.getOutputStream());//传给客户端}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

3.3 分页查询(Controller)ShowAllEmpController

package com.wlw.controller;import com.wlw.enity.Emp;
import com.wlw.enity.Page;
import com.wlw.service.EmpService;
import com.wlw.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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;@WebServlet(name = "ShowAllEmpController",value = "/manager/safe/showAllEmp")
public class ShowAllEmpController extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//过滤器里要做 处理乱码, 权限验证String pageIndex = request.getParameter("pageIndex");if(pageIndex == null){ //第一次登录过来 这个参数为nullpageIndex = "1";}Page page = new Page(Integer.valueOf(pageIndex));//执行查询EmpService empService = new EmpServiceImpl();List<Emp> emps = empService.showAllEmpByPage(page);//分页查询request.setAttribute("emps",emps);//存入request域,方便jsp文件通过el jstl 获取内容request.setAttribute("page",page);//为了实现上一页,下一页//转发request.getRequestDispatcher("/emplist.jsp").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

3.5新增InsertEmpController

package com.wlw.controller;import com.wlw.enity.Emp;
import com.wlw.service.EmpService;
import com.wlw.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 = "InsertEmpController" ,value = "/manager/safe/insertEmp")
public class InsertEmpController extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String name = request.getParameter("name");Double salary = Double.valueOf(request.getParameter("salary"));Integer age = Integer.valueOf(request.getParameter("age"));Emp emp = new Emp(name,salary,age);EmpService empService = new EmpServiceImpl();empService.addEmp(emp);//添加//添加完,重定向到查询,重新查询一遍response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

3.6修改 ShowEmpController 、UpdateEmpController

package com.wlw.controller;import com.wlw.enity.Emp;
import com.wlw.service.EmpService;
import com.wlw.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/showEmp")
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.selectEmpById(id);//查询单个request.setAttribute("emp",emp); //存入request域,方便jsp获取信息//转发request.getRequestDispatcher("/updateEmp.jsp").forward(request,response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}
package com.wlw.controller;import com.wlw.enity.Emp;
import com.wlw.service.EmpService;
import com.wlw.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/updateEmp")
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.modifyEmp(emp); //修改//修改完,重定向到查询,重新查询一遍response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

3.7删除DeleteEmpController

package com.wlw.controller;import com.wlw.service.EmpService;
import com.wlw.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 = "DeleteEmpController" ,value = "/manager/safe/deleteEmp")
public class DeleteEmpController extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//收参String id = request.getParameter("id");EmpService empService = new EmpServiceImpl();empService.deleteEmp(Integer.valueOf(id)); //删除//删除完,重定向到查询,重新查询一遍response.sendRedirect(request.getContextPath()+"/manager/safe/showAllEmp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}
}

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>管理员登录页面</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"/>
</head><body>
<div id="wrap"><div id="top_content"><div id="header"><div id="rightheader"><p>2009/11/20 <br/></p></div><div id="topheader"><h1 id="title"><a href="#">main</a></h1></div><div id="navigation"></div></div><div id="content"><p id="whereami"></p><h1>login</h1><form action="${pageContext.request.contextPath}/manager/empManagerLogin" method="post"><table cellpadding="0" cellspacing="0" border="0"class="form_table"><tr><td valign="middle" align="right">username:</td><td valign="middle" align="left"><input type="text"class="inputgri" name="username"/></td></tr><tr><td valign="middle" align="right">password:</td><td valign="middle" align="left"><input type="password"class="inputgri" name="password"/></td></tr><tr><td valign="middle" align="right">validateCode:</td><td valign="middle" align="left"><input type="text"class="inputgri" name="inputVcode"/><img src="${pageContext.request.contextPath}/createCode" /></td></tr></table><p><input type="submit" class="button" value="Submit &raquo;"/></p></form></div></div><div id="footer"><div id="footer_bg">ABC@126.com</div></div>
</div>
</body>
</html>

emplist.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>查询所有员工</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"/>
</head>
<body>
<div id="wrap"><div id="top_content"><div id="header"><div id="rightheader"><p>2009/11/20<br/></p></div><div id="topheader"><h1 id="title"><a href="#">main</a></h1></div><div id="navigation"></div></div><div id="content"><p id="whereami"></p><h1>Welcome!</h1><table class="table"><tr class="table_header"><td>ID</td><td>Name</td><td>Salary</td><td>Age</td><td>Operation</td></tr><c:forEach items="${emps}" var="emp" varStatus="e"><c:if test="${e.count % 2  !=0}"><tr class="row1"></c:if><c:if test="${e.count % 2  ==0}"><tr class="row2"></c:if><td>${emp.id}</td><td>${emp.name}</td><td>${emp.salary}</td><td>${emp.age}</td><td><a href="<c:url  context='${pageContext.request.contextPath}' value='/manager/safe/deleteEmp?id=${emp.id}'/>">delete emp</a>&nbsp;<a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showEmp?id=${emp.id}'/>">update emp</a></td></tr></c:forEach><tr><td colspan="5" align="center"><a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=1'/>">首页</a><c:if test="${page.pageIndex > 1}"><a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=${page.pageIndex - 1}' />">上一页</a></c:if><c:if test="${page.pageIndex==1}"><a>上一页</a></c:if><c:if test="${page.pageIndex < page.totalPages}"><a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=${page.pageIndex + 1}' />">下一页</a></c:if><c:if test="${page.pageIndex == page.totalPages}"><a>下一页</a></c:if><a href="<c:url context='${pageContext.request.contextPath}' value='/manager/safe/showAllEmp?pageIndex=${page.totalPages}'/>">尾页</a></td></tr></table><p><input type="button" class="button" value="Add Employee" οnclick="location='${pageContext.request.contextPath}/addEmp.jsp'"/></p></div></div><div id="footer"><div id="footer_bg">ABC@126.com</div></div>
</div>
</body>
</html>

addEmp.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>修改员工页面</title><link rel="stylesheet" type="text/css"href="${pageContext.request.contextPath}/css/style.css" />
</head><body>
<div id="wrap"><div id="top_content"><div id="header"><div id="rightheader"><p>2009/11/20<br /></p></div><div id="topheader"><h1 id="title"><a href="#">Main</a></h1></div><div id="navigation"></div></div><div id="content"><p id="whereami"></p><h1>add Emp info:</h1><form action="${pageContext.request.contextPath}/manager/safe/insertEmp" method="post"><table cellpadding="0" cellspacing="0" border="0"class="form_table"><tr><td valign="middle" align="right">name:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="name" /></td></tr><tr><td valign="middle" align="right">salary:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="salary" /></td></tr><tr><td valign="middle" align="right">age:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="age" /></td></tr></table><p><input type="submit" class="button" value="Confirm" /></p></form></div></div><div id="footer"><div id="footer_bg">ABC@126.com</div></div>
</div>
</body>
</html>

updateEmp.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>修改员工信息</title><link rel="stylesheet" type="text/css"href="${pageContext.request.contextPath}/css/style.css" />
</head><body>
<div id="wrap"><div id="top_content"><div id="header"><div id="rightheader"><p>2009/11/20<br /></p></div><div id="topheader"><h1 id="title"><a href="#">Main</a></h1></div><div id="navigation"></div></div><div id="content"><p id="whereami"></p><h1>update Emp info:</h1><form action="${pageContext.request.contextPath}/manager/safe/updateEmp" method="post"><table cellpadding="0" cellspacing="0" border="0"class="form_table"><tr><td valign="middle" align="right">id:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="id" value="${emp.id}" readonly/></td></tr><tr><td valign="middle" align="right">name:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="name" value="${emp.name}"/></td></tr><tr><td valign="middle" align="right">salary:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="salary" value="${emp.salary}"/></td></tr><tr><td valign="middle" align="right">age:</td><td valign="middle" align="left"><input type="text" class="inputgri" name="age" value="${emp.age}"/></td></tr></table><p><input type="submit" class="button" value="Confirm" /></p></form></div></div><div id="footer"><div id="footer_bg">ABC@126.com</div></div>
</div>
</body>
</html>

Web开发总结

开发流程

  • 在Web开发流程中,遵守以下开发顺序

    • DAO

      • table
      • entity
      • DAO接口
      • DAO实现
    • Service
      • Service接口
      • Service实现(调用DAO实现类, 并控制事务)
    • Controller(处理请求的Servlet)
      • [收集请求中的数据]
      • 调用业务功能(Service实现类)
      • [在相应合适的作用域中存储数据]
      • 流程跳转(forward I sendRedirect)–> *.jsp
    • JSP
      • [在作用域中获取数据]
      • 使用EL+JSTL将数据嵌套在HTML标签中
    • Filter
      • EncodingFilter
      • CheckFilter

134 EMS综合项目相关推荐

  1. 综合项目——智能分类垃圾桶

    综合项目--智能分类垃圾桶 一.讲在前面 之前做过许多项目,也写了许多工程代码,但是一直没能好好整理,导致我每做一个新的项目就跟重头开始似的,为了更好进行代码资料的管理,我决定开辟这个博客,作为我资料 ...

  2. JavaWeb综合项目——快递e栈(微信前端部分)

    文章目录 1 短信登录和退出登录 1.1 申请新的短信模板 1.2 短信登录,退出登录 2 快递列表 2.1 使用流(stream)来处理List 2.2 创建登录权限验证过滤器 2.3 微信端快递管 ...

  3. Java综合项目:拼图游戏

    Java综合项目:拼图游戏 零.项目描述 1. 用户登录界面 2. 注册界面 3. 游戏界面 4. 素材 一.创建主界面 二.界面设置 三.制作菜单栏 四.添加图片 五.打乱图片 六.美化界面 七.移 ...

  4. python练手小游戏_Python小游戏练手EMS员工项目自学者练习

    Python小游戏练手EMS员工项目自学者练习 # 显示欢迎信息 from typing import Any, Union print('-' * 20, '欢迎使用员工管理系统', '-' * 2 ...

  5. 树莓派python交互界面实例_树莓派综合项目2:智能小车(二)tkinter图形界面控制...

    一.介绍 树莓派综合项目2:智能小车(一)四轮驱动中,实现了代码输入对四个电机的简单控制,本章将使用Python 的图形开发界面的库--Tkinter 模块(Tk 接口),编写本地运行的图形界面,控制 ...

  6. 大数据架构师——音乐数据中心平台离线数仓综合项目(一)

    文章目录 音乐数据中心平台离线数仓综合项目 数据库与ER建模 数据库 数据库三范式 第一范式(1NF):原子性,字段不可分 第二范式(2NF):唯一性,一个表只能说明一个事物,有主键,非主键字段依赖主 ...

  7. Java综合项目----开发团队分配管理软件

    Java综合项目----开发团队分配管理软件 源代码下载地址: 简介 需求说明 系统功能结构 系统流程 用户注册和登录模块 开发人员管理模块 Equipment接口及其实现子类的设计 Employee ...

  8. JavaSE综合项目演练

    光阴似箭日月如梭,大家学习已经有了一段时间了,转眼间,从刚开始如何配置JDK已经到了现在快学完网络编程了.学了这么多,眼看就要进入下一个阶段了,数据库编程了,那么在进入下个阶段前,我们来完成一个综合性 ...

  9. 【网络工程】9、实操-万达酒店综合项目(三)

    接上篇<8.实操-万达酒店综合项目(三)> 之前我们按照项目要求进行模拟拓扑的构建实操,完成了办公区部分的网络配置,本篇我们来继续完成其他区域的网络配置. 一.总体架构情况 按照之前项目需 ...

最新文章

  1. 物体的三维识别与6D位姿估计:PPF系列论文介绍(五)
  2. 超硬核的 Python 数据可视化教程
  3. Mysql表结构升级_mysql表结构升级时根据字段是否存在执行相应操作
  4. VTK:可视化之QuadraticSurface
  5. vue --- 购物车页面
  6. Apache Ivy 2.5.0发布
  7. 疫情攻坚战“分秒必争” 宜搭免费开放疫情相关应用
  8. Qt5制作icon图标文件和发布程序简易介绍
  9. ICS Pwn2Own 2022迈阿密黑客大赛的目标和奖金公布
  10. 又被分治题卡住好几个小时!用最笨的方法搞懂分治法边界,告别死循环!
  11. 2019白金之星 第一次初赛 第一题 Polynomial
  12. origin8.1中文乱码设置方法
  13. 立体栅格地图_高精地图之3D栅格地图的应用
  14. 谷歌大牛Jeff Dean亲自撰文:深度学习研究的黄金十年
  15. 【Spring Boot】——集成JSON工具
  16. 服务端基础设施开发----整合thumbnailator编写图片插件
  17. Vue实现仿微信,如飘柔般顺滑的页面转场动画
  18. OpenCV-Python图形图像处理专栏文章目录
  19. obs-shaderfilter滤镜
  20. 修改字段类型 Alter table 表名 modify 字段名 字段类型mysql数据库概念及入门语句...

热门文章

  1. 11111111庄子
  2. WordPress建站详细流程,WordPress入门
  3. 控制台There is no getter for property named id in class java.lang.Integer问题解决
  4. datagrip和idea查询数据库 ctrl+enter 查询快捷键设置
  5. 无线通信使用的电磁波频率范围和波段
  6. 我开发了一个AI网站,速速围观,文末全是福利
  7. 小妹使用栈实现计算器(上)
  8. 受累光伏行业低迷“旧账” 福斯特计提资产减值准备
  9. 基于MicroPython的ESP32开发
  10. [安卓开发Android][叠层 层叠 卡片效果]RecyclerView与CardView的混合使用