Struts2拦截器

来源:互联网 发布:湖南省湘知司法鉴定所 编辑:程序博客网 时间:2024/06/06 08:39
拦截器
对类的拦截:
package com.chinaosft.intercepor;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.chinasoft.entity.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginIntercepor extendsAbstractInterceptor{

@Override
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
//对类的拦截
String result="login";
HttpSession session = ServletActionContext.getRequest().getSession();
User user= (User) session.getAttribute("user");
if(user!=null){
result=arg0.invoke();
}
return result;
}

}

对方法的拦截:
package com.chinaosft.intercepor;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.chinasoft.entity.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class SingerMIntercepor extendsMethodFilterInterceptor{

@Override
protected StringdoIntercept(ActionInvocation arg0) throwsException{
// TODO Auto-generated method stub
//对方法的拦截
String result="login";
HttpSession session = ServletActionContext.getRequest().getSession();
User user= (User) session.getAttribute("user");
if(user!=null){
result=arg0.invoke();
}
return result;
}

}

注意区分
<!--动态方法调用开启 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="musicpackage" namespace="/" extends="struts-default">
<!--定义拦截器 -->
<interceptors>
<!-- 对类的拦截 -->
<interceptor name="loginint" class="com.chinaosft.intercepor.LoginIntercepor"></interceptor>
<!-- 对方法的拦截 -->
<interceptor name="methodint" class="com.chinaosft.intercepor.SingerMIntercepor"></interceptor>
</interceptors>
<!-- 动态方法调用 -->
<action name="singer" class="com.chinaosft.action.SingerAction">
<!-- 绑定拦截器 对整个 ACTION 的拦截-->
<!-- <interceptor-ref name="loginint"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="login">/login.jsp</result> -->
<result name="select">/singer.jsp</result>
<result name="delete" type="redirectAction">
<param name="actionName">singer</param>
<param name="method">selectSinger</param>
</result>
<result name="selectOne">updateSinger.jsp</result>
<result name="update" type="redirectAction">
<param name="actionName">singer</param>
<param name="method">selectSinger</param>
</result>
<result name="add" type="redirectAction">
<param name="actionName">singer</param>
<param name="method">selectSinger</param>
</result>
<!-- 对指定方法的拦截 -->
<interceptor-ref name="methodint">
<param name="includeMethods">deleteSinger</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="login">/login.jsp</result>
</action>
</package>

------------------------------------------------------------------

在一个页面点击登录,登录成功之后回到当前页面


核心代码 (Struts2_Test_3)

//保存访问的地址(获取上次访问的URL链接)
String url = ServletActionContext.getRequest().getHeader("Referer");

session.setAttribute("url", url);


public String login(){
//登录成功后保存登录信息
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("user", user);
//判断是否有之前的页面
Object url = session.getAttribute("url");
if(url != null){
try {
ServletActionContext.getResponse().sendRedirect(url.toString());
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "success";
}


点击一个操作之后需先登录,登陆后执行点击的操作,添加核心代码 (Struts2_Test_4)


package com.chinasoft.intercepor;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.chinasoft.entity.User;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class SingerMIntercepor extends MethodFilterInterceptor {

@Override
protected String doIntercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
// 对方法的拦截
String result = "login";

HttpSession session = ServletActionContext.getRequest().getSession();
User user = (User) session.getAttribute("user");
if (user != null) {
result = arg0.invoke();
}else{
//保存访问的地址
String url = ServletActionContext.getRequest().getRequestURL().toString();
//保存访问地址的参数
String queryString = ServletActionContext.getRequest().getQueryString();
System.out.println(url);
if(queryString!=null){
System.out.println(queryString);
url += "?"+queryString;
}
session.setAttribute("url", url);
}

return result;
}

}


与Struts2_Test配套使用

原创粉丝点击