文章目录
- 1.项目需求
- 2.项目搭建
- 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;
}
@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;
}
}
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;
}
@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;
}
}
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();
@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;
}
}
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();
@Override
public 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;
}
@Override
public long selectCount() {
try {
long count = queryRunner.query(DbUtils.getConnection(),"select count(*) from emp;"
,new ScalarHandler<>());
return count;
} 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 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;
}
@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 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();
@Override
public 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();
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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;
}
@Override
public 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 {
@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() {}
}
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);
//跳转到查询所有员工的Controller
response.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){ //第一次登录过来 这个参数为null
pageIndex = "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 »"/>
</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> <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
- DAO