虽然很多人说用了SSH还要servlet做什么,但是需要在SSH项目中使用servlet的时候却找不到解决方法。第一次整servlet到SSH项目上遇到了好多坑,花了两天才解决。
当我们在页面发出请求时,struts2将会拦截所有请求,对于servlet请求将不能够正常响应,报错信息为:HTTP Status 404 - There is no Action mapped for namespace / and action name xxServlet.
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
之前我试过把/*改成*.do,/strut/* ,但项目之前的页面都无法显示了。我们可以将原来的servlet的<url-pattern>给servlet加上一个后缀
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/RegisterServlet.servlet</url-pattern>
</servlet-mapping>
这样servlet就可以避开struts2的拦截了,然后我们在servlet中生成init()方法,
public void init() throws ServletException {
context = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
findUsersService = (IFindUsersService) context.getBean("findUsersService");
}
这样就可以获取spring的代理了。