SpringMVC请求数据传入

    科技2022-07-12  128

    请求数据传入

    Spring MVC框架会将HTTP请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。

    RequsetParam注解

    在处理方法入参处使用@RequestParam可以把请求参数传递给请求方法value:参数名required:是否必须。默认为true,表示请求参数中必须包含对应的参数,若不存在,将抛出异常。defaultValue:默认值,当没有传递参数时使用该值

    代码演示:

    <a href="book?age=10">Book</a> @RequestMapping(value = "/book",method = RequestMethod.GET) public String book(@RequestParam(value = "username", required = true,defaultValue = "name") String name,@RequestParam(value = "age") Integer age){ System.out.println(name+":"+age); return "success"; }

    @RequestHeader注解

    使用@RequestHeader绑定请求头的属性值请求头包含了若干个属性,服务器可以根据此获知客户端的信息,通过@RequestHeader即可将请求头中的属性值绑定到处理方法的入参中

    代码演示:

    <a href="springmvc/testRequestHeader">testRequestHeader</a> @RequestMapping(value="/testRequestHeader") public String testRequestHeader(@RequestHeader(value="Accept-Language") String al){ System.out.println("testRequestHeader - Accept-Language:"+al); return "success"; }

    @CookieValue 注解

    使用CookieValue绑定请求中的Cookie值

    代码演示:

    <a href="springmvc/testCookieValue">testCookieValue</a> @RequestMapping("/testCookieValue") public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) { System.out.println("testCookieValue: sessionId: " + sessionId); return "success"; }

    使用POJO作为参数

    SpringMVC会按照请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。

    代码演示:

    <!-- 测试 POJO 对象传参,支持级联属性 --> <form action=" testPOJO" method="POST"> username: <input type="text" name="username"/><br> password: <input type="password" name="password"/><br> email: <input type="text" name="email"/><br> age: <input type="text" name="age"/><br> city: <input type="text" name="address.city"/><br> province: <input type="text" name="address.province"/> <input type="submit" value="Submit"/> </form> @RequestMapping("/testPOJO") public String testPojo(User user) { System.out.println("testPojo: " + user); return "success"; }

    乱码问题

    如果中文有乱码,需要配置字符编码过滤器,且配置在配置其他过滤器之前。

    <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
    Processed: 0.011, SQL: 8