我正在处理映射所有请求的代理servlet。 我用以下方式指定了web.xml:
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
<servlet>
<description>Servlet to proxy all requests.</description>
<display-name>ProxyServlet</display-name>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>com.epam.alpha.servlets.ProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>home</welcome-file>
</welcome-file-list>
这样所有请求都由我的代理servlet处理,除了为主页和管理页面保留的/ home和/ admin / *。这很好用!
现在,我想在我的jsp页面中使用javascript和css文件。它们位于资源文件夹下,因此它们位于正确的位置。
在servlet-context.xml中给出以下内容:
<resources mapping="/resources/**" location="/resources/" />
问题是我的servlet捕获了对静态资源的所有GET请求。如果我注释掉ProxyServlet的servlet映射,那么找到并使用资源,当然代理servlet在这种情况下不起作用。另一方面,如果我没有从jsp引用javascript文件,则代理servlet可以工作(不会发生静态资源请求)。救命啊!
答案 0 :(得分:0)
我已经能够通过Spring控制器提供页面,并使用类似的配置通过此页面加载JS脚本:
我必须
servlet的context.xml中:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="fr.free.jnizet.springtest"/>
<mvc:annotation-driven/>
<mvc:resources location="/resources/**" mapping="/resources"/>
<mvc:default-servlet-handler/>
</beans>
关键点是<mvc:default-servlet-handler/>
元素。没有这个元素,Spring在/ resources /.