初学Spring3 MVC,我的配置是这样的:
<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/config/servlet-context.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/index.htm</url-pattern> </servlet-mapping>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean>
我想使用RESTFull的url,所以不想加后缀.action,.do之类的,但是这样的话我的所有请求都得过DispatcherServlet,我不能访问html和jsp页面了(可能直接访问jsp页面不被rest提倡,但是我确实有这个需求),
不知道怎么实现(按照上面的配置直接访问html和jsp会被过滤,而且不能直接访问views下的页面),谁对这个熟的,帮忙下撒~~
总结下:我的需要是,如果没有任何尾缀的url则使用spring的DispatcherServlet进行过滤,若尾缀是html或者jsp就直接访问,不经过spring的过滤,请别告诉我使用mvc:resources,我需要其他方式访问jsp
[quote]明显不会是这种,default是跟容器相关的,再说你这样也不能直接访问jsp[/quote]不能访问jsp是你没在default中配置。
其它方法思路
1 写filter 提前对jsp后缀过滤转发
2 改写DispatcherServlet的doDispatch方法(迫不得已) 你看看Spring的DispatcherServlet的源码就会明白。doDispatch首先会调用getHandler找相应的controller, 如果找不到会抛异常, 一般jsp的文件也不会在controller中映射的, 是肯定找不到的。如果不改写的话第一关都过不了。
web.xml做如下配置即可
default
*.css
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
在你的xxx-servlet.xml里面加入
在webRoot下面建立一个resources文件夹
然后把你的静态资源文件 jsp 都丢进去,就可以直接访问了.
spring版本 3.0.5 低了好像不能配置mvc:resources