struts2基础梳理(一)

前段时间大致看了看《轻量级Java EE企业应用实战》,说实话真心感觉没看多懂,其中看的最明白一点的就是struts2了,但也是基本不懂的状态。最近又该学ssh框架了,只能找相关的培训视频来系统的学习,当然时间也不是太多,所以只能快速进行重点的知识点的学习,这里记录一下大致过程,方便复习和巩固。

首先,struts2是基于对Filter的封装而不是Servlet,因为Filter比Servlet更强大,Servlet能干的事,Filter基本上都能干,反过来则不行。

配置:

struts2配置大致分为三步:

导入jar包,可以把struts2的实例文件struts2-blank的lib文件都拷到项目下,较为方便。 配置web.xml ,这里直接copy一下就行了,基本上就是配置一个Filter <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,基本上把实例的拷过来自己改改就行了关联struts2.xml中的“”以实现struts代码的提示关于struts.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耦合的,但是可以访问很多资源。

解耦方式(可以读取请求参数, 读写域对象的属性, 使 session 失效等)一种是使用ActionContext,一种是实现xxxAware 接口(xxx代表application,session,request)。一般当处理类中需要多次使用域对象的map或 parameters使用aware接口。耦合方式(可以访问的方法更多,而且可以访问Servlet原生方法)基本上跟上一种使用方式差不多,使用 ServletActionContext或者实现 ServletXxxAware 接口。就是单词前多了一个Servlet。这里比较详细的给出解耦的ActionContext方式访问:

public String execute(){//获取 ActionContext 对象//ActionContext 是 Action 的上下文对象. 可以从中获取到当往 Action 需要的一切信息ActionContext actionContext=ActionContext.getContext();//1. 获取 application 对应的 MapMap<String,Object> applicationMap=actionContext.getApplication();Object applicationValue=applicationMap.get("applicationKey2");System.out.println("applicationValue");applicationMap.put("applicationKey2", "ijinp");//2. sessionMap<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,今天就先写这些吧。。。

不要等待机会,而要创造机会。

struts2基础梳理(一)

相关文章:

你感兴趣的文章:

标签云: