学习SpringMVC——如何获取请求参数

@RequestParam

@PathVariable

@QueryParam

@CookieValue

@ModelAndView

@ModelAttribute

 

一、spring mvc如何匹配请求路径——“请求路径哪家强,RequestMapping名远扬”

@RequestMapping是用来映射请求的,比如get请求,post请求,或者REST风格与非REST风格的。 该注解可以用在类上或者方法上,如果用于类上,表示该类中所有方法的父路径。

@Controller的注解,该注解在SpringMVC 中,负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。

RequestMapping可以实现模糊匹配路径,比如:

  ?:匹配一个字符

  *:匹配任意字符

  **:匹配多层路径

  /springmvc/**/lastTest 就可以匹配/springmvc/firstTest/secondTest/lastTest这样的路径

 

二、spring mvc如何获取请求的参数——“八仙过海,各显神通”  

1. @PathVariable

  该注解用来映射请求URL中绑定的占位符。通过@PathVariable可以将URL中占位符的参数绑定到controller处理方法的入参中

@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable(value="id") Integer id){
    System.out.println("testPathVariable:" + id);
    return SUCCESS;
}

 

<a href="springmvc/testPathVariable/1">testPathVariable</a><br/><br/>

  

2. @RequestParam

  该注解也是用来获取请求参数的。那么该注解和@PathVariable有何不同呢?

@RequestMapping(value="/testRequestParam")
public String testRequestParam(@RequestParam(value="username") String username, @RequestParam(value="age", required=false, defaultValue="0") int age){
    System.out.println("testRequestParam" + " username:" + username + " age:" +age);
    return SUCCESS;
}

注:@PathVariable和@RequestParam之间的一些区别

请求参数是以键值对出现的,我们通过@RequestParam来获取到如username或age后的具体请求值

 

增删改都是通过post方式发送出去的

总结下,如何发送put和delete的请求:

1.在web.xml中配置HiddenHttpMethodFilter

<!-- 配置HiddenHttpMethodFilter:可以把POST请求转为DELETE或POST请求 -->
<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
     
<filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<input type="hidden" name="_method" value="DELETE"/>

  

2.发送post请求

 

3.请求中是个隐藏域,name为”_mothod”,value为put或delete

  

3. @CookieValue

也是一种映射,映射的是一个Cookie值。

 @RequestMapping("/hellocookie")
    public String testCookieValue(@CookieValue("JSESSIONID") String cookieValue){
        System.out.println("testCookieValue: " + cookieValue);
        return "success";
    }

index.jsp界面上添加链接

<a href="hellocookie">hellocookie</a>

 

 

posted @ 2018-11-19 09:50  言西早石头侠  阅读(181)  评论(0编辑  收藏  举报