Struts2自定义拦截器的基本方法

struts.xml

  struts2配置文件,因为我们为Action配置了拦截器,默认的拦截器就会失效。为了程序的正常运行,需要我们显示引入默认拦截器。

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
 3 <struts>
 4     <package name="lee" extends="struts-default" namespace="/">
 5            <interceptors >
 6             <interceptor name="log"  class="Interceptor.Myinterceptor"></interceptor>
 7         </interceptors>
 8         <action name="Login" class="Action.LoginAction" >
 9             <result name="input">index.jsp</result>
10             <result name="success">WEB-INF/success.jsp</result>
11              <interceptor-ref name="log"/>
12              <!-- 我们为一个Action配置了拦截器时,默认的拦截器就会失效,
13              但是Struts2本身的一些功能,比如说参数自动赋值又是依赖配置的默认拦截器实现,
14              所有应用程序会出错。这时需要我们手动将默认的拦截器引用进来,再为这项Action加入默认拦截器 -->
15              <interceptor-ref name="defaultStack"/>
16         </action>
17
18     </package>
19
20 </struts>    

Myinterceptor.java

  自定义的拦截器,继承了AbstractInterceptor类,并重写intercept方法

 1 package Interceptor;
 2
 3 import Action.LoginAction;
 4
 5 import com.opensymphony.xwork2.ActionInvocation;
 6 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 7
 8 public class Myinterceptor extends AbstractInterceptor {
 9
10     /**
11      *
12      */
13     private static final long serialVersionUID = 1L;
14
15
16
17     @Override
18     public String intercept(ActionInvocation invocation) throws Exception {
19         // TODO Auto-generated method stub
20         LoginAction action=(LoginAction) invocation.getAction();
21         System.out.println("########interceptor#########");
22         String result=invocation.invoke();
23         System.out.println(result);
24
25         return result;
26     }
27
28 }

LoginAction.java

  struts2的action,继承ActionSupport类

 1 package Action;
 2
 3 import com.opensymphony.xwork2.ActionSupport;
 4
 5 public class LoginAction extends ActionSupport {
 6
 7     /**
 8      *
 9      */
10     private static final long serialVersionUID = 1L;
11     private String userName;
12     private String passwd;
13
14     public String getUserName() {
15         return userName;
16     }
17
18     public void setUserName(String userName) {
19         this.userName = userName;
20     }
21
22     public String getPasswd() {
23         return passwd;
24     }
25
26     public void setPasswd(String passwd) {
27         this.passwd = passwd;
28     }
29
30     @Override
31     public String execute() throws Exception {
32         // TODO Auto-generated method stub
33         System.out.println("#####LoginAction########");
34         System.out.println(this.getUserName());
35         if (this.userName.equals("frank"))
36             return SUCCESS;
37         return INPUT;
38     }
39
40 }

index.jsp

简单的登录界面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11
12     <title>My JSP ‘index.jsp‘ starting page</title>
13     <meta http-equiv="pragma" content="no-cache">
14     <meta http-equiv="cache-control" content="no-cache">
15     <meta http-equiv="expires" content="0">
16     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
17     <meta http-equiv="description" content="This is my page">
18     <!--
19     <link rel="stylesheet" type="text/css" href="styles.css">
20     -->
21   </head>
22
23   <body>
24         <form action="Login" method="post">
25             <input type="text" name="userName" ><br>
26             <input type="password" name="passwd"><br>
27             <input type="submit" value="submit">
28         </form>
29   </body>
30 </html>

web.xml

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

时间: 2024-10-17 09:15:16

Struts2自定义拦截器的基本方法的相关文章

Struts2自定义拦截器Interceptor以及拦截器登录实例

1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor{ private static final long serialVersionUID = 1L; public void destroy() { } public void init() {} public String intercept(ActionInvocation arg0) throws

Struts2 自定义拦截器时Action无法接收到参数

问题:自定义拦截器,没有添加defaultStack导致Action无法接受到参数 解决办法: 方法一,添加defaultStack,然后在Action中引用 自定义的stack,其实defaultStack中也有细分如basicStack等 <interceptors> <interceptor name="checkUser" class="com.common.interceptor.UserInfoInterceptor"></

Struts2 自定义拦截器(方法拦截器)

一.实现Interceptor接口 1 public interface Interceptor extends Serializable{ 2 public void init(); 3 public void destroy(); 4 public String intercept(ActionInvocation invocation)(); 5 } 并实现上述方法. 二.继承AbstractInterceptor类,重写intercept()方法即可 此方法更可行,其实AbstractI

12.Struts2自定义拦截器

12.自定义拦截器 拦截器是Struts2的一个重要特性.因为Struts2的大多数核心功能都是通过拦截器实现的. 拦截器之所以称之为“拦截器”,是因为它可以拦截Action方法的执行, 即在Acton方法执行之前或之后执行,以加强Action方法的功能. 例如,一般情况下,用户在打开某个页面之前,需要先登录,否则是无法对资源进行访问的.这就是权限拦截器. 1.定义拦截器类 自定义的拦截器类需要实现拦截器接口com.opensymphony.xwork2.interceptor.Intercep

Struts2自定义拦截器

自定义拦截器 1). 具体步骤 I. 定义一个拦截器的类 > 可以实现 Interceptor 接口 > 继承 AbstractInterceptor 抽象类 II然后在拦截器类的interceptor()方法中定义这个拦截器的功能 III. 在 struts.xml 文件配置. 1注册拦截器 <interceptors> <interceptor name="hello" class="com.atguigu.struts2.intercept

5、Struts2自定义拦截器

一.拦截器相关知识 1.Struts2框架剖析 Holly版本生活案例: 影视公司(拍电影)    ActionMapper 传媒公司(包装明星) ActionMapping 明星                        Action 经纪人                     ActionProxy(代理对象) 小工所在单位             ActionInvocation 小工                        Interceptor(拦截器) 递归==99归一

Struts2自定义拦截器处理全局异常

今天在整理之前的项目的时候想着有的action层没有做异常处理,于是想着自定义拦截器处理一下未拦截的异常. 代码: package cn.xm.exam.action.safeHat; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope;

Struts2 自定义拦截器

自定义拦截器(权限管理),包含了对ajax和表单请求的拦截 package com.interceptor; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts

在struts2中配置自定义拦截器放行多个方法

源码: 自定义的拦截器类: //自定义拦截器类:LoginInterceptor ; package com.java.action.interceptor; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.inte