一个不错的样例值得细细品味:

以下依照包顺序将代码贴出来供大家參考:

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 stubboolean 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; } //验证username是否存在 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 stubboolean 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 stubboolean 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 stubboolean 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 stubList 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 stubEmp 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 stubreturn 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 stubreq.setCharacterEncoding(this.charset);chain.doFilter(req, resp);}public void init(FilterConfig config) throws ServletException {// TODO Auto-generated method stubthis.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("client传输过来的中文字符","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 stubEmp emp=new Emp();emp.setEmpno(79);emp.setEname("lzch");emp.setJob("project师");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="#" οnclick="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="#" οnclick="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="反复的username。请更换username!";}else{flag=true;document.getElementById("msg").innerHTML="此username能够注冊!";}}}}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="反复的username,请更换username!"; }else{ flag=true; document.getElementById("msg").innerHTML="此username能够注冊。"; } } } } function checkForm(){ return flag; } //关闭窗体 function closeWin(){ window.close(); } </script> <center> <form action="<%=request.getContextPath() %>/EmpServlet?p=emp_insert" method="post" enctype="multipart/form-data" οnsubmit="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" οnblur="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" οnclick='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="#" οnclick="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="#" οnclick="goUpdate('<%=request.getContextPath() %>/EmpServlet?p=doUpdatePage&empno=<%=emp.getEmpno() %>')">改动</a><a href="#" οnclick="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="#" οnclick="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" οnclick='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="#" οnclick="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" οnsubmit="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" οnchange="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

javaEE mvc样例具体解释相关推荐

  1. mysql数据库创建表时通过设置什么属性可以设置字段编号自动增加_Mysql数据库创建表样例和解释...

    目录 照着下面样例创建表,设置自己的表名,字段和字段属性,基本都能满足需求啦: 参数解释: 1. AUTO_INCREMENT是设置该字段为自增列: 2. COMMENT '邮箱' :字段备注邮箱 3 ...

  2. 运行torchAudio下的wav2vec2.0样例

    torchAudio在0.10.0版本中已经兼容了hubert的代码(现在已经0.11.0了).然而,我连wav2vec2.0的代码都没跑过,官方文档也给出了一个wav2vec2.0代码的运行样例.本 ...

  3. RPM安装包-Spec文件參数具体解释与演示样例分析

    spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件參数 spec文件包括建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个 ...

  4. 样例解释:1013 数素数 (20分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 令 P​i表示第 i 个素数.现任给两个正整数 M≤N≤10^​4 ,请输出 P​M到 P​N的所有素数. 输入 ...

  5. 5.编写程序,建立一个含有5名学生成绩的文件:stu1.txt, 解释说明:为了避免测试代码时,反复从屏幕输入数据样例,我这里将数据存在f2.txt文件中,使用freopen()函数访问并读出数据

    建立一个含有5名学生成绩的文件stu1.txt.每个学生的数据包括:学号.姓名.性别.为避免测试代码时反复从屏幕输入数据样例,我这里将数据存在f2.txt文件中,使用freopen函数访问并读出数据. ...

  6. Prism安装、MVVM基础概念及一个简单的样例

    一:Prism的下载和安装 1:在http://compositewpf.codeplex.com/上下载最新的包. 下载完毕后,运行之,选择解压目录解压之.解压完毕的根目录下有chm帮助文档. 2: ...

  7. HLS-Demo IOS 视屏直播样例

    from: https://github.com/yangchao0033/HLS-Demo/blob/master/README.md demo简介:如果觉得文章有用的话,请读者在github上点个 ...

  8. Netty 简单样例分析(io传输的框架)

    http://linugb118.blog.51cto.com/272628/420738 messageReceived(ChannelHandlerContext ctx, MessageEven ...

  9. Ajax框架,DWR介绍,应用,样例

    使用Ajax框架 1.简化JavaScript的开发难度 2.解决浏览器的兼容性问题 3. 简化开发流程 经常使用Ajax框架 Prototype 一个纯粹的JavaScript函数库,对Ajax提供 ...

  10. Python Web框架Tornado的异步处理代码演示样例

    1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口 ...

最新文章

  1. 12本最优秀的Android开发电子书强力推荐
  2. sd卡 写卡阻塞_Sony a7r4写卡速度测试
  3. Dubbo 源码分析 - 集群容错之 Router
  4. mysqladmin 设置用户名初始密码报错you need the SUPER privilege for this operation
  5. Linux 向文件末尾追加命令(转载)
  6. Go36-32-context.Context
  7. Mysql优化(出自官方文档) - 第三篇
  8. c++ auto 属性
  9. 【pandas数据分析】pandas安装
  10. ibatis iterator list 参数 查询
  11. SpringBoot MySQL #1 报错 Error executing DDL ...
  12. 功能测试数据测试之因果图分析方法
  13. 制作精美失落美女胶片效果
  14. 【课程·研】工程伦理学 | 课堂汇报:个性化推荐技术的伦理学——以平台广告精准投放事件为例
  15. 计算机键盘和指法练习实验报告模板,实验报告总结怎么写
  16. x86代表电脑的操作系统是32位 和 x64代表电脑的操作系统是64位
  17. 如何解决WIN10环境下 Raid 模拟器遇到乱码问题
  18. (学习日志)MAYA基础设置
  19. 磁盘柜支持linux,linux 连接磁盘柜
  20. freemarker生成word之后遇到未解决的问题,希望有大佬赐教!!!

热门文章

  1. 移动应用图标生成工具,一键生成所有尺寸的应用图标
  2. java array to list iterator_Iterator to list的三种方法
  3. cpu频率_CPU频率的提升到底会产生哪些影响?
  4. sqlserver替换特殊字符
  5. C#判断对象是不是数组
  6. C++文件操作的HelloWorld
  7. 全网首发:JDK绘制文字:三、绘制句柄的内容是如何定义的
  8. 使用代码把一个目录打包成jar
  9. 导入新工程,提示“Migrate Project to Gradle?”
  10. CSDN博文分类全部删除了?