JSP實(shí)現(xiàn)客戶信息管理系統(tǒng)
本文實(shí)例為大家分享了jsp實(shí)現(xiàn)客戶信息管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
項(xiàng)目示意圖大概這樣吧。我自己畫(huà)的
登錄界面代碼
index.jsp: 完全沒(méi)技術(shù)含量的,直接調(diào)用一個(gè)servlet控制的是否登錄
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <!doctype html public "-//w3c//dtd html 4.01 transitional//en"> <html> <head> <title>客戶信息管理系統(tǒng)登錄</title> </head> <body> <h2>客戶信息管理系統(tǒng)登錄</h2> <form action="loginservlet" method="post"> 用戶名:<input type="text" name="name"/><br/> 密 碼:<input type="text" name="pwd"/><br/> <input type="submit" value="登錄"/> </form> </body> </html>
控制登錄的 loginservlet
public class loginservlet extends httpservlet { public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { dopost(request, response); } public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { string name = request.getparameter("name"); string pwd = request.getparameter("pwd"); //此時(shí)應(yīng)該要把賬號(hào)密碼封裝成javabean 訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)驗(yàn)證登錄,這里簡(jiǎn)化了 if(name!=null && name.startswith("hncu") && pwd!=null &&pwd.length()>3){ //登錄成功,訪問(wèn)主頁(yè) request.getsession().setattribute("name", name); request.getrequestdispatcher("/jsps/table.jsp").forward(request, response); }else{//登錄失敗,重修返回登錄界面 response.sendredirect(request.getcontextpath()+"/index.jsp"); } } }
進(jìn)來(lái)之后就到我們的主頁(yè)后點(diǎn)擊添加按鈕,開(kāi)頭彈出一個(gè)窗口讓我們輸入添加的信息
這個(gè)技術(shù)原理
function add(){ var url = path+"/jsps/input.jsp"; var returnvalue =window.showmodaldialog(url, "","dialogheight:400px;dialogwidth:300pxl;status:no"); if(returnvalue){ // alert(returnvalue.id); realadd(returnvalue); } }
url:是彈出小窗口的路徑。后面是設(shè)置彈出窗口的參數(shù)。
返回值可以拖過(guò)這個(gè)語(yǔ)句提供
window.returnvalue=obj;
下面是這個(gè)添加過(guò)程的示意圖
主頁(yè)代碼以及js代碼
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en"> <html> <head> <link rel="stylesheet" type="text/css" href="<c:url value='/css/table.css'/>" rel="external nofollow" > <title>客戶信息管理系統(tǒng)</title> <script type="text/javascript" src='<c:url value="/js/table.js"/>'></script> <script type="text/javascript"> var path = "<c:url value='/'/>"; </script> </head> <body> <h2>客戶信息管理系統(tǒng)</h2> <input type="button" onclick="del();" value="刪除"/> <input type="button" value="添加" onclick="add()" > <table id="tb"> <tr> <th>選擇<input type="checkbox" id="parentchk" onclick="chk(this);"></th> <th>姓名</th><th>年齡</th><th>地址</th><th class="iid">id</th> </tr> </table> <form name="f1" target="ifrm" action="<c:url value='/delservlet'/>" method="post"> <input id="ids" type="hidden" name="ids"/> </form> <iframe name="ifrm" style="display:none;"></iframe> </body> </html>
table.js
function add(){ var url = path+"/jsps/input.jsp"; //var vreturnvalue = window.showmodaldialog(url,"","dialogwidth:400px;dialogheight:200px;status:no;"); var returnvalue =window.showmodaldialog(url, "","dialogheight:400px;dialogwidth:300pxl;status:no"); if(returnvalue){ // alert(returnvalue.id); realadd(returnvalue); } } // 把封裝過(guò)來(lái)的數(shù)據(jù)實(shí)際插入到表格 function realadd(obj){ var tb = document.getelementbyid("tb"); var otr = tb.insertrow(); var ocell = otr.insertcell(); ocell.innerhtml='<input type="checkbox" name="chk" onclick="subchk(this);"/>'; ocell = otr.insertcell(); ocell.innerhtml=obj.name; ocell = otr.insertcell(); ocell.innerhtml=obj.age; ocell = otr.insertcell(); ocell.innerhtml=obj.addr; ocell = otr.insertcell(); ocell.innerhtml=obj.id; ocell.classname="iid"; } //全先復(fù)選框,點(diǎn)擊上面的全選框。下面的所有復(fù)選框都要全選 function chk(obj){ var chks = document.getelementsbyname("chk"); var len = chks.length; for(var i=0; i<len; i++){ chks[i].checked = obj.checked; } } //通過(guò)統(tǒng)計(jì)下面的復(fù)選框的選擇情況,決定上面的復(fù)習(xí)框的三種狀態(tài) function subchk(obj){ var chks = document.getelementsbyname("chk"); var n=0; //統(tǒng)計(jì)表格行中被勾選中的行數(shù) for(var i=0;i<chks.length;i++){ if(chks[i].checked){ n++; } } var parentchk = document.getelementbyid("parentchk"); if(n==0){ parentchk.indeterminate=false;//※※※不能省 parentchk.checked=false; }else if(n==chks.length){ parentchk.indeterminate=false;//※※※不能省 parentchk.checked=true; }else{ parentchk.indeterminate=true; } } //把用戶選中行的id提交給后臺(tái),后臺(tái)刪除成功后返回true function del(){ //以后我們應(yīng)該用json去封裝所有的id,提交給后臺(tái)處理(暫時(shí)我們還沒(méi)學(xué))。 //現(xiàn)在我們暫時(shí)用字符拼接的方式來(lái)做,有潛在bug的 var tb = document.getelementbyid("tb"); var chks = document.getelementsbyname("chk"); var ids=""; for(var i=0;i<chks.length;i++){ if(chks[i].checked){ //alert("aaa"); //把該行的id值獲取出來(lái) var otr = chks[i].parentnode.parentnode; //alert(otr); var id = otr.cells[4].innertext; //alert(id); if(ids==""){ ids=id; }else{ ids = ids +"," +id; } } } if(ids==""){ alert("請(qǐng)選擇要?jiǎng)h除的行"); }else{ document.getelementbyid("ids").value=ids; document.forms['f1'].submit(); } } function realdel(boo){ if(!boo){ alert("刪除失敗!"); return; } var tb = document.getelementbyid("tb"); var chks = document.getelementsbyname("chk"); var len = chks.length; //倒著刪 for(var i=len-1;i>=0;i--){ if(chks[i].checked){ tb.deleterow(i+1); } } var chks = document.getelementsbyname("chk"); var n=0; //統(tǒng)計(jì)表格行中被勾選中的行數(shù) for(var i=0;i<chks.length;i++){ if(chks[i].checked){ n++; } } // 刪除之后更細(xì)上面復(fù)選框的狀態(tài) var parentchk = document.getelementbyid("parentchk"); if(n==0){ parentchk.indeterminate=false;//※※※不能省 parentchk.checked=false; }else if(n==chks.length){ parentchk.indeterminate=false;//※※※不能省 parentchk.checked=true; }else{ parentchk.indeterminate=true; } }
input.jsp
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!doctype html public "-//w3c//dtd html 4.01 transitional//en"> <html> <body> <h3>客戶信息添加</h3> <form target="ifrm" name="ss" action="<c:url value='/saveservlet' />" method="post"> 姓名:<input type="text" name="name"/><br/> 年齡: <input type="text" name="age"/><br/> 地址:<input type="text" name="addr"/><br/><br/> <input type="button" value="添加" onclick="save();"/> <input type="button" value="取消" onclick="window.close();"/><br/> </form> <iframe name="ifrm" style="display:none;"></iframe> <script type="text/javascript"> function save(){ document.forms['ss'].submit(); } //該方法由后臺(tái)返回的saveback.jsp(在iframe中,子頁(yè))反調(diào)這里(父頁(yè)) function realsave(obj){ //window.returnvalue="aa"; //window.close(); window.returnvalue=obj; window.close(); } </script> </body> </html>
save.jsp
<%@ page language="java" import="java.util.*;" pageencoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <script type="text/javascript"> var user = new object(); user.name = '<c:out value="${user.name}"/>'; user.id = '<c:out value="${user.id}"/>'; user.age = '<c:out value="${user.age}"/>'; user.addr = '<c:out value="${user.addr}"/>'; parent.realsave(user); </script>
在后面是刪除的過(guò)程
delback.jsp
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <script type="text/javascript"> //用jstl在js頁(yè)面中把從后臺(tái)獲取出來(lái) var boo = "<c:out value='${succ}' />"; parent.realdel(boo); </script>
更多學(xué)習(xí)資料請(qǐng)關(guān)注專題《管理系統(tǒng)開(kāi)發(fā)》。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持碩編程。
相關(guān)文章
- jsp+servlet實(shí)現(xiàn)文件上傳與下載功能
- EJB3.0部署消息驅(qū)動(dòng)Bean拋javax.naming.NameNotFoundException異常
- 在JSP中使用formatNumber控制要顯示的小數(shù)位數(shù)方法
- 秒殺系統(tǒng)Web層設(shè)計(jì)的實(shí)現(xiàn)方法
- 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法
- JSP使用過(guò)濾器防止Xss漏洞
- 在JSP頁(yè)面中動(dòng)態(tài)生成圖片驗(yàn)證碼的方法實(shí)例
- 詳解JSP 內(nèi)置對(duì)象request常見(jiàn)用法
- 使用IDEA編寫(xiě)jsp時(shí)EL表達(dá)式不起作用的問(wèn)題及解決方法
- jsp實(shí)現(xiàn)局部刷新頁(yè)面、異步加載頁(yè)面的方法
- Jsp中request的3個(gè)基礎(chǔ)實(shí)踐
- JavaServlet的文件上傳和下載實(shí)現(xiàn)方法
- JSP頁(yè)面的靜態(tài)包含和動(dòng)態(tài)包含使用方法