最近在搞Spring mvc3.0,发现还不错
像RESTFUL风格的URL请求也是可以支持的,虽然Apache有Urlrewrite的filter也可以做,但是总感觉为了一个url再多加一个jar包进去也不是什么明智之举。
下面我来讲讲,Spring mvc3怎样支持rest风格的url、支持velocity模板、支持json数据格式(像freemarker和velocity是一样的,就不多讲了)
首先我们得修改:
web.xml
<servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 这里先配置spring的请求分发器--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping><!--这里要修改一下,这里本来spring一般都是“*.do”之类的xx,把这里直接修改为“/” 就行了 --> <!-- 这个是第一步,当然我们还要配置一些普通的html,jpg这样的一些静态文件的请求可以不用经过dispather。--> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</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>*.flv</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.swf</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>*.bmp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpeg</url-pattern> </servlet-mapping>
然后配置spring的配置文件
<context:component-scan base-package="sources.java.servlet.controller"/> <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>
在配置了web.xml之后,其实按理说这样就行了,再一个就是要注意spring里面controller的@requestMapping的配置了
@RequestMapping(value ="/welcome/user")
public ModelAndView welcome(HttpServletRequest request,HttpServletResponse response,
ModelMap modelMap) {
//这只是一个普通的转向的类
return new ModelAndView("welcome",modelMap);
}
上面返回的ModelAndView,返回视图 welcome.jsp,仅仅是视图,url并不会变化,当然,千万别忘了@Controller的注释你的请求的类,要不然就找不到你请求的路径
OK了,启动服务器
http://localhost:8080/Proj/welcome/user 在浏览器输入这个地址,便会得到你要的jsp页面了