SpringMVC的Restful风格支持

来源:互联网 发布:魔兽世界数据恢复 编辑:程序博客网 时间:2024/05/17 06:54

Restful是一种url的风格,它是对http协议的一种诠释,它要求url中只有名词没有动词。并且没有参数。

资源定位:互联网上的一切都是资源。

资源操作:get   post    put    delete等

Url格式:

http://blog.csdn.net/beat_the_world/article/details/45621673


配置restful支持

Web.xml

  <!-- 配置springMvc前端控制器 -->

  <servlet>

        <servlet-name>springMvc</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

   

        <!-- 配置springMvc核心配置文件 -->

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>classpath:spring/SpringMvc.xml</param-value>

        </init-param>

   

        <!-- 当容器启动的时候首先加载它 -->

        <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

        <servlet-name>springMvc</servlet-name>

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

  </servlet-mapping>

 使用@PathVariable

@PathVariable可以从url中接收参数

要求url中的临时变量名称等于@PathVariable中接收的变量名称

@RequestMapping("/detail/{id}")

    public String itemsDetail(@PathVariable("id") Integeriddddd,HttpServletRequest request,

            HttpServletResponse response, HttpSession session, Model model)throws Exception{

        //String idStr = request.getParameter("id");

        Items items = itemsService.findItemsById(iddddd);

       

        //将数据放入Model中用于返回给页面,相当于放到了request域中,但是和真实的request域有区别。

        //区别在不管请求转发还是重定向,model中的数据都可以带回。

        model.addAttribute("items", items);

       

        //如果controller方法返回string,那么返回的字符串就是页面的逻辑路径,视图解析器会将逻辑路径名称转化为物理路径名称

        //逻辑路径就是页面名称(不加扩展名),物理路径就是页面的存放的位置

        return"editItems";

    }



 <Mvc:Resource>标签

使用<mvc:resource>标签来配置静态资源文件不受spirngMvc拦截

SpringMvc.xml

<!--

      通过mvc:resource标签来配置静态资源不受springMvc拦截

      location:配置访问路径

      mapping:静态资源存放的位置

       -->

      <mvc:resourceslocation="/js/"mapping="/js/**"/>

 

同时配置了自定义类型转换器和<mvc:resource>标签则会抛出以下异常,此异常是springMvc官方bug,不用管,不耽误使用

org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.util.ArrayList<?> to type java.util.List<org.springframework.core.io.Resource> for value '[/js/]'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.String to type org.springframework.core.io.Resource

    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:41)

    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:169)

    at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:161)

    at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:450)

    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:496)

    at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:490)

    at

 

 

 



原创粉丝点击