struts2基础——请求与响应、获取web资源
一、请求与响应
Action
1.含义:
(1) struts.xml 中的 action 元素,也指 from 表单的 action 属性,总之代表一个 struts2 请求。
(2) 用于处理 Struts2 请求的 Action 类
2.Action 类
(1) 使用 setXxx() 方法和 getXxx() 方法定义属性,使用 setXxx() 属性方法接受请求参数值,使用 getXxx() 方法来在页面显示数据。
(2) 有无参构造器
(3) 至少有一个供 Struts2 在执行这个 action 时调用的方法
(4) 同一个 Action 来可以包含多个 action 方法
(5) Action 类不是单例的,Struts2 为每一个请求创建一个 Action 实例
3.ActionSupport 类
(1) ActionSupport 是默认的 Action 类
(2) ActionSupport 实现的接口
Action:提供了 SUCCESS、INPUT 等字符串常量可以直接使用,提供 execute() 抽象方法供实现
Validateable:用于编程式输入验证
ValidationAware:用于获取和显示错误消息,错误消息有两个级别:一个是类级别,另一个是字段级别
TextProvider:从资源文件中读取属性值,用于国际化
LocaleProvider:获取 Locale 对象,用于国际化
Serializable:序列化 Action 类
4.请求扩展名
(1) 请求路径中 ServletPath 部分包含的后缀,例如:.action/.do
(2) Struts2 根据扩展名来区分哪些请求需要 Struts2 处理,哪些不需要。
(3) 默认支持的扩展名: .action 和 没有
5.default.properties
在 default.properties 定义了许多常量,如默认支持的请求扩展名
修改 default.properties 定义的常量:
在 struts 根标签下加入元素:
<constant name="" value=""/>
如修改默认支持的请求扩展名:
<constant name="struts.action.extension" value=".action,,.do"/>
Result:
1.含义:
(1) 代表 Struts2 请求的响应,每个 action 标签可以包含多个 result 元素
(2) result 标签:name 属性:对应 action 方法的 String 类型方法返回值,type 属性:执行结果类型,以什么方式跳转。
2.结果类型:
(1) Struts2 在 struts-default.xml 中定义了 10 结果类型
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
result types
常用的有5个类型:chain,dispatcher,redirect,redirectAction,stream
(2) 常用结果类型详解
dispatcher:struts2默认的结果类型,转发到目标资源,但是不能是一个 Action,因为进行内部转发的时候,struts2 无法进行拦截。
chain:转发到一个 Action ,如:
<action name="hello" class="com.nucsoft.struts2.helloworld.HelloWorld" method="secondMethod">
<result type="chain">
<param name="actionName">worldhello</param>
<param name="namespace">/</param>
</result>
</action>
chain
redirect:重定向到目标资源
<result name="redirect" type="redirect">/result.jsp</result>
redirect
这里指定目标资源的虚拟路径时,不能包含 web 应用的虚拟路径,目标资源也可以是一个 Action。
redirectAction:重定向到一个 Action
<action name="helloworld_*" class="com.nucsoft.struts2.helloworld.HelloWorld" method="{1}">
<result>/success.jsp</result>
<result type="redirectAction" name="redirectAction">
<param name="actionName">redirect2Action</param>
</result>
</action>
<action name="redirect2Action" class="com.nucsoft.struts2.helloworld.HelloWorld" method="redirectAction">
<result>/success.jsp</result>
</action>
redirectAction
stream:
以输出流的形式返回响应结果,用于文件的下载和 Ajax
通配符映射规则:
1.精确匹配优先。
2.在不符合精确匹配优先的情况下,则先声明的有效(如果一个请求能够与多个带有通配符的ActionName匹配,则先声明的有效)。
动态方法调用:
在URL地址中动态调用 Action 中的方法。
Struts2 默认是禁止动态方法调用的,可以通过修改常量的方式修改。
正常访问:http://localhost:8989/Web应用虚拟路径/dynamicAction.action
动态方法调用:http://localhost:8989/Web应用虚拟路径/dynamicAction!dynamicMethod.action
二、web 资源
Struts2 针对常用数据进行了封装,封装为一系列 Map 对象: RequestMap HashMap SessionMap ApplicationMap
获取方式:
1.与 Servlet 解耦
(1) 使用 ActionContext 类,通过 ActionContext 对象可以获取到 appMap、sessionMap、paramMap对象
(2) 实现 XxxAware 接口,RequestAware,ParameterAware,SessionAware,ApplicationAware
2.与 Servlet 耦合
(1) 使用 ServletActionContext 类,通过它获取到 HttpServletRequest、HttpServletResponse、ServletContext
(2) 实现 ServletXxxAware 接口:ServletRequestAware、ServletResponseAware、ServletContextAware
struts2基础——请求与响应、获取web资源的更多相关文章
- 在class中获取web资源
背景介绍 项目中用jasperreport做报表,模板文件为web资源,不在classpath之中.class又需要获取模板文件,结合数据源,生成pdf格式的报表. 之前的做法是定义一个public ...
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Struts2学习第三课 访问Web资源
1.什么是WEB资源? HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么访问WEB资源? B/S的应用的Contr ...
- Web开发——HTML基础(HTML响应式Web设计 Bootstrap)
参考: 参考:http://www.bootcss.com/ 目录: 1.什么是响应式 Web 设计? 2.创建自己的响应设计 3.使用 Bootstrap 1.什么是响应式 Web 设计? RWD ...
- spring基础---->请求与响应的参数(一)
这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...
- Struts2学习第四课 通过Aware接口获取WEB资源
使用XxxAware接口 看代码: package logan.struts2.study; import java.util.Map; import org.apache.struts2.inter ...
- Struts2学习第五课 通过和ServletAPI耦合的方式获取WEB资源
与Servlet耦合的访问方式 直接访问Servlet API将使Action与环境Servlet环境耦合在一起,测试时需要有Servlet容器,不便对Action的单元测试. 直接获取HttpSer ...
- Struts2 - 通过实现 Aware 接口访问 Web 资源
Action 类通过可以实现某些特定的接口, 让 Struts2 框架在运行时向 Action 实例注入 parameters, request, session 和 application 对应的 ...
- 2.struts2访问web资源(在struts2中获取session,request等等)
什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ...
随机推荐
- MySQL的慢查询分析
慢查询分析日最初是用来捕获比较“慢”的查询,在mysql5.1 + 版本中,慢查询的功能被加强,可以通过设置long_query_time为0来捕获所有的查询,而且查询的响应时间已经可以做到微妙级别. ...
- java 调用 .net webservice 示例
String url="http://IP:端口/LisService.asmx"; String methodName="GetLisResultForBlood&qu ...
- nginx-upstream-keepalive;accept_mutex-proxy_http_version-1.1-proxy_set_header-connection
nginx+resin+redis+mysql的架构: 有外部模拟用户请求的大量攻击:它尝试请求了80就断开:看到的现象是在跑有nginx80的主机上TCP连接数少 : ESTABLISHED少: 在 ...
- 最近的shell脚本(updating)
1.批量替换 sed -i 's/class="table"/class="table table-hover"/g' `grep 'class="t ...
- C#==>匿名方法 【转】
http://blog.csdn.net/gishero/article/details/5161826 1,匿名方法 C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定 ...
- 通过PowerShell获取TCP响应(类Telnet)
通常情况下,为了检测指定的TCP端口是否存活,我们都是通过telnet指定的端口看是否有响应来确定,然而默认情况下win8以后的系统默认是不安装telnet的.设想一下如果你黑进了一个服务器,上面没装 ...
- bootstrap fileinput 文件上传工具
这是我上传的第二个plugin 首先第一点就是因为这个好看 符合bootstrap的界面风格 第二是可以拖拽(虽然我不常用这个功能 但是这样界面看起来就丰满了很多) 最后不得不吐槽这个的回发事件 我百 ...
- 解决Visual Studio 2010新建工程时出现『1>LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt』错误
VS2010在经历一些更新后,建立Win32 Console Project时会出"error LNK1123" 错误. 解决方案为: 第一步:将:项目|项目属性|配置属性|清 ...
- 国内的maven镜像
阿里云 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>ht ...
- css3 定义选择器
引言:CSS样式规则有两个主要部分.选择器决定将格式化应用到哪些元素.声明则定义要应用的格式化. 构造选择器 选择器可以定义五个不同的标准来选择要进行格式化的元素. 元素的类型或者名称.如下所示. h ...