页面登录时,无法跳转action方法访问数据库,jsp提示404
jsp页面上的链接访问的是一个action方法。结果我点击以后,发现跳转到了一个404页面。同时有Java报错:“The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.”
我使用在线翻译了一下该英文的意思:
源服务器找不到目标资源的当前表示形式,或者不愿意公开该表示形式存在。
同时,我在myeclipse中的action方法中打断点进行调试,发现程序压根没进入这个action方法。
这是什么鬼?我表示大写的问号,看不懂啊,怎么办呢。
我接着在网上看相关的帖子,找灵感和解决方案。
直到,看到网上说这边很可能是因为修改了web.xml文件后导致的。于是我猛然想起自己还真的修改了一下该xml配置文件。当时也是因为解决相关的中文参数传递保存的时候乱码问题,加了一个中文设置的过滤器filter。会不是这个东西的影响呢?
我之前对filter的配置也是不太清楚,相关规范也没有系统的听过,只是简单的会照猫画虎配置和使用。
出现我这个问题是不是因为我在之前的基础上添加了新的filter得格式不正确呢?
我最开始是直接将filter内容添加进了已有的filter标签中。结果Tomcat启动不报错。所以就一直没往这边想。现在有了这个提示,我立马开始搜索相关filter添加多个的配置格式和规范。
我突然发现filter和filter-mapping两个标签是成对儿出现的。添加多个filter是可以的,但是需要对应的filter和filter-mapping对依次放置。即如下写法。
<!--第一对filter-->
<filter>
<!-- 用于解决ssh整合后中文乱码问题-->
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--第二对filter-->
<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.xml方法的语法错误,导致项目正常启动(tomcat没有报错),而无法正常访问action方法了。至此问题解决。
希望我的回答能够帮助到你。