你的位置:首页 > 软件开发 > Java > Struts2 05

Struts2 05

发布时间:2017-10-21 20:00:30
一、Struts2**原理:Struts2**的实现原理相对简单,使用了aop思想和责任链模式,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的**对象,然后串成一个列表,最后一个一个地调用列表中的**。1).aop思想:面向 ...

Struts2 05

一、Struts2**原理

Struts2**的实现原理相对简单,使用了aop思想和责任链模式,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的**对象,然后串成一个列表,最后一个一个地调用列表中的**。

1).aop思想:面向切面编程(在不修改源代码的情况下进行功能的扩展)。

2).责任链模式:执行多个**,一个一个的进行执行,在执行完后进入下一个**之前,前一个的**会做类似于放行的操作。

Struts2 05

二、Struts2 **接口实现:

Struts2规定用户自定义**需要实现Interceptor接口。该接口声明了3个方法:

package com.action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.Interceptor;public class MyInterceptor implements Interceptor{ //结束:当**销毁时执行的方法; @Override public void destroy() {   } //初始化 :在服务器起动的时候加载一次,并且只加载一次; @Override public void init() {   } //放行 :如果满足要求继续往下执行调用invoke方法,否则自定义返回信息 @Override public String intercept(ActionInvocation arg0) throws Exception {
//是如果只有一个**执行完这个方法后,会返回给视图,如果有多个**,它顺序的执行完所有的**,才返回给视图,也就是调用后面的action继续执行。 arg0.invoke(); return null; }}

但是,这个接口需要实现三个方法,其中的init().destroy()是系统默认执行的,我们不需要管它,所以,在我们写**的时候,还可以选择继承MethodFilterInterceptor类:

package com.zking.interceptor;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;public class LoginInterceptor extends MethodFilterInterceptor{ @Override protected String doIntercept(ActionInvocation actionInvocation) throws Exception {  //**所需要执行的业务逻辑  HttpServletRequest request=ServletActionContext.getRequest();  String name=(String)request.getSession().getAttribute("login");  if(name!=null){   //成功则继续执行   actionInvocation.invoke();   return Action.SUCCESS;  }  else{   //失败则返回信息给struts.   return Action.ERROR;  } }}

 

三、struts.

3):系统默认**

                                                                                    Struts2 05

 

2):自定义**

Struts2 05

 

详细配置文件如下:

<??><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- 默认** --> <package name="mypackage" extends="struts-default">  <action name="login" class="com.action.LoginAction">   <!-- 配置令牌 -->   <interceptor-ref name="token"></interceptor-ref>   <!-- 引入默认的** 默认的**会帮你把action转换到action类中 -->   <interceptor-ref name="defaultStack"></interceptor-ref>   <result name="success">/success.jsp</result>   <!-- 当在session中已经找到相同的值得时候,进行跳转 -->   <result name="invalid.token">/error.jsp</result>  </action> </package><!-- 自定义** --><package name="mylogin" extends="struts-default"><!-- 创建** --><interceptors><interceptor name="MyInterceptor" class="com.zking.interceptor.MyInterceptor"></interceptor></interceptors><action name="userlogin" class="com.action.LoginActionInterceptor"method="login"><!-- 引用** --><interceptor-ref name="MyInterceptor"><param name="excludeMethods">login</param></interceptor-ref><result name="success">/success.jsp</result><result name="login">/loginInterceptor.jsp</result></action></package>

3).自定义**设置不被拦截的方法:

Struts2 05

 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:Struts2 05

关键词:Struts

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录