付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一:项目第一天(系统框架)1:项目介绍* 参照【文档】中的【项目介绍】2:项目框架搭建创建数据库1115elec,创建表:(1)持久层1:在 cn.elec.domian 中创建一个 javabean 和对应的文件ElecText.java:package cn.elec.;import java.util.Date; SuppressWarnings(serial)public claecText implements java.io.Serializable private String textID;/测试ID private String textName; /测试名称 private
2、 Date textDate;/测试日期 private String textRemark; /测试备注public String getTextID() return textID;public void setTextID(String textID) this.textID = textID;public String getTextName() #测试表CREATE TABLE Elec_Text(textID VARCHAR(50) NOT NULL PRIMARY KEY,textName VARCHAR(50), textDate DATETIME, textRemark VA
3、RCHAR(500)2:在同级目录下创建 ElecText.hbm.xml3:在类路径下,创建 hibernate.cfg.xmlreturn textName;public void setTextName(String textName) this.textName = textName;public Date getTextDate() return textDate;public void setTextDate(Date textDate) this.textDate = textDate;public String getTextRemark() return textRemark
4、;public void setTextRemark(String textRemark) this.textRemark = textRemark;4:在 junit 包下,使用 TestHiernate 进试,同时导入一个 log4j 日志的文件public class TestHibernate /*保存*/ Testpublic void save()Configuration configuration = new Configuration();/默认加载类路径下的hibernate.cfg.xml,同时加载文件configuration.configure();SesFactor
5、y sf = configuration.buildSesFactory(); Sess = sf.openSes();Tranion tr = s.begranion();ElecTexecText = new ElecText(); elecText.setTextName(测试Hibernate名称); elecText.setTextDate(new Date(); elecText.setTextRemark(测试Hibernate备注); s.save(elecText);mit();s.close();com.jdbc.Driverjdbc:/localhost:3306/111
6、5elec?useUnicode=true&;characterEncoding=utf8rootroot.hibernate.dialect.5Dialectupdatetrue(2)层(spring)1:在 cn.ICommon.接口中创建 2 个接口IElecText接口2:在 cn.Common.impl 中创建 2 个接口的实现类Implpublic class CommonImpl extends HibernateSupport implements ICommon /*spring容器中定义*/Resource(name=sesFactory)public final void
7、 setSesFactoryDi(SesFactory sesFactory)this.setSesFactory(sesFactory);/*保存*/public void save(T entity) this.getHibernateTemplate().save(entity);publicerface IElecTextextends ICommon public sic final String SERVICE_NAME = cn.elec.impl.ElecTextImpl;publicerface ICommon void save(T entity);ElecTextImpl
8、 类3:在 src 下创建 spring 的容器(beans.xml)1:注解的方式,引入组件的自动扫描,在类和方法上可以添加对注解的支持 -!-.elec/Factoryclasspath:hibernate.cfg.xml/*相当于spring容器中定义:*/Reitory(IElecText.SERVICE_NAME)public claecTextImpl extends CommonImpl implementsIElecText4:使用 junit 包下的 Test进试public class Test/*保存*/ Testpublic void save() Applicatio
9、nContext ac = newClassPathXmlApplicationContext(beans.xml); IElecTextelecText=(IElecText)ac.getBean(IElecText.SERVICE_NAME);!- 5:XML,配置文件的写法,管理事务-结论:在层要对公用方法进行封装,好处在于有些方法不需要在每个中都体现,Impl 中。这样开发麻烦,代码重复性高,解决方案:将公用的方法封装到 Common(3)业务层1:在 cn.service 包创建接口2:在 cn.service.impl 包创建接口的实现类3:使用 junit 测试public cl
10、ass TestService /*保存*/ Testpublic void save()Service(IElecTextServiERVICE_NAME)Tranional(readOnly=true)public claecTextServiceImpl implements IElecTextService Resource(name=IElecText.SERVICE_NAME)private IElecTextelecText;/*保存*/Tranional(isolation=Isolation.DEFAULT,propagation=Propagatio n.REQUIRED,
11、readOnly=false)public void save(ElecTexecText) elecText.save(elecText);publicerface IElecTextService public sic final String SERVICE_NAME =cn.elec.service.impl.ElecTextServiceImpl;public void save(ElecTexecText);ElecTex ecText = new ElecText(); elecText.setTextName(测试名称); elecText.setTextDate(new Da
12、te(); elecText.setTextRemark(测试备注); elecText.save(elecText);结论:使用式事务处理(aop 编程的实现),控制业务层的代码,相当于在代码业务层方法之前产生一个对象,在对象中完成事务的操作。(4)控制层1:在 cn.elec.web.action 中创建 2 个 Action 类ElecTextAction 类父类 BaseAction 类public class BaseAction extendionSupport implementsMDriven,ServletRequestAware,ServletResponseAware p
13、rotected HttpServletRequest request;SuppressWarnings(serial) Controller(elecTextAction) Scope(value=prototype)public claecTextAction extends BaseAction private ElecTexecText = this.getM(); Resource(name=IElecTextServiERVICE_NAME)private IElecTextService elecTextService;/*保存*/public String save() ele
14、cTextServiave(elecText); return save;ApplicationContext ac = newClassPathXmlApplicationContext(beans.xml); IElecTextService elecTextService =(IElecTextService)ac.getBean(IElecTextServiERVICE_NAME); ElecTexecText = new ElecText(); elecText.setTextName(测试Service名称); elecText.setTextDate(new Date(); el
15、ecText.setTextRemark(测试Service备注); elecTextServiave(elecText);结论:1:将 request 和 response 和模型驱动的对象2:泛型转换放在 BaseAction 中封装2:在 cn.elec.util 包下创建泛型转换类的公用方法 Utilspublic class GenericTypeUtils /*泛型转换*/public sic Class getGenericSuperClass(Class entity) /泛型转换,目的是将对应的泛型,转化成真实的对象类型/此时type表示:BaseAction Paramet
16、erizedType type =(ParameterizedType)entity.getGenericSuperclass();.elec.ElecTextClass entityClass = (Class) type.getActualTypeArguments()0;return entityClass;protected HttpServletResponse response;private T entity;public BaseAction()/泛型转换Class entityClass = GenericTypeUtils.getGenericSuperClass(this
17、.getClass();try entity = (T) entityClaewInstance(); catch (Exception e) e.prStackTrace();public T getM() return entity;public void setServletRequest(HttpServletRequest req) this.request = req;public void setServletResponse(HttpServletResponse res) this.response = res;3:在类路径下创建 struts.xml4:在 web.xml
18、中定义:contextConfigLocationclasspath:beans.xml.springframework.web.context.ContextLoaderList enerstruts2.apache.struts2.dispatcher.ng.filter.StrutsPrepa reAndExecuteFilter/system/textAdd.jsp5:导入页面的原型,使用 system 下 textAdd.jsp 进试3:底层方法的封装新增、修改、查询(使用 ID)、删除(使用 id 进行删除、使用集合删除集合中所有对象)、查询(指定条件查询)在 CommonImpl
19、 中定义底层方法的封装,在项目中每个中都可以使用定义的方法public class CommonImpl extends HibernateSupport implementsICommon Class entityClass =GenericTypeUtils.getGenericSuperClass(this.getClass();/*spring容器中定义Factory*/ Resource(name=ses public final void setSesFactory)FactoryDi(SesFactory sesFactory)this.setSesFactory(sesFact
20、ory);/*保存*/public void save(T entity) this.getHibernateTemplate().save(entity);/*更新*/public void update(T entity) this.getHibernateTemplate().update(entity);/*使用主键ID查询对象*/struts2/*public T findObjectByID(Serializable id) return (T) this.getHibernateTemplate().get(entityClass, id);/*删除(使用1个主键ID和多个主键I
21、D的数组)*/public void deleteBojectByIDs(Serializable. ids) if(ids!=null & ids.length0)for(Serializable id:ids)Object entity = this.findObjectByID(id); this.getHibernateTemplate().delete(entity);/*删除(将对象封装成集合,使用集合删除集合中存放的所有对象)*/*用法:将数据查询获取封装到List中,删除全部的list,先查询再删除*/public void deleteObjectByCollection(L
22、ist list) this.getHibernateTemplate().deleteAll(list);/*指定页面传递的查询条件,查询对应的结果集信息,返回LisecText,不分页*/*SELECT * FROM elec_text o WHERE 1=1#层 AND o.textName LIKE %张%#Service层 AND o.textRemark LIKE %张%#Service层ORDER BY o.textDate ASC,o.textRemark DESC #Service层*/public List findCollectionByConditionNoPage(S
23、tring condition,final Object params, Map orderby) String hql = select o from +entityClass.getSimpleName()+ o where 1=1 ;/map集合,获取排序的语句String orderbyhql = this.orderby(orderby);final String finalHql = hql + condition + orderbyhql;/方式一/List list = this.getHibernateTemplate().find(finalHql, params);/方式
24、二,使用hibernate模板提供的回调函数,回调SesList list = this.getHibernateTemplate().execute(newHibernateCallback() public ObjectnHibernate(Sesses)throws HibernateException, SQLException Query query = ses.createQuery(finalHql);if(params!=null & params.length0)for(i=0;iparams.length;i+)query.setParameter(i, paramsi);
25、return query.list(););return list;/map集合,获取排序的语句,ORDER BY o.textDate ASC,o.textRemark DESCprivate String orderby(Map orderby) StringBuffer buffer = new StringBuffer(); if(orderby!=null & orderby.size()0)buffer.append( order by );for(Mntry map:orderby.entrySet()buffer.append(map.getKey()+ +map.getVal
26、ue()+,);/删除最后一个逗号 buffer.deleteCharAt(buffer.length()-1);return buffer.toString();4:项目用整合 svnSvn 版本控制,管理项目中的源码,文档,管理每个人开发的代码项目使用 svn 的部署* 参数【技术资料】中 svn 的文件夹中的svn.doc5:项目开发可以在 myeclipse 中开发,也可以在开发eclipse不同之处:1:Myeclipse,Eclipse 不2:Myeclipse 是 Eclipse 的一个插件,也就是说 Eclipse 没有任何插件,需要人工导入3:使用 Myeclipse 发布项
27、目,是发布到外部的 tomcat 下的 webapp 的目录中Eclipse 是将Tomcat 服务器整合到Eclipse 开发4:myeclipse 是将 class 文件放置到D:workspaceProject1115elecWebRootWEB-INFclassesEclipse 是将 class 文件放置到D:workspaceEclipse1115ElecEclipsebuildclasses5:myeclipse 放置 jsp 文件的文件夹默认叫做:WebRootEclipse 放置 jsp 文件的文件夹默认叫做:WebContent6:项目编码规范项目开发前,开发见:【文档】,
28、国家电力检测中心项目和设备资源管理系统开发规范.doc作用:项目中每个成员的开发,保证项目每个模块相当于是 1 个人开发是一样的二:项目第二天(运行)1:系统登录+首页显示(1)index.jsp(2)登录页面:包下的 index.jsp提供登录名和(3)系统登录首页 home.jspFRAME name=topFramesrc=$pageContext.reqontextPath /title.jsp noResize(4)菜单 left.jspLeft.jspTree.jsvar= setting: isSimpleData: true, treeNodeKey: mid, treeNod
29、eParentKey: , showLine: true,root: isRoot: true, nodes: ,loadTree:function()$(#Tree).zTree(.setting, privilegeDate);scrolling=noDate.jsprivilegeDate = mid: aa,: 0,isParent: true,icon:./images/Icon/jishusheshiweihuguanli.gif,/open:true,name: 技术设施管理, nodes:mid:ab,:aa, isParent:false,:mainFrame, url:./
30、equapment/equapmentIndex.jsp, icon:./images/Icon/yiqishebeiguanli.gif, name:仪器设备管理,mid:ac,:aa, isParent:false,:mainFrame, url:./equapment/adjustIndex.jsp, icon:./images/Icon/shebeijiaozjianxiu.gif, name:设备校准检修,mid:ad,:aa, isParent:false,:mainFrame, url:./equapment/planIndex.jsp, icon:./images/Icon/s
31、hebeigouzhijihua.gif, name:设备购置计划,$().ready(function().loadTree(););(5)Change.jsp框架改变(6)loading.jsp系统首页 functionshiftwindow()if(parent.geementById(main).cols=153,1%,*)parent.geementById(main).cols=0,1%,99%;.all.image.src=$pageContext.reqontextPath /images/you.gif;else if(parent.geementById(main).col
32、s=0,1%,99%)parent.geementById(main).cols=153,1%,*;.all.image.src=$pageContext.reqontextPath /images/zuo.gif;改变 iframe 的宽度functionshiftiframe(value)if(value=1)if(.all.sion.width=500).all.sion.width=1100;.geementById(devtd).style.display=none;else if(.all.sion.width=1100).all.sion.width=500;.geementBy
33、Id(devtd).style.display=;站点运行情况设备运行情况每隔 10 分钟刷新页面,保证站点运行情况和设备运行情况的实时性2:运行(1)首页 td 内容显示(js)如果当显示的表格中的 td 中的内容不能将全部的文本显示出来,可以使用一个div,使用div 显示所有的内容,当鼠标移动到 td 中的时候,显示 div 中的内容,当鼠标移除 td 的时候,将 div 再次隐藏出来1:jsp 页面/*添加10分钟后自动刷新页面,站点和设备运行的实时性*/ window.onload=function()setTimeout(refresh10(),1000*60*10) ;funct
34、ion refresh10() window.location.reload();elseif(.all.dev.width=500).all.dev.width=1100;.geementById(siontd).style.display=none;else if(.all.dev.width=1100).all.dev.width=500;.geementById(siontd).style.display=;2:在 jsp 页面中定义:3:在 jsp 页面中定义使用一个 div 做鼠标移动,div 中显示 td 中需要显示的内容(2)防止文本域中输入的值,超出数据库表的最大限制1:引入
35、 js2:在页面中定义3:在页面中s:textarea name=sionRun id=sionRun cssStyle=width: 500px; height: 160px; padding:1;FONT-FAMILY:宋体;FONT-SIZE:9ptfunction checkTextAreaLen()var sionRun = new Bs_LimitedTextarea(sionRun, 2500);sionRlineCssStyle = font-family:arial; font-size:11px; colray; sionRun.draw();var devRun = ne
36、w Bs_LimitedTextarea(devRun, 2500); devRlineCssStyle = font-family:arial; font-size:11px; colray; devRun.draw();window.onload=function() checkTextAreaLen();,放置到任意位置onkeydown=if(event.keyCode=13)addEnter(sionRun);(3)进度条需求:1:大批量数据执行保存、更新、删除,可以添加进度条2:文件的上传和,可以添加进度条3:文件到导入和导出,可以添加进度条4:在进行数据的时候,可以添加进度条见【
37、技术资料】,进度条.doc(4)CKEditor+CKFinder 组合文本编辑器需求:1:在使用“通知”和“公告”的系统中2:在“”系统中,添加文本编辑器整合系统详见:【技术资料】,FCK 文本编辑器合项目开发.doc版本ckeditor 配置资料,CKEditor_CKFinder_整扩展(问题)扩展:由于项目中使用文本编辑器很有可能在开发的时候,在保存数据的时候,超出数据库支持的字段的最大值?如何解决呢解决方案:(5)弹出窗口 Js:window.open(); Js:windex.close();a.jsp 中使用window.open();,此时弹出b.jsp在 b.jsp 中可以使
38、用 opener 属性,调用a.jsp 的内容类似于:使用 frameset 的时候,在子页面中调用 parent,用来调用父页面的数据三:项目第三天(数据字典)1:遍历 select如果遍历的集合是之前数据库设计主键 ID站点运行情况设备运行情况创建日期现在数据库设计运行表主键 ID站点运行情况设备运行情况创建日期1122013-11-17 14:39:00运行数据表主键 ID站点运行/设备运行的标识数据内容数据显示排序11X11YYYYYYY22AAAAAAA12BBBBBBB2注意:数据内容在保存的时候,先将收内容进行分割,按照 2500 个字符进行分割,分割数组的形式进行保存查询的时候
39、,查询运行表,使用站点运行情况的 1,查询运行数据表,将查询获取的数据内容组织成 1 个新的字符串,将新的字符串显示XYYYYYYYY页面遍历下拉菜单:在使用 hql 语句或者 sql 语句查询数据库的时候,如果投影查询是一个对象将返回一个Object 对象的值例如:SELECT DISTINCT o.keyword FROM elec_systemddl o在使用 hql 语句或者 sql 语句查询数据库的时候,如果投影查询是多个对象将返回一个Object 对象数组例如:SELECT DISTINCT o.keyword,o.ddlName FROM elec_systemddl o优化 h
40、ql 语句优化前:优化后:对于 hql 语句来说,可以将投影查询的字段封装到一个 javabean 中,前提是 javabena 中必须存在一个构造方法,用来存放对应的属性值2:在编辑数据字典的时候,使用ajax(封装 pub.js)调用方式(1)在 dictionaryIndex.jsp 中定义:/结果集LisecSystemDDL sysList = new ArrayLisecSystemDDL(); String hql = SELECT DISTINCT o.keyword FROM ElecSystemDDL o; List list = this.getHibernateTemp
41、late().find(hql);/遍历if(list!=null & list.size()0)for(Object o:list)ElecSystemDDL elecSystemDDL = new ElecSystemDDL(); elecSystemDDL.setKeyword(o.toString(); sysList.add(elecSystemDDL);return sysList;LisecSystemDDL list = elecSystemDDLService.findDistinctKeywod();request.setribute(list, list);(2)pub.
42、js 的定义:Ajax 引擎:/*创建ajax引擎对象*/Pub.newXMLHttpRequest=function newXMLHttpRequest() var xmlreq = false;if (window.XMLHttpRequest) xmlreq = new XMLHttpRequest(); else if (window.ActiveXObject) try /*domId:表单Form2的名称action:URL地址sForm:表单Form1的名称*/ Pub.submitActionWithForm=function(domId,action,sForm)/*dom对
43、象ajax* 第一步:创建ajax引擎,即XMLHttpRequest*/var req = Pub.newXMLHttpRequest();/*第二步:使用ajax引擎调用onreadysechange,表示事件处理函数,用来服务器端(Action)与客户端(浏览器)之间的连接状态*/var handlerFunction = Pub.getReadySeHandler(req, domId,Pub.handleResponse);req.onreadysechange = handlerFunction;/*第三步:使用ajax引擎调用open方法,打开接(此时与服务器连接)*/req.o
44、pen(T, action, true);/如果请求的方式是T的话,需要添加请求的头,此时可以使用req.send(str);方式发送数据,如果不添加此行代码send方法将无法传递参数到服务器req.setRequestHeader(Content-Type, application/x-www-form-urlencoded);/*第四步:使用ajax引擎调用send方法,向服务器发送数据(发送表单Form1中所有的元素组织参数进行传递)*/var str = Pub.getParams2Str(sForm); req.send(str);/传递的数据格式a=8&b=9引入一个 js在 js
45、 的方法中定义Pub.submitActionWithForm(Form2,$pageContext.reqontextPath /system/elecSyste mDDLAction_edit.do,Form1);Pub.getReadySeHandler 事件处理函数的方法/*传递的参数req, domId,Pub.handleResponseparam req:ajax引擎对象param eleid:表单Form2的名称param responseXmlHandler,表示Pub.handleResponse函数returns Function*/Pub.getReadySeHandl
46、er =function getReadySeHandler(req, eleid,responseXmlHandler) return function () /*1表示open方法调用,send方法没有调用2表示open方法调用,send方法也被调用3表示服务器正在接收信息和响应数据4表示连接成功,只有4才能获取服务器返回给客户端的值*/if (req.readySe = 4) /* 200服务器响应没有异常,只有200才能获取服务器返回给客户端的值*/if (req.sus = 200) /* 服务器响应客户端的值:存放到2个对象中1:req.responseText(包括文本、字符串、
47、json数据)2:req.responseXML(包括XML数据格式:例如),页面中使用.geementByTagName(name)*/xmlreq = new ActiveXObject(Msxml2.XMLHTTP); catch (e1) try xmlreq = new ActiveXObject(.XMLHTTP); catch (e2) alert(e2);return xmlreq;Pub.getParams2Str(sForm);组织表单 Form1 的参数/*sForm:表单Form1的名称返回值:strDiv的数据格式是,a=8&b=9*/Pub.getParams2St
48、r=function getParams2Str(sForm)var strDiv=;try var objForm=.formssForm;if (!objForm)return strDiv;var elt,sName,sValue;for (var fld = 0; fld objForm.elements.length; fld+) elt = objForm.elementsfld;sName=; sValue=+elt.value; if(fld=objForm.elements.length-1)strDiv=strDiv + sName+=+sValue+;elsestrDiv
49、=strDiv + sName+=+sValue+&;catch (ex) return strDiv;return strDiv;responseXmlHandler(req.responseTexeid); else alert(HTTP error: +req.sus);return false;总结:效果:在 dictionIndex.jsp 中存在 2 个表单,1 个表单 Form1,1 个是表单 Form2通过 ajax,调用服务器,发送表单 Form1 中的元素作为传递给服务器的参数,在服务器进行处理,将处理后的结果,放置 dictionaryEdit.jsp 中将 dictio
50、naryEdit.jsp 的所有内容,显示在 dictionIndex.jsp 中的 Form2 中感觉:异步效果,Form1 不动,Form2 针对 Form1 的选择,显示对应的数据3:js 的 DOM 对象去掉空格方法function LTrim(str)var i;for(i=0;i=0;i-)if(str.charAt(i)!= &str.charAt(i)!=?)break;str=str.substring(0,i+1);return str;function Trim(str)return LTrim(RTrim(str);4:webservice技术(axis2):为什么项目
51、中使用webservice,由于要完成数据字典(元数据)在整个电力系使用 webservice 技术调用。统完成数据的一致性,只需要总部提供所有的元数据,有怎么使用webservice(axis2)呢见【技术资料】中的【webservice技术】面试需要注意的地方:webservice 作用,实现了 2 个不同的系统之间的数据调用,是用来连接多个系统之间的桥梁服务端提供一个方法,发布一个服务客户端组织查询参数,调用这个服务使用axis注意:不要在客户端的代码中频繁调用服务的方法,只需要在 web 容器启动(过滤器、 Servlet)的时候,通过过滤器或者 Servlet发布的服务,查询所有数据
52、类型对应的值,查询完成之后可以放置到Sessoin 中,Ses中存放 Map页面的时候,从Ses 中获取对应的值即可。5:使用 ajax 完成进度条的百分比见【技术资料】【进度条进度条(百分比)】分析步骤:map 集合的 key 表示数据类型(),map 集合的 value 表示数据项的值(男,女),每次面试时总结使用 ajax,在表单提交的时候,执行多线程进行操作* 一个线程表单提交的方法 save()方法,使用 Ses存放保存时计算的百分比,如果线程结束的时候,将Ses对象清空。* 另一个线程由ajax 开启,如果计算的百分比不是 100 的话,那么就每隔 1 秒中调用ajax定义的方法,
53、如果是 100 的话说明线程结束* ajax 定义的方法,就是从 Ses中获取对应的百分比对象,放置 XML 属性值,将该值传递个页面,在页面中显示对应的百分比信息,百分比进度条的效果就是改变对应 td 的宽度(将百分比的值放置到宽度的对象中)四:项目第四天(用户管理)1:ajax 实现二级联动分析:导入 struts2 支持 json 的 jar 包struts2-json-plugin-2.3.3.jarstruts.xml 文件定义:(3)在 Action 类中定义:(4)页面显示二级联动的 js/ajax的二级联动,使用选择的所属,查询该所属下对应的名称列表function findJ
54、ctUnit(o)/货物所属的文本内容var jct = $(o).find(option:selected).text();/*$.t:表示t请求参数一:发送请求的地址参数二:发送数据,json数据格式public String findJctUnit()/将数据字典的值转换成json数据/1:使用jquery的ajax获取到所属的中文名称()String keyword = elecUser.getJctID();/2:以选择的数据类型作为条件,查询对应数据类型的集合,返回 LisecSystemDDLLisecSystemDDL list = elecSystemDDLService.f
55、indElecSystemDDLListByKeyword(keyword);/3:将list放置到栈顶,将list使用struts2的方式转换成json数据ValueStackUtils.setValueStack(list);return findJctUnit;d+.ddlCode,d+.ddlName同时页面上存在 2 个 select2:ajax 完成登录名的校验分析:* 参数三:function(daextSus):回调函数,data表示从服务器获取的值*/$.t(elecUserAction_findJctUnit.do,jctID:jct,function(daextSus)/
56、先删除名称的下拉菜单,但是请选择要留下$(#jctUnitID option).remove(); if(data!=null & data.length0)for(var i=0;idata.length;i+)var ddlCode = datai.ddlCode; var ddlName = datai.ddlName;/添加到名称的下拉菜单中var $option = $();$option.attr(value,ddlCode);$option.text(ddlName);$(#jctUnitID).append($option););1:在 jsp 页面中定义:同时下面 jsp 中
57、添加校验的文本框(2)在 struts.xml 文件的配置字符串形式传递值,在模型驱动的对象中,添加 message 属性ElecUser.javaprivate String message; set 和 get 方法在 Action 中定义:/*Name: checkUserDescription: 使用登录名作为条件,查询登录名在数据库中是否出现重复message/*校验登录名是否出现重复*/ function checkUser(o)/alert(o.value);/dom的写法/alert($(o).val();/jquery的写法 var logonName = $(o).val(
58、);/以登录名作为查询条件,查询该登录名是否在数据库表中存在$.t(elecUserAction_checkUser.do,logonName:logonName,function(data) if(data=1)$(#check).html(登录名不能为空);o.focus();$(#BT_Submit).attr(disabled,none);else if(data=2)$(#check).html(登录名已经存在); o.focus();$(#BT_Submit).attr(disabled,none);else$(#check).html(登录名可以使用);$(#BT_Submit)
59、.attr(disabled,););3:在校验 jsp 输入的值是否正确(正则表达式)学会语法:真用到的时候,借助于老师4:学会使用 md5加密场景:针对用户的新增保存和修改保存引入 md5keybean,放置到 utils 包下使用 md5keybeanpublic sic void main(String args) MD5keyBean m = new MD5keyBean();function checkPhone(strNumber)var pattern =/(0-93,4-0-93,8$)|(0-93,8$)|(0-93,4)0-93,8$)|(00,1130-99$)/;if
60、(pattern.test(strNumber)return true; return false;String message = ;message=1:表示登录名不能为空message=2:表示登录名在数据库中已经存在,此时不能保存message=3:表示登录名在数据库表不存在,此时可以保存Author:(作者)* Ver: V1.00 (版本号)Create Date: 2013-11-19(创建日期)Parameters: 无Return: ajax,使用struts的ajax转发*/public String checkUser()/获取登录名String logonName = e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年是否控制测试题及答案
- 2026年QC08000测试题及答案
- 2026年江南风格测试题及答案
- 2026年职业沟通测试题及答案
- 2026年国内名著测试题及答案
- 2026年监控收费测试题及答案
- 2026年鹿丸智商测试题及答案
- 金属装饰厂风险公告栏
- 植物多酚中草药有效部位提取物
- 护理专业护理营养学教学课件
- 《陈士铎医学全书》
- 海事集装箱装箱检查员考试题库
- 2023-2024学年北师大版八年级下册期末数学试卷2(考试版)
- 2024年挂车配件项目可行性研究报告
- 新苏教版四年级科学下册教案教学设计
- 蛋白酶的工厂设计
- 2025届佛山市普通高中高一数学第二学期期末统考试题含解析
- 蓝幸测试题-网络优化附有答案
- 国开古代诗歌散文期末复习题及参考答案
- 邮政投递员高级模拟考试(一)附有答案
- 胸部疾病基本X线表现新版
评论
0/150
提交评论