前段时间大致看了看《轻量级Java EE企业应用实战》,说实话真心感觉没看多懂,其中看的最明白一点的就是struts2了,但也是基本不懂的状态。最近又该学ssh框架了,只能找相关的培训视频来系统的学习,当然时间也不是太多,所以只能快速进行重点的知识点的学习,这里记录一下大致过程,方便复习和巩固。
首先,struts2是基于对Filter的封装而不是Servlet,因为Filter比Servlet更强大,Servlet能干的事,Filter基本上都能干,反过来则不行。
配置:
struts2配置大致分为三步:
<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.xml,基本上把实例的拷过来自己改改就行了 package:作为struts2组织模块的一个单位,可以把一类的action放在一个package中,比如用户管理模块。
属性:name:标示一个package
namespace:命名空间,默认"/",如果加了,在请求url中action前必须加入
extends:继承的包,默认是 struts-default
action:对应每一个请求都有一个action相对应,用来处理请求,可以理解为电话转接台
name:对应一个 struts2 的请求的名字(或对一个 servletPath, 但去除 / 和扩展名), 不包含扩展名
class:要处理请求的类的名称(包括包名),默认值为: com.opensymphony.xwork2.ActionSupport
method :要处理请求的类中的处理方法, 默认是execute
result:返回的结果以及根据结果的处置。
简单示例:
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="actiontest1" class="jsky.action.ActionTestAction">
<result>/pages/show.jsp</result>
</action>
<action name="actiontest2" class="jsky.action.ActionTestAction" method="log">
<result name="success" >/pages/show2.jsp</result>
<result name="error" >/pages/error2.jsp</result>
</action>
</package>
</struts>在Action中获取web资源:
在Action中有时需要对域对象进行处理,这就涉及到对web资源的访问问题。访问web资源两种方式,一种是和Servlet解耦的,但是可以访问的资源很有限,一种是和Servlet耦合的,但是可以访问很多资源。
public String execute()
{
//获取 ActionContext 对象
//ActionContext 是 Action 的上下文对象. 可以从中获取到当往 Action 需要的一切信息
ActionContext actionContext=ActionContext.getContext();
//1. 获取 application 对应的 Map
Map<String,Object> applicationMap=actionContext.getApplication();
Object applicationValue=applicationMap.get("applicationKey2");
System.out.println("applicationValue");
applicationMap.put("applicationKey2", "ijinp");
//2. session
Map<String,Object> sessionMap=actionContext.getSession();
Object sessionValue=sessionMap.get("sessionKey");
System.out.println("sessionValue");
sessionMap.put("sessionKey2", "guochangqing");
///3. request*
//ActionContext 中没有提供 getRequest 方法
//需要调用 get() 方法, 传入 request 字符串来获取.
Map<String,Object> requestMap=(Map<String, Object>) actionContext.get("request");
Object requestValue=requestMap.get("requestKey");
System.out.println("requestValue");
requestMap.put("requestKey2", "liujishuai");
//4. 获取请求参数对应的 Map, 并获取指定的参数值.
// 键: 请求参数的名字, 值: 请求参数的值对应的字符串数组
// 注意: 1. getParameters 的返回值为在 Map<String, Object>, 而不是 Map<String, String[]>
// 2. parameters 这个 Map 只能读, 不能写入数据, 如果写入, 不出错, 但也不起作用!
Map<String,Object> parameters=(Map<String, Object>) actionContext.getParameters();
String nameValue= (String) parameters.get("name");
return "success";
} OK,今天就先写这些吧。。。原文地址:http://blog.csdn.net/js_sky/article/details/44414171