论坛首页 Java企业应用论坛

Spring MVC 3.x annotated controller的几点心得体会

浏览 58625 次
该帖已经被评为精华帖
作者 正文
   发表时间:2011-05-25  
yinyanbin 写道

如果是<url-pattern>/</url-pattern>那么图片,css,js怎么办呢?就显示不了了

再写一个<servlet-mapping> 呗,再说了一般项目还挺难做到全部rest风格吧

比如

<servlet-mapping>    

    <servlet-name>default</servlet-name>    

    <url-pattern>/css/*</url-pattern>    

</servlet-mapping> 

0 请登录后投票
   发表时间:2011-05-25  
rocketball 写道
yinyanbin 写道

如果是<url-pattern>/</url-pattern>那么图片,css,js怎么办呢?就显示不了了

再写一个<servlet-mapping> 呗,再说了一般项目还挺难做到全部rest风格吧

比如

 

<servlet-mapping>    

    <servlet-name>default</servlet-name>    

    <url-pattern>/css/*</url-pattern>    

</servlet-mapping> 

 

楼上说的对,我也是建议使用起码两个servlet mapping,下面是我的建议用法:

  	<!-- Serves static resource content from .jar files such as spring-faces.jar -->
	<servlet>
		<servlet-name>Resources Servlet</servlet-name>
		<servlet-class>org.springframework.js.resource.ResourceServlet</servlet-class>
		<load-on-startup>0</load-on-startup>
	</servlet>
		
	<!-- Map all /resources requests to the Resource Servlet for handling -->
	<servlet-mapping>
		<servlet-name>Resources Servlet</servlet-name>
		<url-pattern>/resources/*</url-pattern>
	</servlet-mapping>
	
	<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>Controller</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
				/WEB-INF/webapp-servlet.xml
			</param-value>
		</init-param>
		<load-on-startup>2</load-on-startup>
	</servlet>
		
	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>Controller</servlet-name>
		<url-pattern>/servlet/*</url-pattern>
	</servlet-mapping>
 
一个用来mapping resource(这样用甚至可以map到jar里面的资源),另一个专门mapping servlet.

0 请登录后投票
   发表时间:2011-05-26  
yinyanbin 写道

如果是<url-pattern>/</url-pattern>那么图片,css,js怎么办呢?就显示不了了

我的作法是在 webapp 根目录下,建一个子目录 resources ,

在 resources 下,再建 3 个子目录:js, css, img

 

在 spring mvc 的 xml 配置文件里面,加上这一句:

<mvc:resources location="/resources/" mapping="/resources/**" />

 

web.xml 里面,还是配置:

<url-pattern>/</url-pattern>

 

这样达到的效果:spring mvc 处理所有请求,但是 resources 下的(js, css, img)除外。

0 请登录后投票
   发表时间:2011-05-26  
suyulin6688 写道
yinyanbin 写道

如果是<url-pattern>/</url-pattern>那么图片,css,js怎么办呢?就显示不了了

 

我的作法是在 webapp 根目录下,建一个子目录 resources ,

在 resources 下,再建 3 个子目录:js, css, img

 

在 spring mvc 的 xml 配置文件里面,加上这一句:

<mvc:resources location="/resources/" mapping="/resources/**" />

 

web.xml 里面,还是配置:

<url-pattern>/</url-pattern>

 

这样达到的效果:spring mvc 处理所有请求,但是 resources 下的(js, css, img)除外。

 

既然楼上的说开了,我就补充一下,我的思路跟你一样,只是我直接把js,css,images直接放到根目录下,然后这样配置:

<mvc:resources mapping="/resources/**" location="/, classpath:/META-INF/web-resources/" />

 

好处也说一下,免得越抹越黑,浪费大家笔墨:

1. 因为jsp,message,tld等都放到了WEB-INF下,其实根目录下本来就没啥东西了,所以js,css,images就直接摆出来了;

2. 因为用了spring的js/resource组件(org.springframework.js.resource.ResourceServlet @ spring-js-resource),这东西可以把jar的东西也按需export出来,有利于组件化——比如有些img是framework级别的,一般基于此framework的项目就直接export出来用好了

0 请登录后投票
   发表时间:2011-05-26  
itstarting 写道
suyulin6688 写道
yinyanbin 写道

如果是<url-pattern>/</url-pattern>那么图片,css,js怎么办呢?就显示不了了

 

我的作法是在 webapp 根目录下,建一个子目录 resources ,

在 resources 下,再建 3 个子目录:js, css, img

 

在 spring mvc 的 xml 配置文件里面,加上这一句:

<mvc:resources location="/resources/" mapping="/resources/**" />

 

web.xml 里面,还是配置:

<url-pattern>/</url-pattern>

 

这样达到的效果:spring mvc 处理所有请求,但是 resources 下的(js, css, img)除外。

 

既然楼上的说开了,我就补充一下,我的思路跟你一样,只是我直接把js,css,images直接放到根目录下,然后这样配置:

<mvc:resources mapping="/resources/**" location="/, classpath:/META-INF/web-resources/" />

 

好处也说一下,免得越抹越黑,浪费大家笔墨:

1. 因为jsp,message,tld等都放到了WEB-INF下,其实根目录下本来就没啥东西了,所以js,css,images就直接摆出来了;

2. 因为用了spring的js/resource组件(org.springframework.js.resource.ResourceServlet @ spring-js-resource),这东西可以把jar的东西也按需export出来,有利于组件化——比如有些img是framework级别的,一般基于此framework的项目就直接export出来用好了


再补充一点,用了spring-js-resource 还可以配置更精准的resource cache策略,也是很有意思的一点,具体请大家看ref吧
0 请登录后投票
   发表时间:2011-05-29  
虽然没用springmvc但是最后还是我一票,定为精华了,楼主的确认认真,建议分片,分类整理成博客,便于后来人学习!!!
0 请登录后投票
   发表时间:2011-05-29  
kjj 写道
虽然没用springmvc但是最后还是我一票,定为精华了,楼主的确认认真,建议分片,分类整理成博客,便于后来人学习!!!

哈哈,谢谢了,我还一直奇怪怎样才能捞个精华呢

不过也说明spring mvc还是有其可取之处,哪怕相比struts
0 请登录后投票
   发表时间:2011-05-29  
感觉SPRING MVC的数据绑定比较差,没struts2方便。
0 请登录后投票
   发表时间:2011-05-30  
jason&xu 写道
感觉SPRING MVC的数据绑定比较差,没struts2方便。

楼上可否举例一二加以说明?

据我所知,spring mvc的form binding和validation都还是不错的了

其中的form binding只要加上一个model,即可完全面向pojo对象实现form <-> controller param之间的绑定与传递

struts2一直没兴趣看,也就不得而知其高明之处了,还请指教
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics