段建国-课件tp02回顾与作业点评_第1页
段建国-课件tp02回顾与作业点评_第2页
段建国-课件tp02回顾与作业点评_第3页
段建国-课件tp02回顾与作业点评_第4页
段建国-课件tp02回顾与作业点评_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Struts2初体验第二章回顾与作业点评ModelI模式开发存在哪些弊端?什么是MVC设计模式?自定义MVC框架的步骤提问2Struts2及其优势Struts2是一个MVC框架,以WebWork框架的设计思想为核心,吸收了Struts1的部分优点Struts2拥有更加广阔的前景,自身功能强大,还对其他框架下开发的程序提供很好的兼容性3Struts2的资源获取Struts官方地址:本书选取Struts进行讲解Struts2目录结构apps目录:Struts2示例应用程序docs目录:Struts2指南、向导、API文档lib目录:Struts2的发行包及其依赖包src目录:Struts2项目源代码4Struts2初体验7-1使用Struts2实现:输入用户姓名,然后输出欢迎信息问题5Struts2初体验7-2使用Struts2开发程序的基本步骤加载Struts2类库配置web.xml文件开发视图层页面开发控制层Action配置struts.xml文件部署、运行项目分析6Struts2初体验7-3Struts2类库文件名说明struts2-core-xxx.jarStruts2框架的核心类库xwork-core-xxx.jarXWork类库,Struts2的构建基础ognl-xxx.jarStruts2使用的一种表达式语言类库freemarker-xxx.jarStruts2的标签模板使用类库javassist-xxx.GA.jar对字节码进行处理commons-fileupload-xxx.jar文件上传时需要使用commons-io-xxx.jarJavaIO扩展commons-lang-xxx.jar包含了一些数据类型的工具类7Struts2初体验7-4配置web.xml<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter </filter-class></filter>

<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>将全部请求定位到指定的Struts2过滤器中8Struts2初体验7-5编写helloWorld.jsp… <div> <h1> <!--显示StrutsAction中message的属性内容--> <s:propertyvalue="message"/> </h1> </div> <div> <formaction="helloWorld.action"method="post"> 请输入您的姓名: <inputname="name"type="text"/> <inputtype="submit"value="提交"/> </form> </div>…输出显示语句9Struts2初体验7-6编写HelloWorldActionpublicclassHelloWorldActionimplementsAction{ //用户输入的姓名 privateStringname=""; //向用户显示的信息 privateStringmessage=""; publicStringexecute(){ //根据用户输入的姓名,进行"Hello,XXXX!"的封装 this.setMessage("Hello,"+this.getName()+"!"); //处理完毕,返回导航结果的逻辑名 return"success"; } … //省略setter、getter方法}10Struts2初体验7-7配置Struts2配置文件(struts.xml)部署、运行项目<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <packagename="default"namespace="/"extends="struts-default"> <actionname="helloWorld" class="cn.jbit.strutsdemo.HelloWorldAction"> <resultname="success">helloWorld.jsp</result> </action> </package></struts>与Action返回字符串对应与form表单的action属性值对应演示示例1-4:第一个Struts2程序11Struts2开发小结开发Struts2应用的基本环节确认环境是否添加了Struts2框架支持文件是否配置了Filter功能实现编写Action类配置struts.xml文件编写视图12Struts2再体验3-1如何使用Struts2实现用户登录验证实现步骤和Struts2初体验相同问题分析13Struts2再体验3-2开发控制层Action-LoginActionpublicclassLoginActionimplementsAction{ privateStringusername=""; privateStringpassword=""; publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)){ return"success"; }else{ return"error"; } }} 14Struts2再体验3-3配置Struts2配置文件(struts.xml)<packagename="default"namespace="/"extends="struts-default"> <actionname="login"class="cn.jbit.strutsdemo.LoginAction"> <!--结果为“success”时,跳转至success.jsp页面--> <resultname="success">success.jsp</result> <!--结果为"error"时,跳转至fail.jsp页面--> <resultname="error">fail.jsp</result> </action></package>演示示例5-6:使用Struts2实现用户登录15学员操作——添加用户登录需求说明:为租房网添加Struts2框架支持使用Struts2框架实现用户登录在LoginAction中获得用户名及密码并对其合法性进行验证配置struts.xml文件,用户登录成功和失败跳转的页面练习完成时间:25分钟提示16共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解17Struts2访问ServletAPI4-1如果登录成功后,如何使用session保存用户信息?Struts2访问ServletAPI的方式与ServletAPI解耦的访问方式与ServletAPI耦合的访问方式问题分析18Struts2访问ServletAPI4-2与ServletAPI解耦的访问方式对ServletAPI进行封装提供了三个Map对象访问request、session、application作用域通过ActionContext类获取这三个Map对象Objectget("request")MapgetSession()MapgetApplication()publicclassLoginActionimplementsAction{ privatestaticfinalStringCURRENT_USER="CURRENT_USER"; …//省略username、password属性及其setter和getter方法 publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)){ Map<String,Object>session=null; session=ActionContext.getContext().getSession(); if(session.containsKey(CURRENT_USER)){ session.remove(CURRENT_USER); } session.put(CURRENT_USER,username); return"success"; }else{ return"error"; } }}以key/value形式保存数据从ActionContext中获取session19Struts2访问ServletAPI4-3页面显示<body> <h1>读取Session中保存的用户名</h1> <div>欢迎您,${sessionScope.CURRENT_USER}!</div></body>演示示例7-11:使用Session保存用户名从session中读取数据20Struts2访问ServletAPI4-4与ServletAPI耦合的访问方式通过ServletActionContext类获取ServletAPI对象ServletContextgetServletContext()HttpServletResponsegetResponse()HttpServletRequestgetRequest()通过request.getSession()获取session对象通过xxx.setAttribute()和xxx.getAttribute()功能,在不同的页面或Action中传递数据publicclassLoginActionimplementsAction{ privatestaticfinalStringCURRENT_USER="CURRENT_USER"; …//省略username、password属性及其setter和getter方法 publicStringexecute(){ if("jbit".equals(username)&&"bdqn".equals(password)){ HttpSessionsession=null; session=ServletActionContext.getRequest().getSession(); if(session.getAttribute(CURRENT_USER)!=null){ session.removeAttribute(CURRENT_USER); } session.setAttribute(CURRENT_USER,username); return"success"; }else{ return“error"; } }}以setAttribute()的方式保存数据获取session21学员操作——session保存数据需求说明:用户登录成功后,使用session保存用户信息在登录成功后读取用户名显示在LoginAction中获得用户名及密码并对其合法性进行验证登录成功后以解耦的方式获取session练习完成时间:25分钟提示22共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解23Struts2的数据校验2-1对用户登录添加表单验证功能Struts2的提供了数据验证机制继承ActionSupport类来完成Action开发ActionSupport类不仅对Action接口进行简单实现,同时增加了验证、本地化等支持问题分析24Struts2的数据校验2-2修改LoginActionpublicclassLoginActionextendsActionSupport{//......省略代码publicvoidvalidate(){ if(this.getUsername().length()==0){ addFieldError("name","用户名不能为空");}if(this.getPassword().length()==0){ addFieldError("pwd","密码不能为空");}} //......省略代码}继承ActionSupport验证出错,指定错误提示信息25Struts2标签如何将Action的错误信息在页面输出?使用Struts2提供的标签来完成问题分析<%@taglibprefix="s"uri="/struts-tags"%>需要在页面中引入Struts2的标签库26Struts2表单标签2-1常用表单标签标签说明<s:form>…</s:form>表单标签<s:textfield>…</s:textfield>文本输入框<s:password>…</s:password>密码输入框<s:textarea>…</s:textarea>文本域输入框<s:radio>…</s:radio>单选按钮<s:checkbox>…</s:checkbox>多选框<s:submit/>提交标签<s:reset/>重置标签<s:hidden/>隐藏域标签27Struts2表单标签2-2修改JSP页面<%@taglibprefix="s"uri="/struts-tags"%>…<div> <s:fielderror/></div><s:formaction="/login.action"> <div> 用户名:<s:textfieldname="username"/> </div> <div> 密码:<s:passwordname="password"/> </div> <div><s:submitvalue="登录"/></div></s:form> 显示服务器返回的错误信息演示示例12-13:数据校验与Struts2标签28Struts2通用标签2-1使用Struts2标签是否可以在页面中实现逻辑控制?使用Struts2的通用标签条件判断标签迭代标签问题分析29Struts2通用标签2-2常用通用标签名称标签说明条件标签<s:if>……</s:if>根据表达式的值,判断将要执行的内容<s:elseif>……</s:elseif><s:else>……</s:else>迭代<s:iterator>……</s:iterator>用于遍历集合30条件标签条件判断标签语法<s:iftest="表达式"> 需要执行的代码</s:if><s:elseiftest="表达式"> 需要执行的代码</s:elseif><s:else> 需要执行的代码</s:else>表达式条件为true时,执行相应的代码31

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论