一个不错的例子值得细细品味:
下面按照包顺序将代码贴出来供大家参考:
IEmpDAO
package org.lzch.dao; import java.util.List; import org.lzch.vo.Emp; public interface IEmpDAO { public boolean doCreate(Emp emp)throws Exception; public boolean doUpdate(Emp emp)throws Exception; public boolean doDelete(int empno)throws Exception; public List findAll(int currentPage,int lineSize,String keyword)throws Exception; public int getAllCount(String keyword)throws Exception; public Emp findEmpById(int empno)throws Exception; public boolean getAllEname(String ename)throws Exception; }
EmpDAOImpl
package org.lzch.dao.impl; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import org.lzch.dao.IEmpDAO; import org.lzch.vo.Emp; public class EmpDAOImpl implements IEmpDAO { private Connection conn=null; public EmpDAOImpl(Connection conn){ this.conn=conn; } //添加用户信息 public boolean doCreate(Emp emp) throws Exception { // TODO Auto-generated method stub boolean flag=false; PreparedStatement pstmt=null; try{ this.conn.setAutoCommit(false); //手动提交 String sql="INSERT INTO emp1(empno,ename,job,hiredate,sal,comm,photo)VALUES(?,?,?,?,?,?,?)"; pstmt=this.conn.prepareStatement(sql); pstmt.setInt(1, emp.getEmpno()); pstmt.setString(2, emp.getEname()); pstmt.setString(3, emp.getJob()); pstmt.setDate(4, new java.sql.Date(emp.getHiredate().getTime())); pstmt.setFloat(5, emp.getSal()); pstmt.setFloat(6, emp.getComm()); pstmt.setString(7, emp.getPhoto()); int count=pstmt.executeUpdate(); this.conn.commit(); //提交 if(count>0){ flag=true; } }catch(Exception e){ this.conn.rollback(); }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return flag; } //删除 public boolean doDelete(int empno) throws Exception { // TODO Auto-generated method stub boolean flag=false; PreparedStatement pstmt=null; try{ String sql="DELETE FROM emp1 WHERE empno=?"; pstmt=this.conn.prepareStatement(sql); pstmt.setInt(1, empno); int count=pstmt.executeUpdate(); if(count>0){ flag=true; } }catch(Exception e){ throw e; }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return flag; } //更新 public boolean doUpdate(Emp emp) throws Exception { // TODO Auto-generated method stub boolean flag=false; PreparedStatement pstmt=null; try{ String sql="UPDATE emp1 SET ename=?,job=?,hiredate=?,sal=?,comm=?,photo=? WHERE empno=?"; pstmt=this.conn.prepareStatement(sql); pstmt.setString(1, emp.getEname()); pstmt.setString(2, emp.getJob()); pstmt.setDate(3, new java.sql.Date(emp.getHiredate().getTime())); pstmt.setFloat(4, emp.getSal()); pstmt.setFloat(5, emp.getComm()); pstmt.setString(6, emp.getPhoto()); pstmt.setInt(7, emp.getEmpno()); int count=pstmt.executeUpdate(); System.out.println("emp_UPDATE_SQL==="+sql); if(count>0){ flag=true; } }catch(Exception e){ throw e; }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return flag; } //查询全部信息 public List findAll(int currentPage, int lineSize, String keyword) throws Exception { // TODO Auto-generated method stub List all=new ArrayList(); PreparedStatement pstmt=null; String sql=null; if(keyword==null||"".equals(keyword)){ sql="SELECT TOP "+lineSize+" empno,ename,job,hiredate,sal,comm,photo FROM " + "(SELECT TOP "+lineSize+" empno,ename,job,hiredate,sal,comm,photo FROM " + "(SELECT TOP "+currentPage*lineSize+" * FROM emp1 ORDER BY empno ASC)temptlb1 ORDER BY empno DESC)temptlb2 ORDER BY empno asc"; }else{ sql="SELECT empno,ename,job,hiredate,sal,comm,photo FROM emp1 WHERE empno LIKE '%"+keyword+"%' " + "OR ename LIKE '%"+keyword+"%' OR job LIKE '%"+keyword+"%' OR hiredate LIKE '%"+keyword+"%'" + " OR sal LIKE '%"+keyword+"%' OR comm LIKE '%"+keyword+"%' "; } try{ pstmt=this.conn.prepareStatement(sql); // pstmt.setString(1, "%"+keyword+"%"); // pstmt.setString(2, "%"+keyword+"%"); // pstmt.setString(3, "%"+keyword+"%"); // pstmt.setString(4, "%"+keyword+"%"); // pstmt.setString(5, "%"+keyword+"%"); // pstmt.setString(6, "%"+keyword+"%"); System.out.println(sql); ResultSet rs=pstmt.executeQuery(); Emp emp=null; while(rs.next()){ emp=new Emp(); emp.setEmpno(rs.getInt(1)); emp.setEname(rs.getString(2)); emp.setJob(rs.getString(3)); emp.setHiredate(rs.getDate(4)); emp.setSal(rs.getFloat(5)); emp.setComm(rs.getFloat(6)); emp.setPhoto(rs.getString(7)); all.add(emp); } }catch(Exception e){ throw e; }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return all; } //按ID查询 public Emp findEmpById(int empno) throws Exception { // TODO Auto-generated method stub Emp emp=null; PreparedStatement pstmt=null; try{ String sql="SELECT empno,ename,job,hiredate,sal,comm,photo FROM emp1 WHERE empno=?"; pstmt=this.conn.prepareStatement(sql); pstmt.setInt(1, empno); ResultSet rs=pstmt.executeQuery(); if(rs.next()){ emp=new Emp(); emp.setEmpno(rs.getInt(1)); emp.setEname(rs.getString(2)); emp.setJob(rs.getString(3)); emp.setHiredate(rs.getDate(4)); emp.setSal(rs.getFloat(5)); emp.setComm(rs.getFloat(6)); emp.setPhoto(rs.getString(7)); } }catch(Exception e){ throw e; }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return emp; } //查询数据表里 记录集 public int getAllCount(String keyword) throws Exception { // TODO Auto-generated method stub int count=0; PreparedStatement pstmt=null; try{ String sql="SELECT COUNT(empno) FROM emp1 WHERE empno LIKE ? OR ename LIKE ? " + "OR job LIKE ? OR hiredate LIKE ? OR sal LIKE ? OR comm LIKE ? OR photo LIKE ? "; pstmt=this.conn.prepareStatement(sql); pstmt.setString(1, "%"+keyword+"%"); pstmt.setString(2, "%"+keyword+"%"); pstmt.setString(3, "%"+keyword+"%"); pstmt.setString(4, "%"+keyword+"%"); pstmt.setString(5, "%"+keyword+"%"); pstmt.setString(6, "%"+keyword+"%"); pstmt.setString(7, "%"+keyword+"%"); ResultSet rs=pstmt.executeQuery(); if(rs.next()){ count=rs.getInt(1); //返回数据表里的所有数据集 geeInt(1):方法,查询表里所有数据集 } }catch(Exception e){ throw e; }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return count; } //验证用户名是否存在 public boolean getAllEname(String ename)throws Exception{ boolean flag=false; PreparedStatement pstmt=null; try{ String sql="SELECT COUNT(ename) FROM emp1 WHERE ename=?"; pstmt=this.conn.prepareStatement(sql); pstmt.setString(1, ename); ResultSet rs=pstmt.executeQuery(); if(rs.next()){ if(rs.getInt(1)>0){ flag=true; System.out.println("impl===flag=="+rs.getInt(1)); System.out.println("impl===flag=="+flag); }else{ flag=false; } } }catch(Exception e){ throw e; }finally{ try{ pstmt.close(); }catch(Exception e){ throw e; } } return flag; } }
EmpDAOProxy
package org.lzch.dao.proxy; import java.util.List; import org.lzch.dao.IEmpDAO; import org.lzch.dao.impl.EmpDAOImpl; import org.lzch.dbc.DatabaseConnection; import org.lzch.vo.Emp; public class EmpDAOProxy implements IEmpDAO { private DatabaseConnection dbc=null; private IEmpDAO dao=null; int count=0; public EmpDAOProxy(){ try{ this.dbc=new DatabaseConnection(); }catch(Exception e){ e.printStackTrace(); } this.dao=new EmpDAOImpl(this.dbc.getConnection()); } public boolean doCreate(Emp emp) throws Exception { // TODO Auto-generated method stub boolean flag=false; try{ if(this.dao.findEmpById(emp.getEmpno())==null){ flag=this.dao.doCreate(emp); //调用真实主题类 } }catch(Exception e){ throw e; }finally{ try{ this.dbc.closeConnection(); }catch(Exception e){ throw e; } } return flag; } public boolean doDelete(int empno) throws Exception { // TODO Auto-generated method stub boolean flag=false; try{ flag=this.dao.doDelete(empno); //调用真实主题类 }catch(Exception e){ throw e; }finally{ try{ this.dbc.closeConnection(); }catch(Exception e){ throw e; } } return flag; } public boolean doUpdate(Emp emp) throws Exception { // TODO Auto-generated method stub boolean flag=false; try{ flag=this.dao.doUpdate(emp); //调用真实主题类 }catch(Exception e){ throw e; }finally{ try{ this.dbc.closeConnection(); }catch(Exception e){ throw e; } } return flag; } public List findAll(int currentPage, int lineSize, String keyword) throws Exception { // TODO Auto-generated method stub List all=null; try{ all=this.dao.findAll(currentPage, lineSize, keyword); //调用真实主题类 count=this.dao.getAllCount(keyword); //取得最大记录数 //调用真实主题类 }catch(Exception e){ throw e; }finally{ try{ this.dbc.closeConnection(); }catch(Exception e){ throw e; } } return all; } public Emp findEmpById(int empno) throws Exception { // TODO Auto-generated method stub Emp emp=null; try{ emp=this.dao.findEmpById(empno); //调用真实主题类 }catch(Exception e){ throw e; }finally{ try{ this.dbc.closeConnection(); }catch(Exception e){ throw e; } } return emp; } public int getAllCount(String keyword) throws Exception { // TODO Auto-generated method stub return this.count; } public boolean getAllEname(String ename)throws Exception{ boolean flag=false; try{ flag=this.dao.getAllEname(ename); }catch(Exception e){ throw e; }finally{ try{ this.dbc.closeConnection(); }catch(Exception e){ throw e; } } return flag; } }
DatabaseConnection
package org.lzch.dbc; import java.sql.Connection; import java.sql.DriverManager; public class DatabaseConnection { private static final String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static final String DBURL="jdbc:sqlserver://localhost:1433;DatabaseName=login"; private static final String DBUSER="sa"; private static final String DBPASSWORD="000000"; private Connection conn=null; public DatabaseConnection(){ try{ Class.forName(DBDRIVER); this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); }catch(Exception e){ e.printStackTrace(); } } public Connection getConnection(){ return this.conn; } public void closeConnection(){ if(this.conn!=null){ try{ this.conn.close(); }catch(Exception e){ e.printStackTrace(); } } } }
DAOFactory
package org.lzch.factory; import org.lzch.dao.IEmpDAO; import org.lzch.dao.proxy.EmpDAOProxy; public class DAOFactory { public static IEmpDAO getIEmpDAOInstance(){ return new EmpDAOProxy(); } }
EmpEncodingFilter
package org.lzch.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EmpEncodingFilter implements Filter { private String charset=null; public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub req.setCharacterEncoding(this.charset); chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub this.charset=config.getInitParameter("charset"); } }
EmpServlet
package org.lzch.servlet; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.net.URLDecoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.lzch.factory.DAOFactory; import org.lzch.util.IPTimeStamp; import org.lzch.vo.Emp; import com.jspsmart.upload.SmartUpload; public class EmpServlet extends HttpServlet { public void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ String p=req.getParameter("p"); if(p.equals("emp_insert")){ this.doCreate(req, resp); } if(p.equals("doUpdatePage")){ this.doUpdatePage(req, resp); } if(p.equals("doUpdate")){ this.doUpdate(req, resp); } if(p.equals("doDelete")){ this.doDelete(req, resp); } if(p.equals("getAllEname")){ this.getAllEname(req, resp); } } public void doCreate(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ List all=new ArrayList(); SmartUpload smart=new SmartUpload(); Emp emp=new Emp(); int empno=0; String ename=null; String job=null; Date hiredate=null; float sal=0.0f; float comm=0.0f; String photo="nophoto.jpg"; try{ smart.initialize(this.getServletConfig(),req,resp); //初始化上传 smart.upload(); //准备上传 empno=Integer.parseInt(smart.getRequest().getParameter("empno")); ename=smart.getRequest().getParameter("ename"); job=smart.getRequest().getParameter("job"); hiredate=new SimpleDateFormat("yyyy-mm-dd").parse(smart.getRequest().getParameter("hiredate")); sal=Float.parseFloat(smart.getRequest().getParameter("sal")); comm=Float.parseFloat(smart.getRequest().getParameter("comm")); if(smart.getFiles().getFile(0).getSize()>0){ //判断是否有上传文件 IPTimeStamp its=new IPTimeStamp(req.getRemoteAddr()); //拼凑上传文件名称 photo=its.getIPTimeStampRand()+"."+smart.getFiles().getFile(0).getFileExt(); } emp.setEmpno(empno); emp.setEname(ename); emp.setJob(job); emp.setHiredate(hiredate); emp.setSal(sal); emp.setComm(comm); emp.setPhoto(photo); if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){ if(smart.getFiles().getFile(0).getSize()>0){ //添加成功,保存上传文件 smart.getFiles().getFile(0).saveAs(getServletContext().getRealPath("/")+"jsp/upload/"+photo); } all.add("职员信息添加成功!"); }else{ all.add("职员信息添加失败!"); } }catch(Exception e){ e.printStackTrace(); } req.setAttribute("infoInsert", all); req.getRequestDispatcher("jsp/admin/emp/emp_insert_do.jsp").forward(req, resp); } public void doUpdatePage(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ int empno=0; Emp emp=null; try{ empno=Integer.parseInt(req.getParameter("empno")); emp=DAOFactory.getIEmpDAOInstance().findEmpById(empno); }catch(Exception e){ e.printStackTrace(); } req.setAttribute("infoUpdatePage", emp); req.getRequestDispatcher("jsp/admin/emp/emp_update.jsp").forward(req, resp); } public void doUpdate(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ List all=new ArrayList(); SmartUpload smart=new SmartUpload(); Emp emp=new Emp(); int empno=0; String ename=null; String job=null; Date hiredate=null; float sal=0.0f; float comm=0.0f; String photo=smart.getRequest().getParameter("pic"); try{ smart.initialize(getServletConfig(),req,resp); //初始化上传 smart.upload(); //准备上传 empno=Integer.parseInt(smart.getRequest().getParameter("empno")); ename=smart.getRequest().getParameter("ename"); job=smart.getRequest().getParameter("job"); hiredate=new SimpleDateFormat("yyyy-mm-dd").parse(smart.getRequest().getParameter("hiredate")); sal=Float.parseFloat(smart.getRequest().getParameter("sal")); comm=Float.parseFloat(smart.getRequest().getParameter("comm")); if(smart.getFiles().getFile(0).getSize()>0){ IPTimeStamp its=new IPTimeStamp(req.getRemoteAddr()); photo=its.getIPTimeStampRand()+"."+smart.getFiles().getFile(0).getFileExt(); //拼凑上传文件名称 } emp.setEmpno(empno); emp.setEname(ename); emp.setJob(job); emp.setHiredate(hiredate); emp.setSal(sal); emp.setComm(comm); emp.setPhoto(photo); if(DAOFactory.getIEmpDAOInstance().doUpdate(emp)){ if(smart.getFiles().getFile(0).getSize()>0){ //保存上传文件 smart.getFiles().getFile(0).saveAs(getServletContext().getRealPath("/")+"jsp/upload/"+photo); } all.add("员工信息修改成功!"); }else{ all.add("员工信息修改失败!"); } }catch(Exception e){ e.printStackTrace(); } req.setAttribute("infoUpdate", all); req.getRequestDispatcher("jsp/admin/emp/emp_update_do.jsp").forward(req, resp); } public void doDelete(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ int empno=0; String photo=null; List all=new ArrayList(); try{ empno=Integer.parseInt(req.getParameter("empno")); photo=req.getParameter("photo"); System.out.println("photo=="+photo); if(DAOFactory.getIEmpDAOInstance().doDelete(empno)){ if(!(photo.equals("nophoto.jpg"))){ File f=new File(this.getServletContext().getRealPath("/")+"jsp/upload/"+photo); //找到当前文件 System.out.println("当前文件是否存在=="+f.exists()); if(f.exists()){ //判断当前文件或者文件目录是否存在,则 f.delete(); //则进行删除 } } all.add("文件删除成功!"); }else{ all.add("文件删除失败!"); } }catch(Exception e){ e.printStackTrace(); } req.setAttribute("infoDelete", all); req.getRequestDispatcher("jsp/admin/emp/emp_delete_do.jsp").forward(req, resp); } public void getAllEname(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{ req.setCharacterEncoding("gb2312"); resp.setContentType("text/html;charset=gb2312"); String ename=null; PrintWriter out=resp.getWriter(); try{ System.out.println("++++++后台取javascript传递参数++++++++"+req.getParameter("ename")); //1.String name = URLDecoder.decode("客户端传输过来的中文字符","UTF-8"); ename=URLDecoder.decode(req.getParameter("ename"),"gb2312"); System.out.println("********servlet********"+ename); if(DAOFactory.getIEmpDAOInstance().getAllEname(ename)){ out.print("true"); }else{ out.print("false"); } }catch(Exception e){ e.printStackTrace(); } } }
Test
package org.lzch.test; import java.util.Date; import org.lzch.vo.Emp; import org.lzch.factory.DAOFactory; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Emp emp=new Emp(); emp.setEmpno(79); emp.setEname("lzch"); emp.setJob("工程师"); emp.setHiredate(new Date()); emp.setSal(5555.5f); emp.setComm(350.9f); emp.setPhoto("nophoto.jpg"); try{ if(DAOFactory.getIEmpDAOInstance().doCreate(emp)){ System.out.println("插入成功!"); }else{ System.out.println("插入失败!"); } }catch(Exception e){ e.printStackTrace(); } } }
IPTimeStamp
package org.lzch.util; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; public class IPTimeStamp { private String ip=null; public IPTimeStamp(String ip){ this.ip=ip; } //上传文件命名:IP+时间戳+3位随机数 public String getIPTimeStampRand(){ StringBuffer buf=new StringBuffer(); //添加当前IP地址 if(this.ip!=null){ String str[]=this.ip.split("\\."); //进行拆分IP地址 for(int i=0;i<str.length;i++){ buf.append(this.addZero(str[i], 3)); //位数不够3位的,进行补0操作 } } //添加时间戳 buf.append(this.getTimeStamp()); //添加3为随机数 Random ran=new Random(); for(int i=0;i<3;i++){ //循环3次 buf.append(ran.nextInt(10)); //取得一位0到10之间的随机整数 } return buf.toString(); } //补0操作 public String addZero(String str,int len){ StringBuffer buf=new StringBuffer(); buf.append(str); while(buf.length()<len){ buf.insert(0, "0"); //进行添加0操作 } return buf.toString(); } //时间戳 public String getTimeStamp(){ SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmssSSS"); //取得当前时间 return sdf.format(new Date()); } }
Emp
package org.lzch.vo; import java.util.Date; public class Emp { private int empno; private String ename; private String job; private Date hiredate; private float sal; private float comm; private String photo; public float getComm() { return comm; } public void setComm(float comm) { this.comm = comm; } public int getEmpno() { return empno; } public void setEmpno(int empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getPhoto() { return photo; } public void setPhoto(String photo) { this.photo = photo; } public float getSal() { return sal; } public void setSal(float sal) { this.sal = sal; } }
emp_delete_do.jsp
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %> <%@page import="java.util.List,java.util.Iterator" %> <html> <head> <title>删除</title> </head> <script type="text/javascript"> opener.window.location.reload() ; //重新读取,刷新 function closeWin(){ window.close(); } </script> <body> <center> <h2>职员管理程序</h2> <hr> <% List all=(List)request.getAttribute("infoDelete"); Iterator iter=all.iterator(); while(iter.hasNext()){ %> <h2><%=iter.next() %></h2> <% } %> <h2><a href="#" onclick="closeWin()">关闭窗口</a></h2> </center> </body> </html>
emp_insert_do.jsp
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %> <%@page import="java.util.List,java.util.Iterator" %> <html> <head> <title>注册页面</title> </head> <script type="text/javascript"> opener.window.location.reload() ; //重新读取,刷新 function closeWin(){ window.close(); } </script> <body> <center> <h2>职员管理程序</h2> <hr> <% List all=(List)request.getAttribute("infoInsert"); Iterator iter=all.iterator(); while(iter.hasNext()){ %> <h2><%=iter.next() %></h2> <% } %> <h2><a href="#" onclick="closeWin()">关闭窗口</a></h2> <center> </body> </html>
emp_insert.jsp
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %> <html> <head> <title>职员注册页面</title> </head> <script type="text/javascript" src="../../../js/data.js"></script> <script type="text/javascript"> var xmlHttp; var flag; function createXMLHttp(){ if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); }else{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } function checkEname(ename){ createXMLHttp(); encodeURI(encodeURI(ename));//解决中文乱码问题两次编码 xmlHttp.open("POST","<%=request.getContextPath() %>/EmpServlet?p=getAllEname&ename="+ename); //设置一个请求, alert("ename="+ename); xmlHttp.onreadystatechange=checkEnameCallback; //设置请求完成之后处理的回调函数 xmlHttp.send(null); //发送请求,不传递任何参数 document.getElementById("msg").innerHTML="正在验证....."; } function checkEnameCallback(){ if(xmlHttp.readyState==4){ alert("status==="+xmlHttp.status); if(xmlHttp.status==200){ alert("responseText=="+xmlHttp.responseText); // var text=xmlHttp.responseText; //接受返回的内容 var text=xmlHttp.responseText; if(text=="true"){ flag=false; document.getElementById("msg").innerHTML="重复的用户名,请更换用户名!"; }else{ flag=true; document.getElementById("msg").innerHTML="此用户名可以注册!"; } } } } function checkForm(){ return flag; } //关闭窗口 function closeWin(){ window.close(); } </script> <body> <% request.setCharacterEncoding("gb2312"); %> <script type="text/javascript"> var xmlHttp; var flag; function createXMLHttp(){ if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); }else{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } function checkEname(ename){ createXMLHttp(); alert("ename="+ename); xmlHttp.open("POST","<%=request.getContextPath() %>/EmpServlet?p=getAllEname&ename="+ename); //设置一个请求, xmlHttp.onreadystatechange=checkEnameCallback; //设置请求完成之后处理的回调函数 xmlHttp.send(null); //发送请求,不传递任何参数 document.getElementById("msg").innerHTML="正在验证....."; } function checkEnameCallback(){ if(xmlHttp.readyState==4){ alert("status==="+xmlHttp.status); if(xmlHttp.status==200){ alert("responseText=="+xmlHttp.responseText); var text=xmlHttp.responseText; //接受返回的内容 if(text=="true"){ flag=false; document.getElementById("msg").innerHTML="重复的用户名,请更换用户名!"; }else{ flag=true; document.getElementById("msg").innerHTML="此用户名可以注册!"; } } } } function checkForm(){ return flag; } //关闭窗口 function closeWin(){ window.close(); } </script> <center> <form action="<%=request.getContextPath() %>/EmpServlet?p=emp_insert" method="post" enctype="multipart/form-data" onsubmit="return checkForm()"> <table border="1" width="80%"> <tr> <td colspan="2" align="center"><h2>添加职员</h2></td> </tr> <tr> <td>职员编号</td> <td><input type="text" name="empno"></td> </tr> <tr> <td>职员姓名</td> <td><input type="text" name="ename" onblur="checkEname(this.value)"><span id="msg"></span></td> </tr> <tr> <td>职员职位</td> <td><input type="text" name="job"></td> </tr> <tr> <td>入职日期</td> <td> <input type="text" name="hiredate" size="15" maxlength="15" onclick='popUpCalendar(this,this,"yyyy-mm-dd")' readonly="true"> </td> </tr> <tr> <td>职员工资</td> <td><input type="text" name="sal"></td> </tr> <tr> <td>职员奖金</td> <td><input type="text" name="comm"></td> </tr> <tr> <td>职员照片</td> <td> <input type="file" name="pic"><br> <font color="red" size="2">如果不想上传,可以不选!</font> </td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="提交"> <input type="reset" value="重置"> </td> </tr> </table> </form> <a href="#" onclick="closeWin()">关闭窗口</a> </center> </body> </html>
emp_list.jsp
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %> <%@page import="java.util.List,java.util.Iterator" %> <%@page import="org.lzch.vo.Emp" %> <%@page import="org.lzch.dao.proxy.EmpDAOProxy,org.lzch.dao.IEmpDAO" %> <html> <head> <title>职员查询程序</title> </head> <style> body,td{ font-size:13px; } </style> <script type="text/javascript" src="../../../js/data.js"></script> <script type="text/javascript"> function changeColor(obj,color){ obj.bgColor=color; } function goInsert(thisurl){ window.open(thisurl,"雇员管理","width=600,height=420,scrollbars=yes,resizable=yes"); } function goUpdate(thisurl){ window.open(thisurl,"雇员管理","width=600,height=420,scrollbars=yes,resizable=yes"); } function goDelete(thisurl){ window.open(thisurl,"雇员管理","width=600,height=420,scrollbars=yes,resizable=yes"); } </script> <body> <center> <% int lineSize=5; //每页显示5条记录 int currentPage=1; //当前第一页 int allRecorders=0; //显示数据表里总记录数,需要计算 List all=null; try{ // 修改页数 currentPage = Integer.parseInt(request.getParameter("cp")) ; }catch(Exception e){} try{ // 修改行数 lineSize = Integer.parseInt(request.getParameter("ls")) ; }catch(Exception e){} %> <h2>职员管理程序</h2> <hr> <% String keyword=request.getParameter("keyword"); if(keyword==null){ keyword=""; } %> <h2><a href="#" onClick="goInsert('emp_insert.jsp')">添加职员</a></h2> <% try{ IEmpDAO dao=new EmpDAOProxy(); all=dao.findAll(currentPage,lineSize,keyword); //查询全部 allRecorders=dao.getAllCount(keyword); //全部记录数 %> <jsp:include page="../split_page.jsp"> <jsp:param name="currentPage" value="<%=currentPage%>"/> <jsp:param name="lineSize" value="<%=lineSize%>"/> <jsp:param name="allRecorders" value="<%=allRecorders%>"/> <jsp:param name="keyword" value="<%=keyword%>"/> <jsp:param name="searchFlag" value="TRUE"/> <jsp:param name="lineSizeFlag" value="TRUE"/> </jsp:include> <table border="1" width="80%" cellpadding="5" cellspacing="0" bgcolor="F2F2F2"> <tr> <td>职员编号</td> <td>职员姓名</td> <td>职员职位</td> <td>入职日期</td> <td>职员工资</td> <td>职员奖金</td> <td>职员照片</td> <td>操作</td> </tr> <% Iterator iter=all.iterator(); while(iter.hasNext()){ Emp emp=(Emp)iter.next(); %> <tr onMouseOver="changeColor(this,'white')" onMouseOut="changeColor(this,'F2F2F2')"> <td><%=emp.getEmpno() %></td> <td><%=emp.getEname() %></td> <td><%=emp.getJob() %></td> <td><%=emp.getHiredate() %></td> <td><%=emp.getSal() %></td> <td><%=emp.getComm() %></td> <td><img src="../../upload/<%=emp.getPhoto() %>" width="50" height="40"></td> <td> <a href="#" onclick="goUpdate('<%=request.getContextPath() %>/EmpServlet?p=doUpdatePage&empno=<%=emp.getEmpno() %>')">修改</a> <a href="#" onclick="goDelete('<%=request.getContextPath() %>/EmpServlet?p=doDelete&empno=<%=emp.getEmpno() %>&photo=<%=emp.getPhoto() %>')">删除</a> </td> </tr> <% } %> <% }catch(Exception e){ e.printStackTrace(); } %> </table> </center> </body> </html>
emp_update_do.jsp
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %> <%@page import="java.util.List,java.util.Iterator" %> <html> <head> <title>修改</title> </head> <script type="text/javascript"> opener.window.location.reload() ; //重新读取,刷新 function closeWin(){ window.close(); } </script> <body> <center> <h2>职员管理程序</h2> <hr> <% List all=(List)request.getAttribute("infoUpdate"); Iterator iter=all.iterator(); while(iter.hasNext()){ %> <h2><%=iter.next() %></h2> <% } %> <h2><a href="#" onclick="closeWin()">关闭窗口</a></h2> </center> </body> </html>
emp_update.jsp
<%@page pageEncoding="GBK" contentType="text/html; charset=GBK" %> <%@page import="org.lzch.vo.Emp" %> <html> <head> <title>更新页面</title> </head> <script type="text/javascript" src="../../../js/data.js"></script> <script type="text/javascript"> function closeWin(){ window.close(); } </script> <body> <center> <% Emp emp=(Emp)request.getAttribute("infoUpdatePage"); if(emp!=null){ %> <form action="<%=request.getContextPath() %>/EmpServlet?p=doUpdate" method="post" enctype="multipart/form-data"> <table border="1" width="80%"> <tr> <td colspan="2" align="center"><h2>修改职员</h2></td> </tr> <tr> <td>职员编号</td> <td><%=emp.getEmpno() %></td> </tr> <tr> <td>职员姓名</td> <td><input type="text" name="ename" value="<%=emp.getEname() %>"></td> <td rowspan="6"><img src="../../upload/<%=emp.getPhoto() %>" width="100" height="155"></td> </tr> <tr> <td>职员职位</td> <td><input type="text" name="job" value="<%=emp.getJob() %>"></td> </tr> <tr> <td>入职日期</td> <td> <input type="text" name="hiredate" size="15" maxlength="15" onclick='popUpCalendar(this,this,"yyyy-mm-dd")' readonly="true" value="<%=emp.getHiredate() %>"> </td> </tr> <tr> <td>职员工资</td> <td><input type="text" name="sal" value="<%=emp.getSal() %>"></td> </tr> <tr> <td>职员奖金</td> <td><input type="text" name="comm" value="<%=emp.getComm() %>"></td> </tr> <tr> <td>职员照片</td> <td> <input type="file" name="pic"><br> <font color="red" size="2">如果不想上传,可以不选!</font> </td> </tr> <tr> <td colspan="2" align="center"> <input type="hidden" name="empno" value="<%=emp.getEmpno() %>"> <input type="hidden" name="pic" value="<%=emp.getPhoto() %>"> <input type="submit" value="提交"> <input type="reset" value="重置"> </td> </tr> </table> </form> <% } %> <a href="#" onclick="closeWin()">关闭窗口</a> </center> </body> </html>
split_page.jsp
<%@ page contentType="text/html;charset=GBK"%> <%@ page import="java.util.*"%> <%-- 只需要在需要分页的地方导入此页面即可 <jsp:include page="split_page.jsp"> <jsp:param name="currentPage" value="<%=currentPage%>"/> <jsp:param name="lineSize" value="<%=lineSize%>"/> <jsp:param name="allRecorders" value="<%=allRecorders%>"/> <jsp:param name="keyWord" value="<%=keyWord%>"/> <jsp:param name="searchFlag" value="TRUE"/> <jsp:param name="lineSizeFlag" value="TRUE"/> </jsp:include> --%> <html> <head> <title>JSP + Oracle应用</title> <style type="text/css"> body,td{ font-size:13px ; } </style> <script language="javascript"> function changeColor(obj,color){ obj.bgColor = color ; } function goInsert(thisurl){ window.open(thisurl,"雇员管理","width=600,height=420,scrollbars=yes,resizable=yes"); } function goUpdate(thisurl){ window.open(thisurl,"雇员管理","width=600,height=420,scrollbars=yes,resizable=yes"); } function goDelete(thisurl){ window.open(thisurl,"雇员管理","width=360,height=200,scrollbars=yes,resizable=yes"); } </script> </head> <body> <% // 解决提交时的中文乱码问题 request.setCharacterEncoding("GBK") ; %> <% int currentPage = 1 ; // 当前所在是第一页 int lineSize = 5 ; // 每页显示5条记录 int allRecorders = 0 ; // 总记录数,需要计算 int pageSize = 0 ; // 总页数,需要计算 int line[] = {5,10,15,20,25,30,45,50,100} ; // 分页要跳转的路径 String SPURL = "" ; // 接收查询内容 String keyWord = request.getParameter("keyWord") ; String searchFlag = "FALSE" ; String lineSizeFlag = "FALSE" ; %> <% try{ searchFlag = request.getParameter("searchFlag").toUpperCase() ; }catch(Exception e){} try{ lineSizeFlag = request.getParameter("lineSizeFlag").toUpperCase() ; }catch(Exception e){} if(keyWord==null){ keyWord = "" ; } %> <% try{ // 修改页数 currentPage = Integer.parseInt(request.getParameter("currentPage")) ; }catch(Exception e){} try{ // 修改行数 lineSize = Integer.parseInt(request.getParameter("lineSize")) ; }catch(Exception e){} try{ // 记录数 allRecorders = Integer.parseInt(request.getParameter("allRecorders")) ; }catch(Exception e){} %> <% pageSize = (allRecorders + lineSize - 1) / lineSize ; if(pageSize==1){ currentPage = 1 ; } if(pageSize==0){ pageSize = 1 ; } %> <script language="javaScript"> function go(c){ document.getElementById("cp").value = c ; <% if("TRUE".equals(lineSizeFlag)){ %> document.getElementById("ls").value = document.getElementById("lssel").value ; <% } %> document.spform.submit() ; // 提交表单 } function goLs(ls){ document.getElementById("ls").value = ls ; document.getElementById("cp").value = document.getElementById("cpsel").value ; document.spform.submit() ; // 提交表单 } function goS(){ document.getElementById("cp").value = document.getElementById("cpsel").value ; <% if("TRUE".equals(lineSizeFlag)){ %> document.getElementById("ls").value = document.getElementById("lssel").value ; <% } %> } </script> <form action="<%=SPURL%>" name="spform" method="post" onsubmit="goS()"> <% if("TRUE".equals(searchFlag)){ %> 输入查询关键字:<input type="text" name="keyword" value="<%=keyWord%>"> <input type="submit" value="查询"><br> <% } %> <input type="button" value="首页" onClick="go(1)" <%=currentPage==1?"disabled":""%>> <input type="button" value="上一页" onClick="go(<%=currentPage-1%>)" <%=currentPage==1?"disabled":""%>> <input type="button" value="下一页" onClick="go(<%=currentPage+1%>)" <%=currentPage==pageSize?"disabled":""%>> <input type="button" value="尾页" onClick="go(<%=pageSize%>)" <%=currentPage==pageSize?"disabled":""%>> 跳转到第 <SELECT name="cpsel" onchange="go(this.value)"> <% for(int i=1;i<=pageSize;i++){ %> <OPTION value="<%=i%>" <%=currentPage==i?"SELECTED":""%>><%=i%></OPTION> <% } %> </SELECT> 页 <% if("TRUE".equals(lineSizeFlag)){ %> 每页显示 <SELECT name="lssel" onChange="goLs(this.value)"> <% for(int i=0;i<line.length;i++){ %> <OPTION value="<%=line[i]%>" <%=lineSize==line[i]?"SELECTED":""%>><%=line[i]%></OPTION> <% } %> </SELECT> 条 <% } %> <input type="hidden" name="cp" value=""> <% if("TRUE".equals(lineSizeFlag)){ %> <input type="hidden" name="ls" value=""> <% } %> </form>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name> TestJava2</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>empEncoding</filter-name> <filter-class>org.lzch.filter.EmpEncodingFilter</filter-class> <init-param> <param-name>charset</param-name> <param-value>gb2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>empEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>empServlet</servlet-name> <servlet-class>org.lzch.servlet.EmpServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>empServlet</servlet-name> <url-pattern>/EmpServlet</url-pattern> </servlet-mapping> </web-app>
emp.sql
CREATE TABLE emp1( empno int not null PRIMARY KEY, ename varchar(20), job varchar(10), hiredate datetime, sal float, comm float, photo varchar(20) )
资源链接:http://download.csdn.net/detail/qilixiang012/7387063