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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.4"
  3. xmlns="http://java.sun.com/xml/ns/j2ee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  7.  
  8. <filter>
  9. <filter-name>struts2</filter-name>
  10. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  11. </filter>
  12.  
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17.  
  18. <welcome-file-list>
  19. <welcome-file>index.jsp</welcome-file>
  20. </welcome-file-list>
  21. </web-app>

第02步:编写action类

  1. package com.self.action;
  2.  
  3. public class InterceptorAction {
  4. private String message ;
  5.  
  6. public String login(){
  7. this.message="登录成功!";
  8. return "success";
  9. }
  10.  
  11. public String addUser(){
  12. this.message="添加用户";
  13. return "success";
  14. }
  15.  
  16. public String getMessage() {
  17. return message;
  18. }
  19.  
  20. public void setMessage(String message) {
  21. this.message = message;
  22. }
  23. }

第03步:编写拦截器类

  1. package com.self.action;
  2.  
  3. import com.opensymphony.xwork2.ActionContext;
  4. import com.opensymphony.xwork2.ActionInvocation;
  5. import com.opensymphony.xwork2.interceptor.Interceptor;//导入包,包里含有Interceptor类
  6.  
  7. /**第01 步:编写拦截器**/
  8. public class Permission implements Interceptor {
  9.  
  10. public void destroy() {
  11.  
  12. }
  13.  
  14. public void init() {
  15.  
  16. }
  17.  
  18. public String intercept(ActionInvocation invocation) throws Exception {//属于aop编程的环绕通知
  19. String reString="";
  20. //01:判断用户是否登录,登录就有权限执行action方法,没登陆就没权限
  21. Object user=ActionContext.getContext().getSession().get("user");
  22. if(user!=null){
  23. reString=invocation.invoke();//执行被拦截的action方法,被拦截的action方法有返回的字符串,原样返回
  24. ActionContext.getContext().put("message", "允许执行该操作");
  25. System.out.println("执行拦截的方法,并返回字符串:"+reString);
  26. //return invocation.invoke();可以直接这样
  27. }else{
  28. reString="error";
  29. ActionContext.getContext().put("message", "不允许执行该操作!");
  30. System.out.println("执行拦截的方法,并返回字符串:"+reString);
  31. }
  32. return reString;//原样返回action方法的字符串
  33. }
  34.  
  35. }

第04步:配置struts.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">
  5.  
  6. <struts>
  7. <constant name="struts.action.extension" value="do,action"/>
  8. <!-- 第02步:配置action -->
  9. <package name="intercept" namespace="/" extends="struts-default">
  10.  
  11. <!-- 第03步:注册拦截器 -->
  12. <interceptors>
  13. <!-- 03.1:自定义拦截器配置 -->
  14. <interceptor name="permission" class="com.self.action.Permission" />
  15. <!-- 03.2 :定义拦截器栈,不定义会失去很多struts自身的拦截器-->
  16. <interceptor-stack name="permissionStackss">
  17. <!-- 03.4:引入系统拦截器栈:defaultStack,系统拦截器栈放前面,先执行 -->
  18. <interceptor-ref name="defaultStack"/>
  19. <!-- 03.5:引入自定义拦截器 -->
  20. <interceptor-ref name="permission" />
  21. </interceptor-stack>
  22. </interceptors>
  23.  
  24. <global-results>
  25. <result name="error">
  26. /error.jsp
  27. </result>
  28. </global-results>
  29. <action name="list_*" class="com.self.action.InterceptorAction" method="{1}">
  30. <!-- 03.6:自定义拦截器先执行:"permissionStackss"还是"permissionStacks" -->
  31. <interceptor-ref name="permissionStackss" />
  32. <result name="success">
  33. /show.jsp
  34. </result>
  35. </action>
  36. </package>
  37. </struts>

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

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <%
  7. request.getSession().setAttribute("user", "zouli");
  8. %>
  9. <center>
  10. <a href="list_login.action">用户登录action!</a><BR>
  11. <a href="list_addUser.action">添加用户action!</a><BR>
  12. </center>
  13. <br>
  14. </body>
  15. </html>

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

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <%
  7. request.getSession().removeAttribute("user");
  8. %>
  9. <center>
  10. 没有用户<BR>
  11. <a href="list_login.action">用户登录action!</a><BR>
  12. <a href="list_addUser.action">添加用户action!</a><BR>
  13. </center>
  14. <br>
  15. </body>
  16. </html>

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

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <center>
  7. 登录信息:message:${message }
  8. </center>
  9. <br>
  10. </body>
  11. </html>

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

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <html>
  3. <head>
  4. </head>
  5. <body>
  6. <center>
  7. 拦截信息:message:${message }<BR>
  8. 拦截器不能使用错误!
  9. </center>
  10. </body>
  11. </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. HBase HDFS目录树

    一.0.94-cdh4.2.1版本系统级别的一级目录如下,用户自定义的均在这个/hbase 下的一级子目录下/hbase/-ROOT-/hbase/.META./hbase/.archive/hbas ...

  2. percona

     三.      mysql安装 安装 Percona Server:vi /etc/yum.repos.d/Percona.repo[percona]name = CentOS $releaseve ...

  3. linux实现c多进程

    线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的Unix也支持线程的概念,但是在一个进程(process)中只允许 ...

  4. Android项目框架之图片加载框架的选择

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 从Android爆发以后,自定义的控件如EditTextWithDelete.ActionBar.P ...

  5. 流媒体学习一-------mediastreamer2 的简介

    Mediastreamer2 是一个功能强大且小巧的流引擎,专门为音视频电话应用而开发.这个库为linphone中所有的接收.发送多媒体流提供处理,包括音/视频捕获,编码和解码,渲染. 特性: 接收. ...

  6. Github简明教程(转)

    原文地址 : http://wuyuans.com/2012/05/github-simple-tutorial/ github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用 ...

  7. SQLServer 统计数据量

    做一个项目,第一件事情就是问:“这个数据库多大?” 下面是统计数据库数据量大小的方法 通常我们会使用命令: "sp_helpdb @dbname" 例如,查询数据库"te ...

  8. EF Code First教程-02 约定配置

    示例: public class Phone { [Key] //主键 public int Id { get; set; } [Required] //不能为空 [MinLength(),MaxLe ...

  9. Winforms-GePlugin-Control-library

    Winforms-GePlugin-Control-library http://download.csdn.net/download/xm379303813/4247029

  10. 01.Box2dWeb入门教程

    1.下载box2dweb.直接在页面中引用即可. -Box2D.js是未压缩版 -Box2d.min.js是压缩版 2.编写HelloWorld代码. <!DOCTYPE HTML> &l ...