SSHStruts2.docx
- 文档编号:2875822
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:13
- 大小:203.15KB
SSHStruts2.docx
《SSHStruts2.docx》由会员分享,可在线阅读,更多相关《SSHStruts2.docx(13页珍藏版)》请在冰豆网上搜索。
SSHStruts2
Ø在src的struts.xml中添加如下常量,可以启动开发模式,能及时读取修改信息:
--设置开发模式为启动,能及时读取修改内容-->
ØStruts的作用:
将请求和视图分开;
Ø在MyEclipse中直接复制项目时,一定要修改如下的WebContext-root属性,否则访问路径将不会改变,跟原项目相同:
ØStruts1中,访问Action时,Action是在启动服务器时候new出的对象,大家都访问同一个对象,而Struts2则是在每次访问时候都new一个新的对象,避免线程同步的问题。
ØStruts2的Action配置
其中,class如果不配置的话,默认使用com.opensymphony.xwork2.ActionSupport;
Ø开发中的Action全部继承com.opensymphony.xwork2.ActionSupport;
ØStruts2中的路径问题是根据action的路径而不是jsp的路径来确定,所以尽量不要使用相对路径,虽然可以使用redirect解决,但这种方式并非必要。
解决方法:
绝对路径(request.getContextRoot拿到webapp路径),或使用myeclipse的basepath;
Ø路径问题myeclipse的处理方式:
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"
+request.getServerName()+":
"+request.getServerPort()+path+"/";
//取到本项目的绝对路径(如http:
//localhost:
8080/Test/)
%>
Ø调用自定义方法的配置:
--第一种使用自定义方法的配置,指定method-->
method="add"> --第二种,使用时,地址栏使用user! add即可调用到add方法--> 第一种会产生过多的action,所以推荐第二种方法(动态方法调用DMI),但第二种的result只能有一个,多个result时仍需要配置; ØWildcard: 通配符; Ø使用通配符,可将配置量降到最低,可以解决上边一个配置不能有多个result的问题,但一定要遵循“约定优于配置”的原则; Ø通配符匹配时,如果有多个action都能匹配时,选最精确的匹配,如果匹配时满足条件的都有通配符,按照配置顺序来匹配; Ø参数传递: 属性参数接收: 在Action中可以定义属性并生成getter和setter,通过get传递参数(参数名和属性名一一对应)时,Struts2可以自动识别参数并赋值(自动进行类型转换); 域模型参数接收: 在Action中定义类的对象,并生成getter和setter,通过对象名.属性名=xxx来传递参数;(可以使用DTO(数据传输对象)来接收全部参数,处理后再交给实体类对象); ModelDriven实现的Action接收参数: Action实现接口ModelDriven Ø字符编码: struts.xml中: (默认就是utf-8)(struts2.1.6中,编码有bug,需要使用spring的filter或者在web.xml中,使用struts2.0的filter) ØWeb元素的多种取得方法: (如果出现不能取得对象的情况,查看web.xml中的 1.取得Map类型的request/session/application: publicLoginAction_1(){ this.request=(Map)ActionContext.getContext().get("request"); this.session=ActionContext.getContext().getSession(); this.application=ActionContext.getContext().getApplication(); }; 2.取得Map类型的request/session/application: (DI/IoC方式)(最常用) (DI: dependencyinjection/IoC: inverseofcontrol) 继承RequestAware,SessionAware,ApplicationAware并实现方法; 3.取得正常的Web元素: publicLoginAction_3(){ this.request=ServletActionContext.getRequest(); this.session=request.getSession(); this.application=session.getServletContext(); } 4.取得正常的Web元素: (DI/IoC方式) 继承ServletRequestAware并实现方法(session通过request取得,application通过session取得); Ø模块包含(多人开发): 在struts.xml中添加 Ø默认Action: (当该namespace下没有找到对应的Action后,自动跳转到默认Action) ØResult类型: dispatcher(服务器跳转到页面);redirect(客户端跳转到页面);chain(服务器跳转到action);redirectAction(客户端跳转到action);其中前两种常用。 此外,还有freemarker;httpheader;stream(上传下载);velocity;xslt(xml相关语言);plaintext(展示页面未转换之前的源码);tiles; Øchain跳转到另外package下的action时,配置如下: --Chaintoanothernamespace--> Ø全局结果集定义: (package下定义,表示该结果集对于该包下的每个action都适用) Ø包的继承: Ø动态Result: (了解即可) Action中需要有属性r,动态赋值: if(type==1){ this.r="/success.jsp"; }elseif(type==2){ this.r="/error.jsp"; } returnSUCCESS; Ø带参数的结果集: (客户端跳转时可能使用到,传递上次的参数) t=${type}(type是action类中的属性) Ø直接跳转jsp时,valuestack为空,不能直接 propertyvalue="t"/>取值,需要通过 propertyvalue="#parameters.t"/>取得stackcontext中的内容; Ø对于自定义的类的对象(如Useruser,有xxx属性),只有在传递参数user.xxx之后,该类的对象才能自动构造(必须存在默认构造);当然自己new对象也可以; ØOGNL(Object-GraphNavigationLanguage): 访问值栈action的属性/方法: propertyvalue="xxx"/>(xxx为属性名或方法名()); 访问值栈中对象的属性/方法: propertyvalue="对象名.xxx"/>(xxx为属性名或方法名()); 访问静态属性/方法: @包.类名称@方法名()/属性名;(如果要访问静态方法,struts.xml需要配置常量: 访问Math类静态方法: @@方法名称; 访问普通类的构造方法: propertyvalue="new包.类名称(参数列表)"/>; 访问List: propertyvalue="List变量名"/>; 访问List中某个元素: pro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SSHStruts2
![提示](https://static.bdocx.com/images/bang_tan.gif)