第01步:配置web.xml,启动struts框架

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <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> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

第02步:编写action类

package com.self.action;

public class InterceptorAction {
private String message ; public String login(){
this.message="登录成功!";
return "success";
} public String addUser(){
this.message="添加用户";
return "success";
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
}
}

第03步:编写拦截器类

package com.self.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;//导入包,包里含有Interceptor类 /**第01 步:编写拦截器**/
public class Permission implements Interceptor { public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception {//属于aop编程的环绕通知
String reString="";
//01:判断用户是否登录,登录就有权限执行action方法,没登陆就没权限
Object user=ActionContext.getContext().getSession().get("user");
if(user!=null){
reString=invocation.invoke();//执行被拦截的action方法,被拦截的action方法有返回的字符串,原样返回
ActionContext.getContext().put("message", "允许执行该操作");
System.out.println("执行拦截的方法,并返回字符串:"+reString);
//return invocation.invoke();可以直接这样
}else{
reString="error";
ActionContext.getContext().put("message", "不允许执行该操作!");
System.out.println("执行拦截的方法,并返回字符串:"+reString);
}
return reString;//原样返回action方法的字符串
} }

第04步:配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<constant name="struts.action.extension" value="do,action"/>
<!-- 第02步:配置action -->
<package name="intercept" namespace="/" extends="struts-default"> <!-- 第03步:注册拦截器 -->
<interceptors>
<!-- 03.1:自定义拦截器配置 -->
<interceptor name="permission" class="com.self.action.Permission" />
<!-- 03.2 :定义拦截器栈,不定义会失去很多struts自身的拦截器-->
<interceptor-stack name="permissionStackss">
<!-- 03.4:引入系统拦截器栈:defaultStack,系统拦截器栈放前面,先执行 -->
<interceptor-ref name="defaultStack"/>
<!-- 03.5:引入自定义拦截器 -->
<interceptor-ref name="permission" />
</interceptor-stack>
</interceptors> <global-results>
<result name="error">
/error.jsp
</result>
</global-results>
<action name="list_*" class="com.self.action.InterceptorAction" method="{1}">
<!-- 03.6:自定义拦截器先执行:"permissionStackss"还是"permissionStacks" -->
<interceptor-ref name="permissionStackss" />
<result name="success">
/show.jsp
</result>
</action>
</package>
</struts>

第05步:编写界面,session有数据,拦截器通过

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
</head>
<body>
<%
request.getSession().setAttribute("user", "zouli");
%>
<center>
<a href="list_login.action">用户登录action!</a><BR>
<a href="list_addUser.action">添加用户action!</a><BR>
</center>
<br>
</body>
</html>

第06步:编写界面,session没数据,拦截器不通过

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
</head>
<body>
<%
request.getSession().removeAttribute("user");
%>
<center>
没有用户<BR>
<a href="list_login.action">用户登录action!</a><BR>
<a href="list_addUser.action">添加用户action!</a><BR>
</center>
<br>
</body>
</html>

第07步:编写通过显示界面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
</head>
<body>
<center>
登录信息:message:${message }
</center>
<br>
</body>
</html>

第08步:编写不通过错误界面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
<head>
</head>
<body>
<center>
拦截信息:message:${message }<BR>
拦截器不能使用错误!
</center>
</body>
</html>

注意:需要导入包

struts自定义拦截器的更多相关文章

  1. Struts自定义拦截器&拦截器工作原理

    0.拦截器的调用原理: 拦截器是一个继承了序列化接口的普通接口.其工作原理是讲需要被拦截的对象作为参数传到intercept()方法内,在方法内部对此对象进行处理之后再执行原方法.intercept( ...

  2. JavaWeb -- Struts 自定义拦截器, 登录权限拦截

    1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...

  3. struts自定义拦截器实现

    示例 添加新功能:只有是登录的状态访问hello_loginSuccess才会显示登录成功. index.jsp登录成功页面 test.jsp登录页面 一.修改原代码实现 1.登录后将登录信息添加到S ...

  4. struts自定义拦截器配置

    配置自己的拦截器可以先参照下系统的拦截器是怎么配置的,首先打开struts-default.xml搜索下interceptor:系统里的拦截器有很多,拦截器都是放在堆栈里的,系统引用的是默认堆栈, & ...

  5. [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Struts学习之自定义拦截器

    * 所有的拦截器都需要实现Interceptor接口或者继承Interceptor接口的扩展实现类    * 要重写init().intercept().destroy()方法        * in ...

  7. 2018.12.17 struts.xml 配置自定义拦截器配置

    自定义拦截器有三个步骤哦 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PU ...

  8. java:struts框架3(自定义拦截器,token令牌,文件上传和下载(单/多))

    1.自定义拦截器: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...

  9. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

随机推荐

  1. Qt使用一个事件队列对所有发出的事件进行维护(QObject的event()函数相当于dispatch函数),用EventLabel 继承QLabel作为例子(简单明了) good

    事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事 ...

  2. 原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0

    visual studio编译出现错误:错误 2 任务失败,原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0.该任务正在注册表项 HKEY_LOCAL_MAC ...

  3. JQuery 内容过滤选择器

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  4. 《JAVA NIO》第一章 简介

    1.2 CPU已不再是束缚 相反,是JVM 自身在I/O 方面效率欠佳.操作系统与Java 基于流的I/O模型有些不匹配. 操作系统要移动的是大块数据(缓冲区),这往往是在硬件直接存储器存取(DMA) ...

  5. 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了

    引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中?         本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...

  6. Vue.2.0.5-单文件组件

    介绍 在很多Vue项目中,我们使用 Vue.component 来定义全局组件,紧接着用new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方案在只是使用 ...

  7. javaScript学习之ajax

    一.xmlHttpRequest对象的创建 ajax的核心的XMLHttpRequest对象,下面的代码给出了兼容各个浏览器的方法实现 function createXHR(){ if(typeof ...

  8. iOS - (调用系统本机打电话功能)

    如下图所示,点击订单里的打电话 button 后,调用系统的打电话功能. 这个调用系统打电话功能有点简单,不需要遵守协议和代理什么的,直接在点击方法里写上几句代码就可以了. 下面来看看代码吧: 接下来 ...

  9. iOS-self.layer.shouldRasterize属性

    当shouldRasterize设成true时,layer被渲染成一个bitmap,并缓存起来,等下次使用时不会再重新去渲染了.实现圆角本身就是在做颜色混合(blending),如果每次页面出来时都b ...

  10. ali面试点滴

    1.喜欢问原理 最好问2句 回答8句 把相关的知识也加上 最好说一下优势与区别 2.sql优化 分库 分表 ssl https 3.jvm.高并发(事务.原子操作).设计模式(一定要烂熟于心) 4.访 ...