spring3.0 rest在resin中的实现

阅读更多

spring3.0发布后,其web方面一个很大的特性是支持rest的架构。rest的好处不用多说,spring中关于rest的配置也很简单。看了下spring-sample中的例子,主要的设置在web.xml中,首先增加了tomcat容器中关于响应静态资源的servlet:

	
	
	
		default
		/static/*
	

 

 其次将org.springframework.web.servlet.DispatcherServlet的url过滤改为“/”:

	
	
		petclinic
		org.springframework.web.servlet.DispatcherServlet
		2
	

	
	
		petclinic
		/
	

 

 

最后有一个辅助的filter:

    
        httpMethodFilter
        org.springframework.web.filter.HiddenHttpMethodFilter
    

    
        httpMethodFilter
        petclinic
    

 

第一个servlet处理的静态资源的请求,但是只有在tomcat容器(或者是spring的那个容器)中才有效果,如果放在resin中是不行的,即使你将tomcat的jar包通过maven将其引入你的项目lib中。根据看DefaultServlet的源码可知,其需要找一些默认的容器资源,而这些在resin中是没有的……而且通过看spring-sample的源码可知,这个方法要求页面引用WebRoot根目录下的资源时,通过“/static/styles/petclinic.css”这样的路径去引用css,而不是真正的路径“/petclinic.css”。

如果不再resin中解决这个问题,spring的DispatcherServlet就会处理静态资源进而报错。为此,我们使用resin自带的servlet:“resin-file”,详见resin中的配置文件:app-default.xml。其做法也很简单,将之前tomcat的servlet中web.xml中去掉,换成这个:

	
		resin-file
		/resources/*
	

 

这个配置与之前tomcat的不同,区别在于,我们将静态资源放在WebRoot的resources文件夹下(或者任何一个你喜欢的并且允许放的位置),在页面上直接使用这个css的真正路径“/resources/css/system.css”即可。如果静态资源有任何的变动,只要将servlet中的url-pattern修改或者多配几个即可。

你可能感兴趣的:(REST,Servlet,Spring,CSS,Tomcat)