问题:一开始单纯的试用struts来开发一个项目,后来又在原来的基础上使用servlet技术。做了一个简单的servlet事例。在网址中输入.jsp页面时,无法找到;具体报错信息为struts找不到页面中form的action。
原因是:struts拦截了所有类型的访问,当然也包括所有的jsp访问,即servlet的页面的action被struts拦截了,如果struts中没有配置相同的action名称的话,就会报找不到action的错误信息。
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决办法:把web.xml中struts拦截的内容改成具体的,同时把servlet的action命名成与struts拦截的完全不同的后缀内容。这样就不会相互影响。web.xml中配置的struts拦截的内容:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
web.xml中servlet的配置内容:<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/servlet/loginservlet.html</url-pattern>
</servlet-mapping>