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"><struts><package name="root" namespace="/" extends="struts-default"> <!-- 拦截器 --><interceptors><!-- 自定义拦截器 --> <interceptor name="myoneInterceptor" class="com.niit.action.MyoneInterceptor"/> <!-- 自定义拦截器栈 --> <interceptor-stack name="appstack"> <interceptor-ref name="myoneInterceptor"/> <interceptor-ref name="defaultStack" /></interceptor-stack> </interceptors> <!--系统所用的拦截器栈名 --> <default-interceptor-ref name="appstack"/> <action name="MyAct" class="com.niit.action.Act"> <result name="input">MyJsp.jsp</result> </action></package></struts>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 stubSystem.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"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'login3.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> <s:form action="MyAct!login.action" method="get"> <input type="submit" value="提交"/> </s:form> </body></html>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"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'MyJsp1.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body>myjsp </body></html>web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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> </web-app>

解决方案

1、<s:form action="MyAct!login.action" method="get"> 你开动态方法调用了吗?<constant name="struts.enable.DynamicMethodInvocation" value="true" /> 2、有错误吗?3、如果不行clean下服务器试试
解决方案二:
大哥你这个问题是怎么解决的?
解决方案三:
把public class MyOneInterceptor extends AbstractInterceptor{ 改成public class MyOneInterceptor implements Interceptor{ 试试
解决方案四:
动态方法调用默认是开启的之所以访问不到action的方法,是因为你没有在struts.xml配置访问action的后缀<!-- 后缀 --><constant name="struts.action.extension" value="action" />
解决方案五:
这种demo犯不着纠结,直接百度个用了http://www.cnblogs.com/lihuiyy/archive/2012/03/29/2423569.html

时间: 2024-12-10 08:33:03

struts2自定义拦截器怎么进不去的相关文章

Struts2 自定义拦截器栈后无法得到表单参数之解决办法

我自定义了一个拦截器,目的是在action执行之前像ValueStack中设置一些属性,代码是这样的: view plaincopy to clipboardprint? HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);        OgnlValueStack stack=(OgnlValueStack)request.getAt

拦截器就是进不去

问题描述 <interceptors> <interceptor name="logInterceptor" class="com.interceptor.inter.LogInterceptor"></interceptor> <!-- <interceptor-stack name="abstack"> <interceptor-ref name="logIntercept

struts2自定义验证器(身份证验证)

struts2的验证器是用的xwork里面的验证,自定义验证器就是根据源码继承已有的字段验证器而来.具体步骤如下: 1.展开xwork-2.0.4.jar,com.opensymphony.xwork2.validator.validators目录下有个default.xml,将它复制到项目根目录下改名叫validators.xml. 验证框架首先在根目录下找validators.xml文件,没找到validators.xml文件,验证框架将调用默认的验证设置,即default.xml里面的配置

关于Struts2文件上传与自定义拦截器_java

一.访问或添加request/session/application属性 public String scope() throws Exception{   ActionContext ctx = ActionContext.getContext();   ctx.getApplication().put("app", "应用范围");//往ServletContext里放入app   ctx.getSession().put("ses", &q

[转载]难经3:Struts2,拦截器拦不住Result?

[问题] 使用Struts2作为web框架,知道它的拦截器(Interceptor)机制,类似与Filter和spring的AOP,于是实现了一个为Action增加自定义前置(before)动作和后置动作(after)的拦截器(曰:WInterceptor),不过用一段时间发现,在WInterceptor的after中,对Action对象的属性修改在页面看不到,对请求对象的属性设置也无效.为什么在调用了Action之后(invokeAction())之后,request就不能使用了呢,拦截器不能

WebServices中使用cxf开发日志拦截器以及自定义拦截器

首先下载一个cxf实例,里面包含cxf的jar包.我下的是apache-cxf-2.5.9 1.为什么要设置拦截器? 为了在webservice请求过程中,能动态操作请求和响应数据, CXF设计了拦截器. 2.拦截器分类 1. 按所处的位置分:服务器端拦截器,客户端拦截器 2. 按消息的方向分:入拦截器,出拦截器 3. 按定义者分:系统拦截器,自定义拦截器 3.拦截器API Interceptor(拦截器接口) AbstractPhaseInterceptor(自定义拦截器从此继承) Loggi

SSH-Struts2简单的自定义拦截器MethodFilterInterceptor

SSH-Struts2简单的自定义拦截器MethodFilterInterceptor      最近业余时间工作之余也在学习SSH相关的知识,今天刚刚尝试写了一个基础的Struts2拦截器通过继承MethodFilterInterceptor方法.    一.什么是拦截器 拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式. 二.本文

stauts 2 自定义拦截器

问题描述 我想定义一个拦截action中指定方法的拦截器,比如我只拦截add方法.我看到网上有人说extendsMethodFilterInterceptor可是我不知道怎么在stauts.xml中配置,请各位大牛帮帮忙啊 解决方案 解决方案二:去我BLOG看下有个自定义拦截器的例子http://blog.csdn.net/java_cxrs/archive/2010/04/23/5519743.aspx解决方案三:嗯继承自MethodFilterInterceptor抽象基类就可以对方法进行拦

java自定义拦截器用法实例_java

本文实例讲述了java自定义拦截器及其用法.分享给大家供大家参考.具体如下: LoginInterceptor.java文件如下: package com.tq365.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwo