前段时间大致看了看《轻量级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