struct2 开发入门
精选 转载一 简单起步
1.web.xml 文件配置
<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>
2.建一个action
1.struct2文件配置一个action
<action name="hello" class="helloWorldAction">
<result name="success">/HelloWorld.jsp</result>
</action>
[action标记解析]
name:表示action的名称.struct根据name名来匹配请求,配备上交有配备的action处理
class:是action类名
result标记的name:表示result名称,action处理完成返回值与action标记内的name匹配,匹配上转到相应显示视图显示
2.建一个action类.
struct2的action是一个POJO类.视图传过来的参数通过action的get,set方法获取
通过继承ActionSupport获的struct框架的一些支持,
获取session: ActionContext.getContext().getSession();
获取response:
HttpServletResponse resp = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
获取request:
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
3.一个action于多个请求匹配上
方法1.action内建n个方法
struct根据url的action name!方法名来匹配action的相应方法来处理
note:
struct2默认跟请求匹配的action的execute方法来处理,如果url请求没哟写方法名则execute方法来处理。
方法2.action名称通过适配符来匹配请求url.
<action name="*World" class="org.hwz.demo.action.WorldAction" method="{1}">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<result name="success">/HelloWorld.jsp</result>
</action>
请求是什么XXXXWorld,则action匹配上.使用action的XXX方法来处理
二 struct拦截器
1.使用struct提供拦截器
struct有提供一些常用的拦截器,如果时间,日志等。在action标记下添加<interceptor>就ok
<action name="hello" class="helloWorldAction">
<interceptor-ref name="timer"/><!--时间拦截器-->
<interceptor-ref name="logger"/><!--日志拦截器-->
<result name="success">/HelloWorld.jsp</result>
</action>
2.使用拦截器堆栈
声明拦截器堆 ,在interceptors标记下声明interceptor-stack,相当于拦截器组合按照先进先执行
<interceptors>
<interceptor-stack name="appDefault">
<interceptor-ref name="timer"/>
<interceptor-ref name="logger"/>
<interceptor-ref name="demoInterceptors"/>
</interceptor-stack>
</interceptors>
在action配置使用拦截器堆
<action name="hello" class="helloWorldAction">
<interceptor-ref name="appDefault"/><!--name为拦截器堆的名称-->
<result name="success">/HelloWorld.jsp</result>
</action>
3.创建自定义的拦截器
继承AbstractInterceptor类实现intercept方法
public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("intercept");
return actionInvocation.invoke();//继续执行action
}
@Override
public void init() {
super.init(); //To change body of overridden methods use File | Settings | File Templates.
System.out.println("init");
}
@Override
public void destroy() {
super.destroy(); //To change body of overridden methods use File | Settings | File Templates.
System.out.println("destroy");
}
在struct.xml文件声明自定义的拦截器
<interceptors>
<interceptor name="demoInterceptors" class="org.hwz.demo.interceptor.DemoInterceptor"/>
</interceptors>
action 通过 <interceptor-ref name="demoInterceptors" >来使用该配置
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
struct2源码解读(2)之struct2初始化
struct2源码解读之初始化
struct2源码之初始化 -
struct2源码解读(7)之搭建struct2运行环境
介绍了struct2是如何初始化的
struct2 源码 初始化 -
struct2源码解读(1)之struts2启动
struct2源码分析
struct2源码分析 -
struct2源码解读(9)之处理Action请求
本篇博文探讨了strcut2是如何处理action请求的
struct2 PrepareOpera -
struct2源码解读(5)之解析bean标签
介绍了struct2是如何解析配置文件的bean标签,并简单介绍了工厂模式
工厂模式 struct2解析bean -
struct2源码解读(4)之配置文件具体解析过程
struct2解析配置文件
struct2解析配置文件