ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:1.05MB ,
资源ID:17834788      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17834788.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(尚学堂科技马士兵Struts2学习小结v10Word格式文档下载.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

尚学堂科技马士兵Struts2学习小结v10Word格式文档下载.docx

1、2)必须勾选“Copy projects into workspace”3) 唯一可能出现的问题:拷贝项目的 JRE System Library 的存储路径,重新Configure Build Path即可建立第3个Struts2小项目:Struts2_0300_Action1、关于Action的详述 1) 如果不包含class属性,则会自动默认调用- xwork-core-2.1.6.jar - com.opensymphony.xwork2.ActionSupport ActionSupport implements Action Action是一个含public String exec

2、ute()方法的接口- 这个class必须含public String execute()方法 2) 如果不包含name属性,则会自动默认设置name=success;否则 name等于execute()方法的返回值 3)如何编写一个Action的类? - 含execute()方法的普通类 - implements Action接口的类,则必须实现execute()方法 - extends ActionSupport的类2、重申Struts2的工作原理 1)client提交一个客户端请求 2)服务器接收到这个请求后,会根据web.xml中的寻找,调用doFilter()方法 3)strtus2

3、filter根据struts2.xml检查 - namespace - action:根据class来处理 - result:根据name来处理 4)读出result中的.jsp页面,并返回给客户端建立第4个Struts2小项目:Struts2_0400_Path1、struts2中的路径问题是根据action的路径而不是JSP的路径来确定,所以尽量不要使用相对路径,统一使用绝对路径2、可以由如下生成绝对路径- request.getScheme(): http - request.getServerName():localhost - request.getServerPort():8080

4、,端口号 -%String path = request.getContextPath();String basePath = request.getScheme()+:/+request.getServerName()+request.getServerPort()+path+/;%head- 设置base标签,当前页面的所有超链接前面都会自动加上basePath -base href=%=basePath% /headbodya href=index.jspindex.jsp/body建立第5个Struts2小项目:Struts2_0500_ActionMethod1、可以为Action指

5、定method属性,而class属性的类UserAction中只有一个add ()方法1)输入 http:8080/Struts2_0500_ActionMethod/user/userAdd,则根据userAdd的method方法调用class属性类中相应方法2)输入 http:8080/Struts2_0500_ActionMethod/user/user!add,则根据user!add调用相应class属性类中的法中2、总结1)Action执行的时候并不一定要执行execute方法2)可以在配置文件中配置Action的时候用method=来指定执行哪个方法,也可以在url地址中动态指定(

6、动态方法调用DMI)(推荐),而前者会产生太多的action,所以不推荐使用建立第6个Struts2小项目:Struts2_0600_ActionWildcard1、关于通配符(Wildcard),请先看struts2的配置文件,其中包com.struts2.action中存在两个类:StudentAction,TeacherAction,均含add()和delete()方法输入http:8080/Struts2_0600_ActionWildcard/actions/Studentadd,*会匹配add,而1则匹配出现的第一个*8080/Struts2_0600_ActionWildcard

7、/actions/Teacher_add,*_*会一次匹配为Teacher和add,12则匹配相对应的*2、使用通配符,将配置量降到最低;不过,一定要遵守约定优于配置的原则:类名相似,且方法同名,如StudentAction,TeacherAction,均含add()和delete()方法建立第7个Struts2小项目:Struts2_0700_ActionAttrParamInput建立第8个Struts2小项目:Struts2_0800_DomainModelParamInput建立第9个Struts2小项目:Struts2_0900_ModelDrivenParamInput1、用Act

8、ion的属性接收参数- 在自定义的Action中设置属性,以及Setters和Getters方法- 先看struts.xml文件,其中class属性的类UserAction含有add方法,两个私有属性:private String name;private int age;以及get和set方法: public String getName() public void setName(String name) public int getAge() public void setAge(int age) - 在浏览器中输入:8080/Struts2_0700_ActionAttrParamIn

9、put/user/user!add?name=a&age=8,将会调用user下的add方法,并传递name和age两个参数,这里有一个好处,就是不需要再对接受到的int参数转型。- 接收参数赋值时,调用的是属性的setUser、getUser方法,而不是直接调用属性2、使用用Domain Model(域模型)接收参数 - 实际上就是先封装成一个类,即域,然后作为一个属性传递给自定义的Action类 - 如下struts.xml,其中class属性类中存在一个add方法以及一个私有属性和对应setUser、getUser方法: private User user; 而User是包com.str

10、uts2.user.model中的一个类,含有同1中的属性和方法8080/Struts2_0800_DomainModelParamInput/user/user!user.name=a&user.age=8,会自动将参数赋给域User- 想初始化Domain Model,可以自己new,也可以参数传值,但这时候需要保持参数为空的构造方法。- 如果传递的参数和域不匹配,则需要借助DTO(Date Transfer Object)或者VO(Value Object)进行中转,如注册界面,用户只需要用户名和密码,但是注册界面肯定还有个密码确认,这就需要进行中转匹配了。3、使用ModelDriven

11、(模型驱动)传递参数1)分析自定义的Action类 - 实现了ModelDriven接口,而ModelDriven一个接口,仅含一个T getModel()方法,则自定义Action必须实现这个getModel()方法- 此时,User对象必须自己去new一个2)Struts2重点在MVC的M层,即编写自定义的Action去协同Model和View的衔接3)工作原理: - Filter类接收到Client传递的参数,然后首先会new一个User对象 - 检查Action,发现已实现了ModelDriven接口,然后调用getModel()方法,为返回的Model调用set和get进行封装 -

12、得到User对象的值4)在浏览器输入:8080/Struts2_0900_ModelDrivenParamInput/user/user!age=8,则可跟第一种使用Action属性传参方式的输入形式一样,不再赘述建立第10个Struts2小项目:Struts2_1000_CharacterEncoding1、观察web.xml中的的配置2、观察Struts.xml的配置 说明:constant name=struts.i18n.encoding value=GBK,即可解决中文乱码问题,但是,Struts2.1.6中存在Bug,所以,在web.xml将filter改为Struts2.0的Fi

13、lter,即可重新解决中文乱码问题,而使用新的版本Struts2.1.8,则可以顺利修正Struts2.1.6中的Bug,此时web.xml中的配置又可以改过来了!建立第11个Struts2小项目:Struts2_1100_SimpleDataValiation1、首先查看struts.xml的文件配置信息2、直接在自定义的Action内编写验证,如下所示:因为Action里面不存在request来设置错误信息传递给前台,可以使用如下的方式this.addFieldError(String fieldName, String errorMessage)进行传值3、查看前台处理错误信息的文件us

14、er_add_error.jsp 1)查看源代码1. ,可以在对应的Jar包中查找: struts-2.1.8.1libstruts2-core-2.1.8.1META-INFstruts-tags.tld 2.关于/s:,以下显示的是Value Context 建立第12个Struts2小项目:Struts2_1200_AccessWebElements如何获取Web元素?- 包括Map类型:request、ession、application,真实类型:HttpServletRequest、HttpSession、ServletContext1、依赖于容器,如以下LoginAction1的

15、源代码:2、依赖于IoC,最常用的,如以下LoginAction2的源代码:3、依赖于容器,如以下LoginAction3的源代码:4、依赖于IoC,如以下LoginAction4的源代码:5、如何在页面获取request、ession、application? - 这些对象属于Action Context的内容,访问需要在前面加上“#” 说明:关于,以下显示的Action Context6、工作原理(关于LoginAction2) - Struts2接收来自客户端的请求,然后根据struts.xml文件的Action配置,先new一个LoginAction对象 - 检查该LoginActio

16、n是否实现了RequestAware接口? - 若实现,则调用setRequest(Map request)方法从Filter中读取预先配置的request的,并映射给一个Map类型的request对象 - 则execute()即可直接调用得到的Map类型的request建立第13个Struts2小项目:Struts2_1300_IncludeModules1、模块包含,简单的说,就是struts.xml文件的嵌套 - struts.xml如下所示 - login.xml如下所示建立第14个Struts2小项目:Struts2_1400_DefaultAction1、建立默认的Action,可

17、以在浏览器输入访问时不指定Action,或者当访问的Action不存在的时候,均可调用默认的Action,如下图struts.xml的配置: - 浏览器输入:8080/Struts2_1400_DefaultAction/index,可访问8080/Struts2_1400_DefaultAction/,可访问8080/Struts2_1400_DefaultAction/login,可访问建立第15个Struts2小项目:Struts2_1500_ResultType1、Result的类型Type:包括dispatcher、redirect 、chain 、redirectAction、fr

18、eemarker、httpheader 、stream(上传下载) 、velocity、xslt、plaintext、tiles,参考如下struts.xml的配置:建立第16个Struts2小项目:Struts2_1600_GlobalResult1、关于struts.xml文件的配置:- 用来配置全局的Result - extends的作用建立第17个Struts2小项目:Struts2_1700_DynamicResult2、关于UserAction的源代码:3、在浏览器输入:8080/Struts2_1700_DynamicResult/user/user?type=1,返回的Resu

19、lt的结果则是则是/user_success.jsp,即$r=/user_success.jsp在浏览器输入:type=2,返回的Result的结果则是则是/user_error.jsp,即$r=/user_error.jsp建立第18个Struts2小项目:Struts2_1800_ResultWithParams1、在Action之间forward的时候,不需要重新传递参数,但是,当客户端跳转到jsp页面的时候,就需要重新传递参数,此时,value Stack中因为没有Action,所以没有值的保存;但是,可以从Action Context的parameters参数获取传递的值。2、关于s

20、truts.xml文件的配置:3、关于UserAction的源代码:3、如何读取?使用Action Stack的parameters参数读取。关于user_success.jsp的源代码如下:建立第19个Struts2小项目:Struts2_1900_OGNL1、Object Graph Navigation Language2、关于struts.xml配置如下:3、关于ongl.xml配置如下:4、如何使用OGNL?ol 访问值栈中的action的普通属性: username: /li访问值栈中的对象的普通属性(get set方法): user.age:user.age | 访问静态方法:c

21、om.tim.struts2.ognl.Ss()访问静态属性:com.tim.struts2.ognl.SSTR访问Math类的静态方法:max(2,3)hr /访问普通类的构造方法:new com.tim.struts2.ognl.User(8)访问List:users访问List中某个元素:users1访问List中元素某个属性的集合:users.age访问List中元素某个属性的集合中的特定值:users.age0users0.age访问Set:dogs访问Set中某个元素:dogs1访问Map:dogMap访问Map中某个元素:dogMap.dog101dogMapdog101dogMapdog101访问Map中所有的key:dogMap.keys访问Map中所有的value:dogMap.values访问容器的大小:dogMap.size()users.size- ?表示条件,表示满足条件的集合中开头的第一个,$表示满足条件的集合中的最后一个 -投影(过滤):users.?#this.age=10投影:users.#this.age1.ageusers.$#this.age1.age = null- 可以从上到下读出value stack里面存的对象 -

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1