javaEE mvc样例具体解释
一个不错的样例值得细细品味:
以下依照包顺序将代码贴出来供大家參考:
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样例具体解释相关推荐
- mysql数据库创建表时通过设置什么属性可以设置字段编号自动增加_Mysql数据库创建表样例和解释...
目录 照着下面样例创建表,设置自己的表名,字段和字段属性,基本都能满足需求啦: 参数解释: 1. AUTO_INCREMENT是设置该字段为自增列: 2. COMMENT '邮箱' :字段备注邮箱 3 ...
- 运行torchAudio下的wav2vec2.0样例
torchAudio在0.10.0版本中已经兼容了hubert的代码(现在已经0.11.0了).然而,我连wav2vec2.0的代码都没跑过,官方文档也给出了一个wav2vec2.0代码的运行样例.本 ...
- RPM安装包-Spec文件參数具体解释与演示样例分析
spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件參数 spec文件包括建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个 ...
- 样例解释:1013 数素数 (20分)
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 令 Pi表示第 i 个素数.现任给两个正整数 M≤N≤10^4 ,请输出 PM到 PN的所有素数. 输入 ...
- 5.编写程序,建立一个含有5名学生成绩的文件:stu1.txt, 解释说明:为了避免测试代码时,反复从屏幕输入数据样例,我这里将数据存在f2.txt文件中,使用freopen()函数访问并读出数据
建立一个含有5名学生成绩的文件stu1.txt.每个学生的数据包括:学号.姓名.性别.为避免测试代码时反复从屏幕输入数据样例,我这里将数据存在f2.txt文件中,使用freopen函数访问并读出数据. ...
- Prism安装、MVVM基础概念及一个简单的样例
一:Prism的下载和安装 1:在http://compositewpf.codeplex.com/上下载最新的包. 下载完毕后,运行之,选择解压目录解压之.解压完毕的根目录下有chm帮助文档. 2: ...
- HLS-Demo IOS 视屏直播样例
from: https://github.com/yangchao0033/HLS-Demo/blob/master/README.md demo简介:如果觉得文章有用的话,请读者在github上点个 ...
- Netty 简单样例分析(io传输的框架)
http://linugb118.blog.51cto.com/272628/420738 messageReceived(ChannelHandlerContext ctx, MessageEven ...
- Ajax框架,DWR介绍,应用,样例
使用Ajax框架 1.简化JavaScript的开发难度 2.解决浏览器的兼容性问题 3. 简化开发流程 经常使用Ajax框架 Prototype 一个纯粹的JavaScript函数库,对Ajax提供 ...
- Python Web框架Tornado的异步处理代码演示样例
1. What is Tornado Tornado是一个轻量级但高性能的Python web框架,与还有一个流行的Python web框架Django相比.tornado不提供操作数据库的ORM接口 ...
最新文章
- 12本最优秀的Android开发电子书强力推荐
- sd卡 写卡阻塞_Sony a7r4写卡速度测试
- Dubbo 源码分析 - 集群容错之 Router
- mysqladmin 设置用户名初始密码报错you need the SUPER privilege for this operation
- Linux 向文件末尾追加命令(转载)
- Go36-32-context.Context
- Mysql优化(出自官方文档) - 第三篇
- c++ auto 属性
- 【pandas数据分析】pandas安装
- ibatis iterator list 参数 查询
- SpringBoot MySQL #1 报错 Error executing DDL ...
- 功能测试数据测试之因果图分析方法
- 制作精美失落美女胶片效果
- 【课程·研】工程伦理学 | 课堂汇报:个性化推荐技术的伦理学——以平台广告精准投放事件为例
- 计算机键盘和指法练习实验报告模板,实验报告总结怎么写
- x86代表电脑的操作系统是32位 和 x64代表电脑的操作系统是64位
- 如何解决WIN10环境下 Raid 模拟器遇到乱码问题
- (学习日志)MAYA基础设置
- 磁盘柜支持linux,linux 连接磁盘柜
- freemarker生成word之后遇到未解决的问题,希望有大佬赐教!!!