问题描述
web.xml:<filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping>jsp页面:<s:action name="index" namespace="/global" executeResult="true"/>就会报错。将web.xml,<url-pattern>*.action</url-pattern>改成<url-pattern>/*</url-pattern>就正常我想不将web.xml改掉,有办法解决吗? 问题补充:Rainbow702 写道
解决方案
你不用改任何东西,你只需要在跳入你的页面的时候不要直接进入,而是通过action跳转进入。
解决方案二:
request -->HomeAction-->redirect或forward-->index.jspindex.jsp页面包含如下:<html> <head></head> <body> <s:action name="header" namespace="" executeResult="true" /> <div> </div> <s:action name="footer" namespace="" executeResult="true" /> </body></html>如上所述,通过HomeAction再重定向或转发到jsp,jsp页面中包含头部与底部,头部与底问没有通过<include>指令,而是通过struts2的 action标签来载入.现在的问题是,在web.xml中<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>这种拦截,web程序正确执行并显示 jsp页面但如果如下拦截<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>web程序就报错,错误指向 <s:action真的很奇怪。
解决方案三:
解决了请一定记得在评论中说清楚,我也开始迷惑了,这个问题怎么就这么纠结,谢谢。
解决方案四:
引用我绝对的没有自以为是,不相信加我qq 我发你项目 就是一个测试的,很小的,我发给你吧 留下qq
解决方案五:
<filter><description>struts配置文件,struts-execute</description><filter-name>struts-execute</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts-execute</filter-name><url-pattern>*.action</url-pattern><dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> </filter-mapping><filter><description>cleanup</description><filter-name>struts-cleanup</filter-name><filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class></filter><filter-mapping><filter-name>struts-cleanup</filter-name><url-pattern>*.action</url-pattern><dispatcher>FORWARD</dispatcher> <dispatcher>REQUEST</dispatcher> </filter-mapping>这个是我的配置,你可以试试,我也不知道你的问题是怎么处理的。
解决方案六:
引用现在我都怀疑你有没有碰上我说的那种情况。别自以为是 要不咱们打个赌吧
解决方案七:
引用本来默认的就是/*,后来为了servlet有效 我这才改成*.action的。我只能说你即使把servlet配置成/*了,仍然可以对action有用。只是你不会做罢了。下班闪人了,回家疗伤。
解决方案八:
我觉得你假如把配置里面加一句java代码,估计对整个项目都起作用了。
解决方案九:
引用我方正是改成/*的话,servlet就有关系了。无效了。 那你就乱配置去吧。
解决方案十:
我只能说:1,你过滤器没有过滤到你的任何页面,那么你的任何页面想用struts2的标签那是妄想。2,你servlet配置跟action没有半毛钱的关系,除非你真傻到乱配置。
解决方案十一:
引用我知道有问题的。有冲突的。你自己建一个测试一下吗 十分钟啊, web.xml*.action 然后在建立一个servlet 然后你跳转一下。哥哥我做了几百个这样的了,你目前的情况是:servlet和filter完全没弄明白,刚才解释了那么多,你一点都不理解。
解决方案十二:
引用难道还有servlet单独管理配置的吗每个servlet当然都得配置啊。
解决方案十三:
我用的就是:<filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping> 这样的啊!
解决方案十四:
/action/ 你的action路径/servlet/ 你的servlet路径
解决方案十五:
结贴吧
解决方案:
所以除了编码过滤器 其他都别配置成所有 /*
解决方案:
引用只要直接进入这个页面 ,是不是就得必须改web.mlx里? 貌似没有其他办法啊。
解决方案:
引用恩,是没有错了。 可是这样子很不方便。 我只要把web.xml那里改一下 直接进入这个页面是可以的。 只要直接进入这个页面 ,是不是就得必须改web.mlx里?struts2的配置就得配置action,不是这样不方便,而是得遵循规律。还有就是你要是配置成 /*这样的话,你以后会很麻烦,而且效率很低,比如你要引用个图片什么的都得跑过来过滤,那得过滤多少东西。而且假如要做权限,你以后也会很麻烦。
解决方案:
<s:action name="index" namespace="/global" executeResult="true"/> 类似这样的使用,我在自己的项目里面跑没问题呢!!????
解决方案:
用 / 吧,别用 /*
解决方案:
比如你现在估计是直接进入页面或者redirect a.jsp现在不要这样,你编写一个a.action然后fowward进入a.jsp。那么a.jsp里面的struts2的标签才会起作用。5分钟之内搞定啊 不然哥真的去跳了
解决方案:
哥哥我不蛋定了 拜托你试试我说的方案你就明白啦
解决方案:
那请问你的filter对你的servlet和action会产生影响吗?如果没有,修改你的filter路径,只是让你的servlet或action经过了过滤器,实际上过滤器对它没有产生任何影响,我觉得这样并不会产生什么问题。
解决方案:
引用我都说了。web.xml那一段改掉之后一切没问题。晕 就是因为你/*这样了 所以才拦截了所以 ,所以就可以直接用jsp。而你*.action这个是要拦截.action的,而你直接用jsp当然就没有啦搞不定 我跳黄浦江。
解决方案:
关键这是filter的url-pattern啊
解决方案:
你的 index 这个action 在 struts.xml 中是怎么配置的呢?
解决方案:
我知道了,你进入这个页面的时候必须经过action,不能直接显示这个页面。因为这个页面用了struts2标签,是需要过滤的 我猜想你是直接跳到这个页面而没有经过action来跳。兄弟 就是这个原因,试试就知道。
解决方案:
引用以 / 开头和以 /* 结尾的是用来做路径映射的以前缀 *. 开头的是用来做扩展映射的/ 是用来定义default servlet映射的那struts1的web.xml中为什么可以这么配置呢引用<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
解决方案:
肯定得改你的web.xml,那就看你想做成什么样了。
解决方案:
因为这个页面用了struts2标签,是需要过滤的 我猜想你是直接跳到这个页面而没有经过action来跳。
解决方案:
研究下servlet规范对于web.xml文件的配置规范 给你推荐一篇文章http://www.360doc.com/content/07/0611/18/18995_552388.shtml对于filter配置那样的url肯定是有问题的,必须以/开头。
解决方案:
我知道了,你进入这个页面的时候必须经过action,不能直接显示这个页面。
解决方案:
以 / 开头和以 /* 结尾的是用来做路径映射的以前缀 *. 开头的是用来做扩展映射的/ 是用来定义default servlet映射的
解决方案:
引用不好意思,还是那错。 前面多了个斜杠哦
解决方案:
改为引用<s:action name="/index.action" namespace="/global" executeResult="true"/> 试试
解决方案:
不会没有加<%@taglib prefix="s" uri="/struts-tags"%>吧
解决方案:
贴错误吧。
解决方案:
这是web.xml文件对于路径的规定,需要以/开头。
解决方案:
<s:action name="/global/index.action" executeResult="true"/>
解决方案:
改成引用<s:action name="index.action" namespace="/global" executeResult="true"/> 试试呢