Struts2拦截器

拦截器
对类的拦截:
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 extends AbstractInterceptor {

@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 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();
}
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配套使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值