一套MyBatis+oracle+servlet+jQuery+tomcat实现的增、删、改、查、分页、动态条件查询,希望能够给初学者带来便利,提高新手的能力。
一、项目结构
二、配置文件
1、 MyBatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="org.yuntu.entity.Emp" alias="Emp"/>
<typeAlias type="org.yuntu.entity.Dept" alias="Dept"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/yuntu/dao/EmpDaoMapper.xml"/>
<mapper resource="org/yuntu/dao/DeptDaoMapper.xml"/>
</mappers>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>DeptServlet</servlet-name>
<servlet-class>org.yuntu.web.DeptServlet</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>EmpServlet</servlet-name>
<servlet-class>org.yuntu.web.EmpServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DeptServlet</servlet-name>
<url-pattern>/DeptServlet.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>EmpServlet</servlet-name>
<url-pattern>/EmpServlet.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
三、实体类
1、emp
package org.yuntu.entity;
import java.util.Date;
public class Emp {
private Integer empno;
private String ename;
private String job;
private Integer mgr;
private Date hiredate;
private Double sal;
private Double comm;
private Integer deptno;
private Dept dept;
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Integer getMgr() {
return mgr;
}
public void setMgr(Integer mgr) {
this.mgr = mgr;
}
public Date getHiredate() {
return hiredate;
}
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
}
public Double getSal() {
return sal;
}
public void setSal(Double sal) {
this.sal = sal;
}
public Double getComm() {
return comm;
}
public void setComm(Double comm) {
this.comm = comm;
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public Emp(Integer empno, String ename, String job, Integer mgr,
Date hiredate, Double sal, Double comm, Integer deptno) {
super();
this.empno = empno;
this.ename = ename;
this.job = job;
this.mgr = mgr;
this.hiredate = hiredate;
this.sal = sal;
this.comm = comm;
this.deptno = deptno;
}
public Emp() {
super();
}
}
2、dept
package org.yuntu.entity;
public class Dept {
private Integer deptno;
private String dname;
private String location;
private Emp emps;
public Emp getEmps() {
return emps;
}
public void setEmps(Emp emps) {
this.emps = emps;
}
public Integer getDeptno() {
return deptno;
}
public void setDeptno(Integer deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public Dept(Integer deptno, String dname, String location) {
super();
this.deptno = deptno;
this.dname = dname;
this.location = location;
}
public Dept() {
super();
}
}
四、dao接口
1、EmpDao
package org.yuntu.dao;
import java.util.List;
import java.util.Map;
import org.yuntu.entity.Emp;
public interface EmpDao {
public abstract List<Emp> findAllEmps();
public abstract Emp findOneEmp(Integer empno);
public abstract boolean addEmp(Emp emp);
public abstract boolean delete(Integer empno);
public abstract boolean update(Emp emp);
public abstract List<Emp> findByQuery(Map<String,Object> map);
public abstract Integer maxEmpNo();
public abstract Integer count(Map<String,Object> map);
}
2、EmpDao 接口映射 EmpDaoMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.yuntu.dao.EmpDao">
<!-- resultMap:给实体类加载映射 -->
<resultMap type="org.yuntu.entity.Emp" id="EmpResultMap">
<id property="empno" column="EMPNO"/>
<result property="ename" column="ENAME"/>
<result property="job" column="JOB"/>
<result property="mgr" column="MGR"/>
<result property="hiredate" column="HIREDATE"/>
<result property="sal" column="SAL"/>
<result property="comm" column="COMM"/>
<result property="deptno" column="DEPTNO"/>
<association property="dept" javaType="org.yuntu.entity.Dept">
<id property="deptno" column="DEPTNO"/>
<result property="dname" column="DNAME"/>
<result property="location" column="LOC"/>
</association>
</resultMap>
<select id="count" resultType="Integer">
select count(*) from emp e inner join dept d on e.deptno=d.deptno
<where>
<if test="eename!=null">
e.ename LIKE #{eename}
</if>
<if test="ehiredate!=null">
and e.hiredate<![CDATA[>]]>to_date(#{ehiredate},'yyyy-MM-dd')
</if>
<if test="edname!=null">
and d.dname LIKE CONCAT(CONCAT('%',#{edname}),'%')
</if>
</where>
</select>
<select id="maxEmpNo" resultType="Integer">
select max(empno) from emp
</select>
<!-- parameterType="map" map大写小写都可以 -->
<select id="findByQuery" parameterType="map" resultMap="EmpResultMap">
SELECT * FROM (
SELECT ed.*,ROWNUM rn FROM
(SELECT * FROM emp e INNER JOIN dept d ON e.deptno=d.deptno
<where>
<if test="eename!=null">
e.ename LIKE #{eename}
</if>
<if test="ehiredate!=null">
and e.hiredate<![CDATA[>]]>to_date(#{ehiredate},'yyyy-MM-dd')
</if>
<if test="edname!=null">
and d.dname LIKE CONCAT(CONCAT('%',#{edname}),'%')
</if>
</where>
) ed) de
WHERE de.rn<![CDATA[>]]>#{pageIndex1} AND de.rn<![CDATA[<]]>=#{pageIndex2}
</select>
<select id="findAllEmps" resultMap="EmpResultMap">
select*from emp
</select>
<select id="findOneEmp" parameterType="Integer" resultMap="EmpResultMap">
select*from emp where empno=#{empno}
</select>
<insert id="addEmp" parameterType="Emp">
insert into emp
(empno,ename,job,mgr,hiredate,sal,comm,deptno)
values (#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{deptno})
</insert>
<delete id="delete" parameterType="Integer">
DELETE FROM emp WHERE empno=#{empno}
</delete>
<!-- 为避免修改时,将为传入的参数在数据库变成空值:
1、在update使用<Set>
<if test=""></if>
</set>
2、把数据传到实体类
-->
<update id="update" parameterType="Emp">
update emp
<set>
<if test="ename!=null">ename=#{ename},</if>
<if test="job!=null">job=#{job},</if>
<if test="mgr!=null">mgr=#{mgr},</if>
<if test="hiredate!=null">hiredate=#{hiredate},</if>
<if test="sal!=null">sal=#{sal},</if>
<if test="comm!=null">comm=#{comm},</if>
<if test="deptno!=null">deptno=#{deptno}</if>
</set>
where empno=#{empno}
<!--update emp
set ename=#{ename},job=#{job},mgr=#{mgr},hiredate=#{hiredate},sal=#{sal},
comm=#{comm},deptno=#{deptno}
where empno=#{empno}
--></update>
</mapper>
3、DeptDao
package org.yuntu.dao;
import java.util.List;
import org.yuntu.entity.Dept;
public interface DeptDao {
public abstract List<Dept> findAllInfo();
}
4、DeptDao映射文件 DeptDaoMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.yuntu.dao.DeptDao">
<resultMap type="Dept" id="DeptResultMap">
<id property="deptno" column="DEPTNO"/>
<result property="dname" column="DNAME"/>
<result property="location" column="LOC"/>
<collection property="emps" ofType="org.yuntu.entity.Emp">
<id property="empno" column="EMPNO"/>
<result property="ename" column="ENAME"/>
<result property="job" column="JOB"/>
<result property="mgr" column="MGR"/>
<result property="hiredate" column="HIREDATE"/>
<result property="sal" column="SAL"/>
<result property="comm" column="COMM"/>
<result property="deptno" column="DEPTNO"/>
</collection>
</resultMap>
<select id="findAllInfo" resultType="Dept">
select*from dept
</select>
</mapper>
5、EmpDaoImpl 接口实现类
package org.yuntu.dao.Impl;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.transaction.Transaction;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.yuntu.dao.EmpDao;
import org.yuntu.entity.Emp;
import org.yuntu.util.MyBatisUtil;
public class EmpDaoImpl implements EmpDao{
public List<Emp> findAllEmps() {
String resource="MyBatis-config.xml";
InputStream in;
SqlSessionFactoryBuilder builder;
SqlSessionFactory sf;
SqlSession session = null;
List<Emp> list=null;
try {
in=Resources.getResourceAsStream(resource);
builder=new SqlSessionFactoryBuilder();
sf=builder.build(in);
session=sf.openSession();
list=session.selectList("findAllEmps");
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return list;
}
public Emp findOneEmp(Integer empno) {
return MyBatisUtil.openSession().selectOne("findOneEmp", empno);
}
public boolean addEmp(Emp emp) {
boolean flag=false;
SqlSession session=null;
try {
session=MyBatisUtil.openSession();
session.insert("addEmp",emp);
session.commit();
flag=true;
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return flag;
}
public boolean delete(Integer empno) {
boolean flag=true;
SqlSession session=null;
try {
session=MyBatisUtil.openSession();
session.delete("delete", empno);
session.commit();
flag=true;
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return flag;
}
public boolean update(Emp emp) {
boolean flag=false;
SqlSession session=null;
try {
session=MyBatisUtil.openSession();
session.update("update", emp);
session.commit();
flag=true;
} catch (Exception e) {
e.printStackTrace();
}finally{
session.close();
}
return flag;
}
public List<Emp> findByQuery(Map<String, Object> map) {
return MyBatisUtil.openSession().selectList("findByQuery", map);
}
public Integer maxEmpNo() {
return MyBatisUtil.openSession().selectOne("maxEmpNo");
}
public Integer count(Map<String,Object> map) {
return MyBatisUtil.openSession().selectOne("count",map);
}
}
6、DeptDaoImpl 接口实现类
package org.yuntu.dao.Impl;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.yuntu.dao.DeptDao;
import org.yuntu.entity.Dept;
import org.yuntu.util.MyBatisUtil;
public class DeptDaoImpl implements DeptDao{
public List<Dept> findAllInfo() {
SqlSession session=MyBatisUtil.openSession();
List<Dept> depts = null;
try {
depts=session.selectList("findAllInfo");
} catch (Exception e) {
e.printStackTrace();
}
return depts;
}
}
五、编写工具类util
1、MyBatisUtil
package org.yuntu.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
public static final ThreadLocal<SqlSession> sessionTL = new ThreadLocal<SqlSession>();
static String resource="MyBatis-config.xml";
static InputStream in;
static SqlSessionFactoryBuilder builder;
public static SqlSessionFactory sf = null;
static {
try {
in=Resources.getResourceAsStream(resource);
builder=new SqlSessionFactoryBuilder();
sf=builder.build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession openSession() {
SqlSession session = sessionTL.get();
if (session == null) {
try {
session = sf.openSession();
sessionTL.set(session);
} catch (Exception e) {
e.printStackTrace();
}
}
return session;
}
public static void closeSession() {
SqlSession session = sessionTL.get();
if (session != null) {
session.close();
sessionTL.set(null);
}
}
}
2、日期格式转换类
package org.yuntu.function;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateSwitch {
public static Date switchDate(String str){
Date date=null;
try {
date=new SimpleDateFormat("yyyy-MM-dd").parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
六、编写web类
1、EmpServlet
package org.yuntu.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.yuntu.dao.Impl.EmpDaoImpl;
import org.yuntu.entity.Emp;
import org.yuntu.function.DateSwitch;
public class EmpServlet extends HttpServlet {
EmpDaoImpl empDao=new EmpDaoImpl();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String method=request.getParameter("method");
if(method.equals("addEmp")){
addEmp(request, response);
}else if(method.equals("maxEmpNo")){
int num=empDao.maxEmpNo();
request.setAttribute("maxEmpNo", num);
request.getRequestDispatcher("add.jsp").forward(request, response);
}else if(method.equals("findEmps")){
findEmps(request, response);
}else if(method.equals("deleteEmp")){
deleteEmp(request, response);
}else if(method.equals("toUpdateEmp")){
int empno=Integer.parseInt(request.getParameter("id"));
System.out.println(empno);
Emp emp=empDao.findOneEmp(empno);
request.setAttribute("emp", emp);
request.getRequestDispatcher("update.jsp").forward(request, response);
}
}
private void deleteEmp(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String empno=request.getParameter("id");
boolean flag=empDao.delete(Integer.parseInt(empno));
if(flag){
request.getRequestDispatcher("index.jsp").forward(request, response);
}else{
response.sendRedirect("index.jsp");
}
}
private void findEmps(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
Map<String, Object> map=new HashMap<String, Object>();
String dname=request.getParameter("dname");
System.out.println(dname);
String hiredate=request.getParameter("hiredate");
String ename=request.getParameter("ename");
if(dname!=null&&dname!=""){
map.put("edname", dname);
}
if(hiredate!=null&&hiredate!=""){
map.put("ehiredate", hiredate);
}
if(ename!=null&&ename!=""){
map.put("eename", "%"+ename+ "%");
}
String pageIndex = null;
String pageNo1 = request.getParameter("pageNo");
if (pageNo1 != null) {
pageIndex = pageNo1;
} else {
pageIndex = request.getParameter("pageIndex");
}
if (pageIndex == null) {
pageIndex = "1";
}
int pageNo = Integer.parseInt(pageIndex);
int totalCount =empDao.count(map);
int pageSize = 4;
Integer totalPageCount = totalCount%pageSize== 0 ? (totalCount / pageSize)
: (totalCount /pageSize + 1);
int pageIndex1=pageSize*(pageNo-1);
int pageIndex2=pageSize*pageNo;
map.put("pageIndex1", pageIndex1);
map.put("pageIndex2", pageIndex2);
request.setAttribute("dname", dname);
request.setAttribute("hiredate", hiredate);
request.setAttribute("ename", ename);
List<Emp> emps=empDao.findByQuery(map);
request.setAttribute("totalPageCount", totalPageCount);
request.setAttribute("pageIndex", pageNo);
request.setAttribute("emps", emps);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
private void addEmp(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String empno=request.getParameter("empno");
String ename=request.getParameter("ename");
String job=request.getParameter("job");
String mgr=request.getParameter("mgr");
String hiredate=request.getParameter("hiredate");
String sal=request.getParameter("sal");
String comm=request.getParameter("comm");
String deptno=request.getParameter("deptno");
Emp emp=new Emp(Integer.parseInt(empno),ename, job, Integer.parseInt(mgr) ,DateSwitch.switchDate(hiredate),
Double.parseDouble(sal) , Double.parseDouble(comm) , Integer.parseInt(deptno));
boolean flag=empDao.addEmp(emp);
if(flag){
request.getRequestDispatcher("index.jsp").forward(request, response);
}else{
response.sendRedirect("add.jsp");
}
}
}
2、DeptServlet
package org.yuntu.web;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
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 org.yuntu.dao.Impl.DeptDaoImpl;
import org.yuntu.entity.Dept;
public class DeptServlet extends HttpServlet {
DeptDaoImpl deptDao=new DeptDaoImpl();
HttpSession session=null;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String method=request.getParameter("method");
if(method.equals("findAllInfo")){
List<Dept> depts=deptDao.findAllInfo();
session=request.getSession();
session.setAttribute("depts", depts);
response.sendRedirect("add.jsp");
}
}
}
七、编写jsp页面
1、index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<style type="text/css">
div{
margin:0px auto;
}
a{
text-decoration:none;
}
a:hover{
text-decoration:underline;
}
#head,#body,#foot{
width:800px;
}
li{
list-style-type:none;
float:left;
}
#body{
}
#body td{
width:120px;
padding:20px;
text-align:center;
}
.add{
float:none;
}
</style>
</head>
<body>
<c:if test="${empty requestScope.emps}">
<c:redirect url="EmpServlet.do?method=findEmps"></c:redirect>
</c:if>
<form action="EmpServlet.do?method=findEmps" method="post">
<div>
<div id="head">
<ul>
<li>部门:<input type="text" value="${requestScope.dname}" name="dname"/></li>
<li>姓名:<input type="text" value="${requestScope.ename}" name="ename"/></li>
<li>入职时间:<input type="text" value="${requestScope.hiredate}" name="hiredate"/></li>
<li ><a href="add.jsp">添加</a></li>
<li class="add"><input type="submit" value="查询"/></li>
</ul>
</div>
<div id="body">
<table border="1px" cellspacing="0" cellpadding="0">
<tr><td>姓名</td><td>部门</td><td>入职时间</td><td>职位</td><td>操作</td></tr>
<c:forEach items="${requestScope.emps}" var="emp">
<tr><td>${emp.ename}</td><td>${emp.dept.dname}</td><td>${emp.hiredate}</td><td>${emp.job}</td>
<td><a href="EmpServlet.do?method=toUpdateEmp&id=${emp.empno}">更新</a> <a href="EmpServlet.do?method=deleteEmp&id=${emp.empno}">删除</a></td></tr>
</c:forEach>
</table>
</div>
<div id="foot">`
<li>${requestScope.pageIndex}/${requestScope.totalPageCount}</li>
<c:if test="${requestScope.pageIndex>1}">
<li><a href="EmpServlet.do?method=findEmps">首页</a></li>
<li><a href="EmpServlet.do?method=findEmps&pageIndex=${requestScope.pageIndex-1}">上一页</a></li>
</c:if>
<%
Integer pageCount=(Integer)request.getAttribute("totalPageCount");
%>
<%
for(int x=1;x<=pageCount;x++){
%>
<li><a href="EmpServlet.do?method=findEmps&pageIndex=<%=x %>"> <%=x %> </a></li>
<%
}
%>
<c:if test="${requestScope.pageIndex<requestScope.totalPageCount}">
<li><a href="EmpServlet.do?method=findEmps&pageIndex=${requestScope.pageIndex+1}">下一页</a></li>
<li><a href="EmpServlet.do?method=findEmps&pageIndex=${requestScope.totalPageCount}">尾页</a></li>
</c:if>
</div>
</div>
</form>
</body>
</html>
2、add.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'add.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<style type="text/css">
div,table{
margin:0px auto;
}
td{
width:200px;
padding:15px;
text-align:center;
}
</style>
</head>
<body>
<c:if test="${empty sessionScope.depts}">
<c:redirect url="DeptServlet.do?method=findAllInfo"></c:redirect>
</c:if>
<c:if test="${empty requestScope.maxEmpNo}">
<c:redirect url="EmpServlet.do?method=maxEmpNo"></c:redirect>
</c:if>
<div>
<form method="post" action="EmpServlet.do?method=addEmp">
<input type="hidden" name="empno" value="${requestScope.maxEmpNo+1}"/>
<table border="1px" cellspacing="0" cellpadding="0">
<tr><td colspan="2">添加员工</td></tr>
<tr><td>姓名</td><td><input type="text" name="ename" value=""/></td></tr>
<tr><td>职位</td><td><input type="text" name="job" value=""/></td></tr>
<tr><td>职位编号</td><td><input type="text" name="mgr" value=""/></td></tr>
<tr><td>入职日期</td><td><input type="text" name="hiredate" value=""/></td></tr>
<tr><td>工资</td><td><input type="text" name="sal" value=""/></td></tr>
<tr><td>奖金</td><td><input type="text" name="comm" value=""/></td></tr>
<tr><td>部门</td><td>
<select name="deptno">
<c:forEach items="${sessionScope.depts}" var="dept">
<option value="${dept.deptno}">${dept.dname}</option>
</c:forEach>
</select>
</td></tr>
<tr><td colspan="2"><input type="submit" name="" value="提交"/>
<input type="reset" name="" value="重置"/><a href="index.jsp">返回首页</a></td></tr>
</table>
</form>
</div>
</body>
</html>
3、update.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'add.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<style type="text/css">
div,table{
margin:0px auto;
}
td{
width:200px;
padding:15px;
text-align:center;
}
</style>
</head>
<body>
<c:if test="${empty sessionScope.depts}">
<c:redirect url="DeptServlet.do?method=findAllInfo"></c:redirect>
</c:if>
<div>
<form method="post" action="EmpServlet.do?method=updateEmp">
<input type="hidden" name="empno" value="${requestScope.emp.empno}"/>
<table border="1px" cellspacing="0" cellpadding="0">
<tr><td colspan="2">更新员工信息</td></tr>
<tr><td>姓名</td><td><input type="text" name="ename" value="${requestScope.emp.ename}"/></td></tr>
<tr><td>职位</td><td><input type="text" name="job" value="${requestScope.emp.job}"/></td></tr>
<tr><td>职位编号</td><td><input type="text" name="mgr" value="${requestScope.emp.mgr}"/></td></tr>
<tr><td>入职日期</td><td><input type="text" name="hiredate" value="${requestScope.emp.hiredate}"/></td></tr>
<tr><td>工资</td><td><input type="text" name="sal" value="${requestScope.emp.sal}"/></td></tr>
<tr><td>奖金</td><td><input type="text" name="comm" value="${requestScope.emp.comm}"/></td></tr>
<tr><td>部门</td><td>
<select name="deptno">
<c:set var="no" value="${requestScope.emp.deptno}"></c:set>
<c:forEach items="${sessionScope.depts}" var="dept">
<c:set var="deptno" value="${dept.deptno}"></c:set>
<c:choose>
<c:when test="${deptno==no}">
<option value="${dept.deptno}" selected>${dept.dname}</option>
</c:when>
<c:otherwise>
<option value="${dept.deptno}">${dept.dname}</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</td></tr>
<tr><td colspan="2"><input type="submit" name="" value="提交"/>
<input type="reset" name="" value="重置"/><a href="index.jsp">返回首页</a></td></tr>
</table>
</form>
</div>
</body>
</html>