struts2自定义拦截器怎么进不去

一个破拦截器搞了半天没发现哪里出问题了就是进不去自定义的拦截器里,下面贴代码:
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.1.dtd">

<!-- 拦截器 -->

<interceptor-ref name="myoneInterceptor"/>


<!--系统所用的拦截器栈名 -->


MyJsp.jsp


java代码(在com.niit.action包里)
Act类
package com.niit.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.util.ServletContextAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Act extends ActionSupport {

public String login(){
return "input";
}

}

MyOneInterceptor类
package com.niit.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class MyOneInterceptor extends AbstractInterceptor{

public String intercept(ActionInvocation actionInvocation) throws Exception {
    // TODO Auto-generated method stub
    System.out.println("进入我的拦截器");

    Object action = actionInvocation.getAction();
    System.out.println("请求的对象名:" + action.getClass().getName());

    return actionInvocation.invoke(); //让url继续执行
}

}

index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


        <input type="submit" value="提交"/> 

    </s:form> 


MyJsp.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

index.jsp


struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

gc00001
gc00001 还有一点,之前我将MyOneInterceptor这个java名改成MyoneInterceptor后发现还是不行,后来才发现原来改了java文件名后必须重新部署,不然是不会编译成class文件的,所以拦截器就找不到MyoneInterceptor这个类了
7 年多之前 回复
gc00001
gc00001 原来是我的粗心,com.niit.action.MyoneInterceptor里的one应该大写。。。。 谢谢各位了
7 年多之前 回复

5个回答

1、

你开动态方法调用了吗?

2、有错误吗?
3、如果不行clean下服务器试试

gc00001
gc00001 DMI默认是开启的,已经重启了N遍服务器了,我现在是点了提交按钮可以到达myjsp页面,但是却没有进自定义的拦截器,因为如果进自定义的拦截器里就应该会有输出语句"进入我的拦截器",但是控制台没有输出这句话
7 年多之前 回复

这种demo犯不着纠结,直接百度个用了
[url]http://www.cnblogs.com/lihuiyy/archive/2012/03/29/2423569.html[/url]

gc00001
gc00001 大哥我看过很多讲拦截器的帖子了,自己想试下但是总是不成功,不想复制黏贴别人的,现在自己又发现不了错误 很纠结
7 年多之前 回复

动态方法调用默认是开启的

之所以访问不到action的方法,是因为你没有在struts.xml配置访问action的后缀

henghanan
henghanan 这样来: MyOneInterceptor: if(xx) { return invocation.invoke(); } else { return Action.INPUT; } 然后action的那个方法返回SUCCESS就行了
7 年多之前 回复
gc00001
gc00001 后缀action或者不写都是默认的,我现在是点了提交按钮可以到达myjsp页面,但是却没有进自定义的拦截器,因为如果进自定义的拦截器里就应该会有输出语句"进入我的拦截器",但是控制台没有输出这句话
7 年多之前 回复

把public class MyOneInterceptor extends AbstractInterceptor{
改成
public class MyOneInterceptor implements Interceptor{
试试

dohkoos
dohkoos 直接在action中ref自定义的interceptor-stack试试看
7 年多之前 回复
gc00001
gc00001 还是不行啊
7 年多之前 回复

大哥你这个问题是怎么解决的?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问