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