版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Struts2应用第八章回顾与作业点评Struts2执行流程是什么?Result结果类型有哪些,存在什么区别?Struts2中自定义拦截器有哪些方式?预习检查<s:submit>和<sx:submit>标签有什么异同?使用验证框架进行验证有什么好处?国际化、本地化的含义是什么?本章任务使用Ajax实现租房信息的分页显示使用验证框架验证用户注册使用验证框架实现租房信息发布的验证使用Struts2实现用户注册国际化使用Struts2实现租房网国际化本章目标会使用Struts2常用Ajax标签掌握Struts2的验证框架使用Struts2实现国际化Struts2对Ajax的支持Struts2对Ajax提供了很好的支持Struts2.1提供了基于Dojo的Ajax标签,对Ajax操作进行了进步封装,可以更快捷容易的使用Ajax使用Struts2.1的Ajax标签前必须进行如下操作将struts2-dojo-plugin-2.1.x.x.jar复制到WEB-INF\lib目录在JSP页面中导入Ajax标签
在JSP页面中加入head标签,负责在页面上导入Dojo所需要的CSS库和JavaScript库
<%@taglibprefix="sx"uri="/struts-dojo-tags"%>
<sx:head/>Struts2.1的Ajax标签方法名说明<sx:div>创建一个div区域,可以通过Ajax向其中加载内容,以实现局部刷新 <sx:submit>通过Ajax来更新某个元素的内容或提交表单<sx:a>通过Ajax来更新某个元素的内容或提交表单<sx:tabbedPanel>创建一个标签面板,由<s:div>来提供内容。<pleter>根据用户输入提供输入建议,或者帮助用户自动完成输入<sx:tree>创建一个支持Ajax的树形组件(Widget)使用Ajax技术实现如下需求:页面有三个div:div1、div2、div3div1的内容每隔5秒时间自动更新一次,每隔30分钟提示用户休息一下(刷新多次)开始访问时,在div2中显示欢迎信息(刷新一次)整个访问过程中div3中内容保持不变(无刷新)使用<sx:div>标签来实现div标签4-1第一步:创建页面divTest.jsp使用<sx:div>标签来定义三个divdiv标签4-2...<%@taglibprefix="sx"uri="/struts-dojo-tags"%><html> <head> <sx:head/> </head> <body> <s:urlid="time"value="/time.action"/> <s:urlid="e"value="/e.action"/> <sx:divid="div1"updateFreq="5000"href="%{time}"> 初始的内容。 </sx:div><br/> <sx:divid="div2"href="%{e}">初始的内容。</sx:div><br/> <sx:divid="div3">初始的内容。</sx:div> </body></html>每隔5秒异步访问一次导入Ajax标签添加head标签只异步访问一次无异步访问第二步:创建页面time.jsp响应div1的异步请求用其内容刷新div1div标签4-3<% longcurrentTime=System.currentTimeMillis();//获取当前时间
//获取开始时间
LongstartTime=(Long)session.getAttribute("startTime"); if(startTime==null){//第一次访问
startTime=currentTime; session.setAttribute("startTime",startTime); } longusedTime=(currentTime-startTime)/1000;//以秒计算的已用时间
…%><s:iftest="#request.rest==true">你该稍微休息一下了。</s:if><s:else>
你已经访问的时间:<s:propertyvalue="#request.uTime"/>秒。<br></s:else>计算并返回已经访问的时间第三步:创建欢迎页面e.jsp响应div2的异步请求仅返回“欢迎你访问该系统!”第四步:配置struts.xmldiv标签4-4<struts> <packagename="struts2"extends="struts-default"> <actionname="time"> <result>/asyn/time.jsp</result> </action> <actionname="e"> <result>/asyn/e.jsp</result> </action> …… </package></struts>演示示例:<sx:div>标签的使用使用Ajax技术实现如下需求:页面有两个div,还有一个超链接单击超链接后在div1中出现登录表单如果登录成功,在div2中显示登录成功;登录失败在div2中显示登录失败使用<sx:div>标签来定义div,使用<sx:a>和<sx:submit>定义超链接和提交按钮submit和a标签5-1第一步:创建页面aTest.jsp,使用<sx:a>来定义超链接,<sx:div>定义divsubmit和a标签5-2...<%@taglibprefix="sx"uri="/struts-dojo-tags"%><html> <head>
<sx:head/> </head> <body> <s:urlid="login"value="/tologin.action"/>
<sx:ahref="%{login}"targets="div1">用户登录</sx:a><br/> <sx:divid="div1"cssStyle="border:1pxsolidred;">
第一个DIV,显示登录菜单。
</sx:div><br/> <sx:divid="div2"cssStyle="border:1pxsolidgreen;">
第二个DIV,显示登录结果。
</sx:div> </body></html>单击超链接异步访问指定Action第二步:创建登录页面login.jsp通过<sx:submit>标签来异步提交表单submit和a标签5-3...<html> <head> <sx:head/> </head> <body> <h2>用户登录</h2> <s:formid="form1"action="login"> <s:textfieldname="username"label="用户名"/> <s:passwordname="password"label="密码"/>
<sx:submittype="button"value="表单内提交"targets="div2"/> </s:form>
<sx:submittype="button"value="表单外提交" targets="div2"formId="form1"/><br> <sx:atargets="div2"formId="form1">我也可以提交表单</sx:a> </body></html>第三步:创建loginAction负责处理登录请求submit和a标签5-4publicclassLoginActionextendsActionSupport{ privateStringusername; privateStringpassword; ……//省略getter和setter方法
publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)) returnSUCCESS; else returnERROR; }}第四步:配置struts.xml第五步:创建success.jsp和error.jsp页面仅仅返回“登录成功!”和“登录失败!”提示信息submit和a标签5-5<struts> <packagename="struts2"extends="struts-default"> …… <actionname="tologin"> <result>/asyn/login.jsp</result> </action> <actionname="login"class="cn.jbit.action.LoginAction"> <result>/asyn/success.jsp</result> <resultname="error">/asyn/error.jsp</result> </action> </package></struts>单击“用户登录”超链接显示登录菜单单击表单提交按钮显示登录结果演示示例:<sx:a>和<sx:submit>的使用指导——使用Ajax分页显示租房信息训练要点:Struts对Ajax的支持<s:div>、<s:submit>、<s:a>标签的使用需求说明:进入系统后以分页的形式显示租房的信息,单击具体页号超链接显示指定页的租房信息实现思路:1、通过<s:div>显示首页租房信息2、通过<s:a>标签建立多个页号超链接难点分析:Struts2的Ajax标签的使用讲解需求说明完成时间:20分钟指导——使用Ajax分页显示租房信息训练要点:Struts对Ajax的支持<s:div>、<s:submit>、<s:a>标签的使用需求说明:进入系统后以分页的形式显示租房的信息,单击具体页号超链接显示指定页的租房信息实现思路:1、分页租房信息的遍历显示在result页面中实现,在div中返回结果2、进行系统后首先显示第一页租房信息3、单击页号超链接异步显示指定页租房信息到div难点分析:Struts2的Ajax标签的使用讲解需求说明完成时间:20分钟共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解对租房屋用户注册功能进行验证用户名:不能为空,长度在6和10之间密码:不能为空,密码长度>=6确认密码:必须和密码相同电话:不能为空,符合电话号码格式用户姓名:不能为空,长度在2和4之间使用验证框架进行验证用户无需编码,在外部配置文件中指定某个字段的验证类型,并提供出错信息即可使用验证框架可以减轻开发者负担,提高开发效率验证框架6-1第一步:创建RegisterAction实现对用户注册的处理第二步:在struts.xml中配置action通过“input”指定验证错误时需返回的页面验证框架6-2publicclassRegisterActionextendsActionSupport{
privateUseruser;//用户信息
privateStringrepassword; //确认密码
… publicStringexecute(){ returnSUCCESS; }}<actionname="register" class="cn.jbit.houserent.action.RegisterAction"> <resultname="success">/index.jsp</result>
<resultname="input">/page/register.jsp</result></action>第三步:创建注册页面register.jsp第四步:创建验证文件验证框架6-3<s:formaction="register"> <s:textfieldname=""label="用户名"/> <s:passwordname="user.password"label="密码"/> <s:passwordname="repassword"label="确认密码"/> <s:textfieldname="user.telephone"label="电话"/> <s:textfieldname="user.username"label="用户姓名"/> <s:submitvalue="立即注册"></s:submit></s:form><?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEvalidatorsPUBLIC "-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" ""><validators></validators>第五步:使用验证框架编写验证规则用户名:不能为空,长度在6和10之间验证框架6-4<validators> <fieldname=""> <field-validatortype="requiredstring"> <paramname="trim">true</param> <message>用户名不能为空</message> </field-validator>
<field-validatortype="stringlength"> <paramname="maxLength">10</param> <paramname="minLength">6</param> <message>用户名长度须在${minLength}和 ${maxLength}之间</message> </field-validator> </field> </validators>第五步:使用验证框架编写验证规则密码:不能为空,密码长度>=6密码和确认密码必须一致验证框架6-5<validators> <fieldname="user.password"> … </field> <fieldname="repassword"> … <field-validatortype="fieldexpression"> <paramname="expression">
user.password==repassword </param> <message>密码和确认密码必须相同</message> </field-validator> </field> </validators>第五步:使用验证框架编写验证规则电话号码:不能为空,符合电话号码格式验证框架6-6<validators> <fieldname="user.telephone"> <field-validatortype="requiredstring"> <message>电话号码不能为空</message> </field-validator> <field-validatortype="regex"> <paramname="expression">
^(\d{3,4}-){0,1}(\d{7,8})$ </param> <message>电话号码格式不正确</message> </field-validator> </field></validators>演示示例:使用验证框架进行验证指导——实现对租房信息发布的验证训练要点:Struts2验证框架需求说明:使用验证框架对租房信息发布的相关字段进行验证标题:非空,长度在6和20之间面积:整数,小于200价格:浮点数联系方式:电话或手机详细信息:非空,小于300字实现思路:参考本章解决方案讲解需求说明完成时间:20分钟共性问题集中讲解常见调试问题及解决办法代码规范问题共性问题集中讲解国际化(Internationalization:I18N)使程序在不做任何修改的情况下,可以在不同国家或地区和不同语言环境下,按照当地的语言和格式习惯显示字符本地化(Localization:L10N)一个国际化的程序,当它运行在本地机器时,能够根据本地机器的语言和地区设置显示相应字符国际化和本地化国际化和本地化Java程序的国际化思路将程序中的提示信息、错误信息等放在资源文件中,为不同国家/语言编写对应资源文件资源文件由很多key-value对组成,key保持不变,value随国家/语言不同而不同这些资源文件使用共同的基名,通过在基名后面添加语言代码、国家和地区代码来进行区分资源文件名说明ApplicationResources_perties所有英文语言的资源ApplicationResources_perties所有的中文语言的资源ApplicationResources_zh_CN.properties针对中国大陆的、中文语言的资源ApplicationResources_zh_HK.properties针对中国香港的、中文语言的资源ApplicationRperties默认资源文件,如果请求的资源文件不存在,将调用它的资源进行显示实现对租房网用户注册功能的国际化对英文用户显示英文界面和验证错误信息对中国香港用户显示繁体中文界面和验证错误信息对其他用户显示简体中文界面和验证错误信息实现国际化步骤在struts.xml中指定资源文件的基名及存储路径按照需求创建对应的三个资源文件,存放相应资源实现JSP页面信息的国际化显示实现验证错误信息的国际化显示使用Struts2实现国际化4-1第一步:指定资源文件的基名及存储路径第二步:创建对应的三个资源文件位置在src目录下,或者直接在WEB-INF/classes目录名称message_pertiesmessage_zh_HK.perties使用Struts2实现国际化4-2<struts> <constantname="struts.custom.i18n.resources"value="message"/> <constantname="struts.i18n.encoding"value="UTF-8"/> …… </struts>第三步:实现JSP页面信息的国际化显示使用Struts2实现国际化4-3<html> <head> <title>
<s:textname="register.page"/> </title> </head> <body> <h2>
<s:textname="register.title"/> </h2> <s:formaction="register"> <s:textfieldname=""key="name"/> <s:passwordname="user.password"key="password"/> <s:passwordname="repassword"label="%{getText('repassword')}"/> <s:textfieldname="user.telephone"label="%{getText('telephone')}"/> <s:textfieldname="user.username"label="%{getText('username')}"/> <s:submitvalue="%{getText('submit')}"/> </s:form> </body></html>注册页面#message_pertiesregister.page=HouserRent-UserRegisterregister.title=NewUserRegistername=Name…submit=RegisterNow#message_zh_HK.propertiesregister.page=青鳥租房-用戶註冊register.title=新用戶註冊name=用戶名…submit=立即註冊#pertiesregister.page=青鸟租房-用户注册register.title=新用户注册name=用户名…submit=立即注册演示示例:JSP页面信息的国际化显示资源文件第四步:实现验证错误信息的国际化显示使用Struts2实现国际化4-4#message_pertiesname.null=Namecannotbenullname.length=Nameshouldbebetween${minLength}and${maxLength}password.null=Passwordcannotbenullpassword.length=Mininumpasswordlengthis${minLength}…#message_zh_HK.propertiesname.null=用戶名不能為空name.length=用戶名長度必須在
${minLength}和${maxLength}之間password.null=密碼長度不能為空password.length=密碼長度必須大於等於${minLength}…#pertiesname.null=用户名不能为空name.length=用户名长度必须在${minLength}和${maxLength}之间password.null=密码不能为空password.length=密码长度必须大于等于${minLength}…资源文件<validators> <fieldname=""> <field-validatortype="requiredstring"> <paramname="trim">true</param> <messagekey="name.null"/> </field-validator>
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度项目进度对赌协议3篇
- 生猪栏位设计与建设技术转让协议04
- 2024年度东莞城市亮化工程项目合同2篇
- 药品购销合同模板完整版
- 2024年度店面物业:租赁合同与物业服务协议2篇
- 铝合金门窗材料购销合同范本 2篇
- 2024年版豪华住宅区公寓销售协议3篇
- 2024年度环境监理工程师服务合同3篇
- 开展青年员工培训提升
- 人教版九年级化学第二单元我们周围的空气2氧气课时1氧气的性质教学教学课件
- 《我的白鸽》课件
- 国开2024年《中国法律史》平时作业1-3答案
- 大学生职业规划大赛成长赛道参赛作品
- GB 17790-2008家用和类似用途空调器安装规范
- 五年级上册数学课件 -《平行四边形的面积》 人教版(共15张PPT)
- 污水处理厂土建工程施工进度计划横道图
- PSPC作业指导书用书
- 安培环路定理及应用PPT课件
- TS3000在航天炉煤化工中应用
- 关于公司办公用房超标的情况报告
- 生产车间环境管理制度
评论
0/150
提交评论