Struts2知识点总结.docx
- 文档编号:29379753
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:14
- 大小:29.04KB
Struts2知识点总结.docx
《Struts2知识点总结.docx》由会员分享,可在线阅读,更多相关《Struts2知识点总结.docx(14页珍藏版)》请在冰豆网上搜索。
Struts2知识点总结
1.简介
Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。
其全新的Struts2的体系结构与Struts1的体系结构差别巨大。
Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,
2.Struts2处理流程
用户请求
根据请求的url找到action
Action
业务处理,处理请求,返回处理结果
前端控制器
StrutsPreparedAndExecuteFilter
拦截用户请求
响应用户
处理后的html
结果数据传递给jsp
Jsp页面
渲染结果
返回处理结果
3.Struts2基础
除了Metnod调用指定的方法为还有一种动态调用
1.在请求的页面就指定调用的action名称及方法,语法:
actionName!
methodName.action,action可以省略,
2.在
将请求转发到指定的Action,json返回JSON对象
如果result的内容不是一个具体的jsp页面而是${}形式的这就是动态结果的配置,就是结果页面在配置是不能确定,需要在运行时才能确定,比如管理员和普通用户登录,详细的动态结果配置详见资料
Action类实现的方法有三种
1.继承ActionSupport(常用)
2.实现Action接口
3.自己编写方法
Action接收参数
1属性方式接收参数,
2Javabean方式接收参数(常用)
3.moderlDriven方式接收参数
Struts2访问servletAPI的方法
在jsp课程中,服务器保存数据的作用域通常有request,session,application,他们对应的servletAPI分别是HttpServletRequest,HttpSession,servletContext,同样在struts2控制器(action)中也需要访问这些作用域,有三种方法
1.使用ActionContext类提供的方法
2.以依然注入(IoC)方式访问,实现响应的接口即可
3.使用以耦合方式使用ServletActionContext类访问
OGNL与struts标签
引入的标签指令<%@tagliburi="/struts-tags"prefix="s"%>
理解值栈(存储action属性的地方)和stack context(存储request,session的地方)概念,并且使用<s:
debug>查看值栈访问的值
OGNL访问集合知识点,不常用
字符串转换OGNL表达式用户%{}相反的加’’单引号
Struts2标签
可分为通用标签,控制标签,Ajax标签
通用标签又分为数据标签和控制标签
数据标签:
<s:
property>
<s:
debug>
<s:
date>
<s:
set>
<s:
url>和<s:
a>
<s:
param>
<s:
include>
控制标签
<s:
if>,<s:
elseif><s:
else>
<s:
iterator>
UI标签
理解模板与主题,模板用于生成HTML代码,共同风格和观感的模板组织到一起就成了一个主题,内建的主题有simple,xhtml,css_xhtml(默认),css_xhtml,ajax主题的更改用标签属性theme=”simple”
标签:
form> textfield> textarea> submit> select> doubleselect>下拉列框和联动列框属性及实现参观相关代码 Ajax标签 Datetimepicker是一个日历控件 导入相应的包引入<%@tagliburi="/struts-dojo-tags"prefix="sx"%>指令 在 headparseContent="true"/> 添加标签 datetimepickername="timer"label="发布时间"/> 4.数据校验 数据校验分为客户端验证和服务器端验证,sruts2对服务器端的验证有两种, 1.使用actionsupport编码实现验证 2.使用验证框架实现验证, 使用actionsupport编码进行验证的方法有三种, 1.直接在action类业务方法中验证, 2.重写validate()方法实现验证, 3.使用validateXXX()方法实现验证 验证的关键点在于当用户名或密码没填写时添加addFieldError()方法,此方法处理与字段相关的错误,比如输入的年龄不合理,响应的jsp输出错误的标签是 fielderrorfieldname=”user.name/>,addActionError()方法是用来添加与action所处理的业务相关的错误信息,在JSP输出错误的标签是 actionerror> 如果两种情况有任何一种错误(hasErrors())就return到INPUT结果集中(事先已经配置好) 使用验证框架 使用特定的配置框架即可,命名的前半部分是action的名字,可对全局和局部进行验证! 具体查看相关资料 5.拦截器 拦截器,在AOP(Aspect-OrientedProgramming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。 拦截是AOP的一种实现策略 谈到拦截器,还有一个词大家应该知道——拦截器链(InterceptorChain,在Struts2中称为拦截器栈InterceptorStack)。 拦截器链就是将拦截器按一定的顺序联结成一条链。 在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。 struts2拦截器是action调用之前或之后调用的代码 拦截器实现原理: 大部分时候,拦截器方法都是通过代理的方式来调用的。 Struts2的拦截器实现相对简单。 当请求到达Struts2的ServletDispatcher时,Struts2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器 返回类型区别 struts2中关于result的返回类型一般我们是转发到一个jsp页面或者是html页面等,但是struts2中的result的返回类型还有redirect,redirectAction,chain。 对于这三种返回类型之间肯定是有区别的,下面我们来看看关于redirectredirectActionchain这三种struts2的返回类型之间的区别。 当使用type=“redirectAction”或type=“redirect”提交到一个action并且需要传递一个参数时。 这里是有区别的: 使用type=“redirectAction”时,结果就只能写Action的配置名,不能带有后缀: “.action” 拦截器的配置 定义拦截器的标签 定义拦截器栈的标签 引用拦截器 默认的拦截器 自定义拦截器 实现自定义拦截器类的方式有3种 实现Interceptor接口 继承AbstractInterceptor抽象类(常用) 继承MethodFilterIntercePtor类 具体用法参见帮助文档 6.MVC的优缺点 优点 1各司其职,互不干涉 2.并行开发,提高效率 3.有利于组件的重用 缺点 1.系统结构和实现比较复杂 2.视图与控制器过于紧密 3.不适用于小型甚至中等规模的应用程序 7.Struts2注解 必要的jar包 commons-fileupload-1.2.1.jar commons-io-1.4.jar commons-logging-1.1.1.jar commons-logging-api.jar freemarker-2.3.15.jar ognl-2.7.3.jar struts2-core-2.1.8.1.jar xwork-core-2.1.6.jar struts2-convention-plugin-2.1.8.1.jar 其中struts2-convention-plugin-2.x.x.jar是用于支持注解的 2.web.xml的配置: [html] viewplain copy print? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 3.struts.xml的配置: [html] viewplain copy print? 1. xml version="1.0" encoding="UTF-8" ? > 2. DOCTYPE struts PUBLIC 3. "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 4. "http: //struts.apache.org/dtds/struts-2.1.7.dtd"> 5. 6. 7. -- 请求参数的编码方式 --> 8. 9. -- 指定被struts2处理的请求后缀类型。 多个用逗号隔开 --> 10. 11. -- 当struts.xml改动后,是否重新加载。 默认值为false(生产环境下使用),开发阶段最好打开 --> 12. 13. -- 是否使用struts的开发模式。 开发模式会有更多的调试信息。 默认值为false(生产环境下使用),开发阶段最好打开 --> 14. 15. -- 设置浏览器是否缓存静态内容。 默认值为true(生产环境下使用),开发阶段最好关闭 --> 16. 17. -- 指定由spring负责action对象的创建 18. 19. --> 20. -- 是否开启动态方法调用 --> 21. 22. 4.常用的注解如下: Namespace: 指定命名空间。 ParentPackage: 指定父包。 Result: 提供了Action结果的映射。 (一个结果的映射) Results: “Result”注解列表 ResultPath: 指定结果页面的基路径。 Action: 指定Action的访问URL。 Actions: “Action”注解列表。 ExceptionMapping: 指定异常映射。 (映射一个声明异常) ExceptionMappings: 一级声明异常的数组。 InterceptorRef: 拦截器引用。 InterceptorRefs: 拦截器引用组。 5.示例代码如下: 那些类会被作为Action, 对于Convention插件而言,它会自动搜索位于action,actions,struts,struts2包下的所有java类, Convention插件会把如下两种java类当成Action处理 ①类名以XXXAction命令。 ②继承ActionSuppot。 6.查看struts2配置 为了看到struts2应用里的Action等各种资源的影射情况,struts2提供了ConfigBrowser插件。 使用方法: 将struts2-config-browser-plugin-2.1.6.jar文件复制到struts2应用的WEB-INF/lib目录中。 打开首页地址: http: //localhost: 8080/应用名字/config-browser/actionNames.action这里可以看到ConfigBrowser插件的首页。 7.详解 1、Action级的注解 @ParentPackage--父包 该注解相当于 @ParentPackage(value="struts-default") @Namespace----命名空间 该注解相当于 @@Namespace(value="/longspace") @Result---转向 该注解相当于 中的 例如: @Result(name="success",location="/loginsuc.jsp",type="redirect")! ! ! 注意,在struts2.1.6中是location来转向页面,而在struts2.0.4是value属性 @Results来配置多个转向 @Results({ @Result(name="success",location="/usersuc.jsp"), @Result(name="error",location="/usererror.jsp") })以上是对struts2注解简单的介绍, 要想在Action上使用注解,还得修web.xml文件中的一些配置 -- //固定格式--> -- action所在的包,如果在多个包中,用逗号隔开 com.struts2.action1,com.struts.action2--> @Results({ @Result(name="input"value="/input.jsp"type=NullResult.class), @Reuslt(name="success"value="/success.jsp"type=NullResult.class), @Result(name="error"value="/error.jsp"type=NullResult.class) }) 上面是一个典型的多Result配置,name属性指定返回的字符串,value指定要跳转的页面,type指定Result的类型,type是一个很重要的属性,他有一下几种情况: 1)NullResult : 默认的可以省略 2)ActionChainResult: 用于从一个Action跳转到另外一个Action。 例如: @Result (name="search",value="search",type=ActionChainResult.class,params={"method","search"}) 这个配置是如果返回值为"search"就跳转掉SearchAction的search方法,如果不指定params就跳转到SearchAction的execute方法 3)StreamResult: 用于文件下载。 例如: @Result (name="success",value="inputStream",type=StreamResult.class,params={"bufferSize",FileConstant.DOWNLOAD_BUFFER_SIZE}) 案例 1.package com.tjcyjd.web.action; 2. 3.import org.apache.struts2.convention.annotation.Action; 4.import org.apache.struts2.convention.annotation.ExceptionMapping; 5.import org.apache.struts2.convention.annotation.ExceptionMappings; 6.import org.apache.struts2.convention.annotation.Namespace; 7.import org.apache.struts2.convention.annotation.ParentPackage; 8.import org.apache.struts2.convention.annotation.Result; 9.import org.apache.struts2.convention.annotation.Results; 10. 11.import com.opensymphony.xwork2.ActionSupport; 12. 13./** 14. * Struts2基于注解的Action配置 15. * 16. */ 17.@ParentPackage("struts-default") 18.@Namespace("/annotation_test") 19.@Results({ @Result(name = "success", location = "/main.jsp"), 20. @Result(name = "error", location = "/error.jsp") }) 21.@ExceptionMappings({ @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") }) 22.public class LoginAction extends ActionSupport { 23. private static final long serialVersionUID = 2730268055700929183L; 24. private String loginName; 25. private String password; 26. 27. @Action("login") 28. // 或者写成 @Action(value = "login") 29. public String login() throws Exception { 30. 31. if ("yjd".equals(loginName) && "yjd".equals(password)) { 32. return SUCCESS; 33. } else { 34. return ERROR; 35. } 36. } 37. 38. @
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 知识点 总结