zoukankan      html  css  js  c++  java
  • spring MVC学习(三)

    1. @RequestMapping:

    在请求的路径中传递参数:参数作为路径的一部分,可以在路径中直接使用

    {paramName}来表示,另一种就是更加传统的表示方式?paramName=paramValue

    @RequestMapping(value ="/test/path/{id}",method=RequestMethod.GET)
        public String testPath(@PathVariable String id){
            System.out.println("路径中的参数:"+id);
            return "index";
        }
        @RequestMapping(value="/test/param?name=jobs",method= RequestMethod.GET)
        public String testParam(@RequestParam(name="name") String name){
            System.out.println("参数值是:"+name);
            return "index";
        }

    在对应的接受参数分别使用@PathVariable和@RequestParam

    @pathVariable可以多次使用,它可以很好的支持int,long,Date数据类型,spring会帮我们自动去转换,转换失败时会抛出TypeMismatchException异常。当然如果这些基本的类型转换不能满足你的需求,spring还有其他可供类型转换的方法,这里不在这篇中讲。

    路径中使用正则表达式的表示方法

    由于本人对正则不熟悉,在这里就把官方文档中的说明直接拿过来,做个标记,知道有这么一种方式方法:

    image

    另一种方式,不解释:

    image

    2.@RequestBody

    它与HTTP请求中的request body对应

    @RequestMapping(path = "/something", method = RequestMethod.PUT)
    public void handle(@RequestBody String body, Writer writer) throws IOException {
        writer.write(body);
    }

    3.@ModelAtrribute

    包请求中的参数封装成一个对象

    @RequestMapping(method = RequestMethod.POST)
    public String processSubmit(@ModelAttribute("pet") Pet pet) {
    
    do something
     
     }

    4. Controller中可以作为放回值的类型

    我们这里只学习想常用的就可:

    ModelAndView:这个似乎是以前最常用的,既有视图又有数据模型

    Model:这个只返回数据模型,视图模型和你请求的对应

    View:放回视图

    Map:数据

    List:数据

    String:解析成放回视图

    void:

    5.@RequestParam:

    把请求参数绑定到方法参数中。

    @RequestMapping("/test/param")
        public String testRequestParam(@RequestParam("name") String name){
            return "index";
        }

    表示在请求中有一个参数名为name的参数,通过注解把该参数的值和方法中的参数绑定,这样在方法参数中就可以获取用户的数据。

    当然这样写的要注意一点,就是如果没有这个参数name的话系统会报错,解决的办法是:@RequestParam(value="name",required=false),可以使用是否是必传来做。

    如果对于传入的参数个数不确定,可以使用Map<Stirng,String>或者MultiValueMap<String,String>来作为方法参数:

    //不确定参数个数
        @RequestMapping("/test/params")
        public String testRequestParam2(@RequestParam Map<String, String> params){
            //params中放着所有的参数,一键值对的形式存在
            return "index";
        }

    6.@ResponseBody

    该注解通过注解一个方法,使得这个方法的返回值直接写到HTTP响应体中,而不同于放在模型(Model)中。

    该注解和@RequestBody相识,相反。

    //注解是方法返回值直接放到Http响应的报文体中
        @RequestMapping("/test/retunBoyd")
        @ResponseBody
        public String testResponseBody(){
            return "returnBody";
        }

     

    7.@RestController

    如果在你的@Controller注解的类中,方法都使用了@ResponseBody注解,那么你就可以修改该类使用RestController注解,所有方法去除@ResponseBody注解。

    简单讲:@RestController = @Controller + @ResponseBody

     

    8.@RequestHeader

    不解释看图:

    image

    9.升级到3.0

    设置web.xml配置文件使容器升级到3.0

    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                http://java.sun.com/xml/ns/javaee
                http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        version="3.0">
    
        ...
    
    </web-app>

     

     

  • 相关阅读:
    用iptables封杀内网的bt软件
    FreeBSD 利用IPFW实现限制局域网使用QQ
    网络安全设备Bypass功能介绍及分析
    活用Windows Server 2008系统的几种安全功能
    恢复mysql管理员密码
    远程控制Windows2003下安装Pcanywhere导致Awgina.dll出错的解决办法
    Ubuntu 11.04 LAMP+JSP环境安装过程
    hbase首次导入大批次的数据成功!
    Chubby是什么?
    DP-Triangle
  • 原文地址:https://www.cnblogs.com/haoke/p/5004914.html
Copyright © 2011-2022 走看看