SpringMVC基础(2)——常用注解、SpringMVC之响应

本文详细介绍了SpringMVC中常用的注解,包括RequestParam、RequestBody、PathVariable、RequestHeader、CookieValue、ModelAttribute和SessionAttribute。同时,讨论了SpringMVC如何处理响应,包括返回String、void、ModelAndView以及如何利用Response响应Json数据。文中还提到了RESTful风格的URL设计,并解释了HiddenHttpMethodFilter的作用。
摘要由CSDN通过智能技术生成

目录

1.常用注解

1.1 RequestParam

1.2 RequestBody

1.3 PathVariable

(1)Restful风格

(2)演示PathVariable注解的示例代码:

(3)HiddentHttpMethodFillter过滤器

1.4 RequestHeader

1.5 CookieValue

1.6 ModelAttribute

(1)基于POJO使用

(2)ModelAttribute 修饰方法带返回值

(3)ModelAttribute 修饰方法不带返回值

1.7 SessionAttribute

2.SpringMVC之响应

2.1 响应返回值之String

2.2 响应返回值之void

2.3 响应返回值之ModelAndView

2.4 使用Response响应Json数据

(1)解决DispatcherServlet拦截静态资源的问题

(2)代码实现


1.常用注解

1.1 RequestParam

  • 作用:把请求中指定名称的参数给控制器中的形参赋值。
  • 属性:
    • value:请求参数中的名称。
    • required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。

部分示例代码:

anno.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>RequestParam</title>
</head>
<body>
    <a href="anno/testRequestParam?name=哈哈">RequestParam</a>
</body>
</html>

annoController.java

package cn.cqu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/anno")
public class annoController {
    @RequestMapping("/testRequestParam")
    //指定传入形参username的值为请求中的name
    public String testRequestParam(@RequestParam("name")String username)
    {
        System.out.println("执行了。。。");
        System.out.println(username);
        return "success";
    }
}

1.2 RequestBody

  • 作用:
    • 用于获取请求体内容。直接使用得到是 key=value&key=value...结构的数据。
    • get 请求方式不适用。(get请求会将请求参数封装到地址栏上,没有请求体,只有post请求才存在post内容)
  • 属性:
    • required:是否必须有请求体。默认值是:true
      • 当取值为 true ,get 请求方式会报错。
      • 如果取值 falseget 请求得到是 null

示例代码:

anno.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>RequestBody</title>
</head>
<body>

<form action="anno/testRequestBody" method="post">
    <br>
    <%--    以下input中的name必须与Account中的字段名称一样,因为会通过name去查找它对应的set方法    --%>
    姓名:<input type="text" name="username"/><br>
    年龄:<input type="text" name="age"/><br>
    <input type="submit" name="提交"/>
</form>

</body>
</html>

AnnoController.java

package cn.cqu.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/anno")
public class AnnoController {


    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body)
    {
        System.out.println("执行了。。。");
        System.out.println(body);
        return "success";
    }
}

1.3 PathVariable

  • 作用:用于绑定 url 中的占位符。例如:请求 url /delete/{id},这个{id}就是 url 占位符。
    • url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。
  • 属性:
    • value:用于指定 url 中占位符名称。
    • required:是否必须提供占位符。

(1)Restful风格

  • 什么是 rest

REST(英文:Representational State Transfer,简称 REST)描述了一个架构样式的网络系统,

比如 web 应用程序。它首次出现在 2000 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之

一。在目前主流的三种 Web 服务交互方案中,REST 相比于 SOAPSimple Object Access protocol,简单

对象访问协议)以及 XML-RPC 更加简单明了,无论是对 URL 的处理还是对 Payload 的编码,REST 都倾向于用更

加简单轻量的方法设计和实现。

值得注意的是 REST 并没有一个明确的标准,而更像是一种设计的风格。

它本身并没有什么实用性,其核心价值在于如何设计出符合 REST 风格的网络接口。

  • restful 的优点

它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

  • restful 的特性:

资源(Resources:网络上的一个实体,或者说是网络上的一个具体信息。

它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。可以用一个 URI(统一

资源定位符)指向它,每种资源对应一个特定的 URI 。要

获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符

表现层(Representation把资源具体呈现出来的形式,叫做它的表现层 (Representation)。

比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二

进制格式。

状态转化(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值