最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC注解全攻略之從請(qǐng)求到響應(yīng)的過(guò)程詳解

 更新時(shí)間:2026年03月04日 14:30:01   作者:稻草貓.  
這篇文章主要介紹了SpringMVC的注解使用,包括建立連接、請(qǐng)求、響應(yīng)等方面的詳細(xì)內(nèi)容,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

咱們學(xué)習(xí)Spring MVC,就是學(xué)習(xí)Spring MVC的各種注解。使用重點(diǎn)也就是學(xué)習(xí)如何通過(guò)瀏覽器和用戶程序進(jìn)行交互. 主要分以下三個(gè)方面: 

1. 建立連接:將用戶(瀏覽器)和Java程序連接起來(lái),也就是訪問(wèn)?個(gè)地址能夠調(diào)?到我們的Spring程序。

 2. 請(qǐng)求:用戶請(qǐng)求的時(shí)候會(huì)帶?些參數(shù),在程序中要想辦法獲取到參數(shù),所以請(qǐng)求這塊主要是獲取參數(shù) 的功能。

3. 響應(yīng):執(zhí)行了業(yè)務(wù)邏輯之后,要把程序執(zhí)行的結(jié)果返回給用戶,也就是響應(yīng).

Spring MVC注解

一. 建立連接

1.1 @RequestMapping

@RequestMapping:URL路由映射

路徑映射(Path Mapping) 就是把瀏覽器訪問(wèn)的 URL 地址,和后端代碼里處理請(qǐng)求的方法(Controller 方法)對(duì)應(yīng)起來(lái)的規(guī)則。

資源路徑:類路徑+方法路徑(如果一個(gè)方法路徑它有類路徑就必須加上)

注意:@RequestMapping括號(hào)中的 / 可加可不加

@RequestMapping既是類注解(對(duì)應(yīng)類路徑)也是方法注解(對(duì)應(yīng)方法路徑)(既可以加在類上也可以加在方法上)

@Request Mapping對(duì)于請(qǐng)求方法來(lái)說(shuō),默認(rèn)既支持GET也支持POST方法(通過(guò)瀏覽器發(fā)起的請(qǐng)求都是默認(rèn)GET請(qǐng)求,并且請(qǐng)求方式是由客戶端決定,服務(wù)端進(jìn)行支持的

如何讓它只支持某一種請(qǐng)求:

@RequestMapping(value = "/hello",method = RequestMethod.GET)

當(dāng)只支持這一種請(qǐng)求方法時(shí),用另一種請(qǐng)求就會(huì)請(qǐng)求失敗

也可以加更多的請(qǐng)求方式:

如:

 @RequestMapping(value = "/hello",method = {RequestMethod.GET,RequestMethod.POST,RequestMethod.DELETE})

還可以用其它的注解來(lái)指定請(qǐng)求方式(這里只寫一部分,其它的類似):

  • @GetMapping():僅支持GET請(qǐng)求
  • @PostMapping():僅支持POST請(qǐng)求
  • @DeleteMapping():僅支持DELETE請(qǐng)求

注意:

  • @GetMapping(“/hello”)=@RequestMapping(value = "/hello",method = RequestMethod.GET)
  • 如果類注解有method規(guī)定請(qǐng)求方法,而方法注解沒(méi)有--則“繼承類”的。如果方法注解有加,則支持方法自己的

其余類似

1.2 @RestController

@RestController是類注解

在上面這個(gè)代碼中@RestController的主要作用:告訴Spring,這個(gè)類中有處理HTTP請(qǐng)求的能力(有處理HTTP請(qǐng)求的接口類),請(qǐng)求來(lái)了就到我這里來(lái)查-----相當(dāng)于Spring的查找范圍(沒(méi)有就不會(huì)查)

二. 請(qǐng)求

訪問(wèn)不同的路徑,就是發(fā)送不同的請(qǐng)求.在發(fā)送請(qǐng)求時(shí),可能會(huì)帶?些參數(shù),所以學(xué)習(xí)Spring的請(qǐng)求,主要 是學(xué)習(xí)如何傳遞參數(shù)到后端以及后端如何接收. 傳遞參數(shù),咱們主要是使?瀏覽器和Postman來(lái)模擬.

2.1 傳遞單個(gè)參數(shù)

當(dāng)參數(shù)為Boolean類型時(shí),可以傳1/0也可以傳true/false(SpringMVC會(huì)幫我們轉(zhuǎn)換),其余的數(shù)字不可以

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public  String r1(Boolean flag) {
         return "接收到參數(shù):"+flag;
    }
}

參數(shù)重命名:使用@RequestParam注解(使用了@RequestParam注解的參數(shù)默認(rèn)為必傳參數(shù)-------如何修改--@RequestParam(value="number",required=false)即可)

實(shí)際上:我們服務(wù)器在Spring框架下接收到的數(shù)據(jù)都是String類型,它會(huì)根據(jù)你服務(wù)器方法實(shí)際要的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換(String類型轉(zhuǎn)換成實(shí)際需要接收的參數(shù)類型,且轉(zhuǎn)化成Java基礎(chǔ)數(shù)據(jù)類型是轉(zhuǎn)換成功后直接賦值,而轉(zhuǎn)化為對(duì)象時(shí)Spring還會(huì)幫我們new對(duì)象)

注意:有的時(shí)候Spring在進(jìn)行轉(zhuǎn)換時(shí)也會(huì)轉(zhuǎn)換失敗,如:

2.2 傳遞多個(gè)參數(shù)

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public  String r1(String name,Integer num) {
         return "接收到參數(shù):"+name+" "+num;
    }
}

在傳遞時(shí)順序可以不保持一致,但是參數(shù)名要保持一致

在傳遞參數(shù)時(shí):

多傳參數(shù)---不會(huì)報(bào)錯(cuò),多的會(huì)被忽略

少傳參數(shù)---可能會(huì)報(bào)錯(cuò)---原因:未傳的參數(shù)Spring就會(huì)設(shè)為null,如果方法參數(shù)為基本數(shù)據(jù)類型(如 int,double,boolean等)就不能接收,就會(huì)報(bào)錯(cuò)。如果是其它的參數(shù)就不會(huì)報(bào)錯(cuò)(可以被賦值為null)

2.3 傳遞對(duì)象

package com.example.demo;
import org.springframework.web.bind.annotation.*;
class person{
    String name;
    int num;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    @Override
    public String toString() {
        return "person{" +
                "name='" + name + '\'' +
                ", num=" + num +
                '}';
    }
}
@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public  String r1(person person) {
         return person.toString();
    }
}

在Spring代碼中定義的類必須要有一個(gè)無(wú)參的構(gòu)造方法和Setter/getter,不然會(huì)報(bào)錯(cuò)

為什么必須要 setter?
Spring 底層是這么干的:

// 1. 調(diào)用無(wú)參構(gòu)造
User user = new User();

// 2. 賦值!必須靠 set 方法!
user.setName("張三");
user.setAge(20);
沒(méi)有 setXxx(),Spring 根本沒(méi)法給對(duì)象賦值!

注意:

  • 對(duì)于對(duì)象來(lái)說(shuō),不傳參數(shù)給Java基礎(chǔ)類型的變量,不會(huì)報(bào)錯(cuò)---因?yàn)轭愔械淖兞慷加袑?duì)應(yīng)的初始值(如int的初始值就是0)
  • 在沒(méi)加其它注解的情況下,對(duì)象的傳參只能在URL上(有一種注解可以使對(duì)象在body在進(jìn)行傳參,下面會(huì)講到)

2.4 傳遞數(shù)組

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public  String r1(String[] arr) {
         return Arrays.toString(arr);
    }
}

傳遞數(shù)組有兩種方法:

2.5 傳遞集合

傳遞集合必須要使用注解 @RequestParam

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public  List<String> r1(@RequestParam List<String> list) {
         return list;
    }
}

注意:注意:參數(shù)為數(shù)組/集合類時(shí),對(duì)于客戶端來(lái)說(shuō),傳遞參數(shù)時(shí)的格式都是一樣的;但對(duì)于服務(wù)端來(lái)說(shuō),如果不加 @RequestParam,Spring 只能直接接收數(shù)組,集合必須加上這個(gè)注解才能正常接收。

2.6 傳遞JSON數(shù)據(jù)

JSON概念:

JSON(JavaScript Object Notation)
是一種輕量級(jí)、純文本、跨語(yǔ)言的數(shù)據(jù)交換格式。
- 本質(zhì):字符串格式的結(jié)構(gòu)化數(shù)據(jù)
- 作用:前后端、不同語(yǔ)言之間傳遞數(shù)據(jù)
- 特點(diǎn):簡(jiǎn)單、易讀、體積小、幾乎所有語(yǔ)言都支持,且空行與換行無(wú)效

JSON 語(yǔ)法:
1. 對(duì)象用  { } ,鍵值對(duì)結(jié)構(gòu)(其中key對(duì)應(yīng)于一個(gè)對(duì)象中的一個(gè)屬性,value則對(duì)應(yīng)屬性的值)
2. 鍵必須用雙引號(hào)  "key" (不能單引號(hào)、不能省略)
3. 鍵值之間用 冒號(hào)  : 
4. 多組用 逗號(hào)  ,  分隔
5. 數(shù)組/集合用  [ ] 
6. 值支持:
- 字符串(雙引號(hào))
- 數(shù)字
- 布爾  true / false 
-  null 
- 對(duì)象  {} 
- 數(shù)組/集合  [] 
7. 最后一個(gè)成員后面不能加逗號(hào)

下面就是一個(gè)json格式的數(shù)據(jù):

{
 "squadName": "Super hero squad",
 "homeTown": "Metro City",
 "formed": 2016,
 "secretBase": "Super tower",
 "active": true,
 "members": [{
 "name": "Molecule Man",
 "age": 29,
 "secretIdentity": "Dan Jukes",
 "powers": ["Radiation resistance", "Turning tiny", "Radiation 
blast"]
 }, {
 "name": "Madame Uppercut",
 "age": 39,
 "secretIdentity": "Jane Wilson",
 "powers": ["Million tonne punch", "Damage resistance", "Superhuman 
reflexes"]
 }, {
 "name": "Eternal Flame",
 "age": 1000000,
 "secretIdentity": "Unknown",
 "powers": ["Immortality", "Heat Immunity", "Inferno", 
"Teleportation", "Interdimensional travel"]
 }]
}

JSON有兩種格式:

  • 對(duì)象格式:最外層用 { } 包裹鍵值對(duì)
  • 數(shù)組格式:最外層用 [ ] 包裹對(duì)象/字符串/數(shù)字.....

可以使?在線JSON格式化?具來(lái)進(jìn)行校驗(yàn)和書寫:在線JSON校驗(yàn)格式化?具(https://www.bejson.com/

JSON和Java對(duì)象可以相互轉(zhuǎn)換---轉(zhuǎn)換工具:常見(jiàn)有三種:

1. Gson 2.fastjson 3.jackson(由于jackson是Spring框架本身引入的,下面就以jackson演示)

使用到ObjectMapper這個(gè)類

@SpringBootTest
class DemoApplicationTests {
	@Test
	void contextLoads() throws JsonProcessingException {
		//對(duì)象轉(zhuǎn)json
		ObjectMapper objectMapper = new ObjectMapper();
        person person=new person();
		person.setName("zhangsan");
		person.setNum(21);
       String json=objectMapper.writeValueAsString(person);
		System.out.println(json);
		//json轉(zhuǎn)對(duì)象
		person p=objectMapper.readValue(json, com.example.demo.person.class);
		System.out.println(p);
	}
}

注意:JSON 實(shí)際上就是一個(gè)具有特定格式的字符串,用來(lái)表示結(jié)構(gòu)化數(shù)據(jù)。

我們?cè)诮邮認(rèn)SON對(duì)象時(shí)。有兩種方式:

  • 使用String來(lái)接收
  • 使用自定義類來(lái)接收

這兩種方式都要用到注解 @RequestBody,由于我們把json數(shù)據(jù)都是放在body中的,@RequestBody就是在告訴Spring,參數(shù)在body中,如果不加@RequestBody,Spring只會(huì)在URL中查找參數(shù)。

使用自定義類來(lái)接收:@RequestBody還會(huì)自動(dòng)將JSON數(shù)據(jù)轉(zhuǎn)化為Person對(duì)象

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public String r1(@RequestBody person person) {
        return person.toString();
    }
}

使用String來(lái)接收:@RequestBody不會(huì)將JSON數(shù)據(jù)轉(zhuǎn)化為Person對(duì)象(如果想要這個(gè)Sting數(shù)據(jù)轉(zhuǎn)化為對(duì)象可以借助ObjectMapper這個(gè)類來(lái)實(shí)現(xiàn))

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public String r1(@RequestBody String json) throws JsonProcessingException {
        //將拿到的JSON原始數(shù)據(jù)轉(zhuǎn)化為對(duì)象
        ObjectMapper objectMapper=new ObjectMapper();
        person person=objectMapper.readValue(json, com.example.demo.person.class);
        return person.toString();
    }
}

2.7 獲取URL中的參數(shù)

使用@PathVariable注解:Spring MVC 中用于從 URL 路徑中提取變量值的注解,它將 URL 中的占位符參數(shù)綁定到控制器方法的形參上。

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1/{articleID}/{username}")
    public String r1(@PathVariable Integer articleID,@PathVariable("username") String name){
        return "接收到參數(shù)"+" "+articleID+" "+name;
    }
}

注意:雖然 @PathVariable  本身不要求參數(shù)順序,但路徑變量的類型和位置必須嚴(yán)格對(duì)應(yīng)。

2.8 上傳文件

使用注解 @RequestPart

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public String r1(@RequestPart MultipartFile file) throws IOException {
        file.transferTo(new File("D:\\新建文件夾\\"+file.getOriginalFilename()));//將文件拷貝到改路徑下
        return file.getOriginalFilename();//返回文件名
    }
}

2.9 獲取Cookie

獲取Cookie有兩種方法:

傳統(tǒng)servl方式:

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/r1")
    public String r1(HttpServletRequest request, HttpServletResponse response) {
        Cookie[] cookies = request.getCookies();//獲取一個(gè)Cookie數(shù)組
if(cookies!=null){
    for (Cookie cookie : cookies) {
        if (cookie != null) {
            System.out.println(cookie.getName() + "=" + cookie.getValue());//循環(huán)遍歷打印每一個(gè)Cookie鍵值對(duì)
        }
    }
}
        return "獲取Cookie成功";
    }
}

如果我們的請(qǐng)求沒(méi)有Cookie,我們可以手動(dòng)設(shè)置Cookie(Cookie是可以偽造的)

注意:當(dāng)一個(gè) HTTP 請(qǐng)求到達(dá)時(shí),Spring 會(huì)自動(dòng)創(chuàng)建一個(gè) HttpServletRequest  對(duì)象,封裝了本次請(qǐng)求的所有信息(如 URL、請(qǐng)求頭、參數(shù)、Cookie 等)。

用注解獲取Cookie:(這個(gè)方法只能逐個(gè)獲取單個(gè)Cookie鍵值對(duì),不能一下子獲取所有Cookie)

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/getCookie")
    public String getCookie(@CookieValue("name") String name) {
        return "獲取Cookie成功,name:"+name;
    }
}

注意:獲取Cookie的前提是要有Cookie

2.10 獲取Session

在獲取Session之前要先獲取Session1對(duì)象然后再設(shè)置Session才能獲取得到

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/getSession")
    public String getSession(HttpServletRequest request) {
        HttpSession session=request.getSession();//拿到Session對(duì)象后,我們才能往Session中存數(shù)據(jù)
        session.setAttribute("name","zhangsan");
        session.setAttribute("age","22");
        return "設(shè)置Session成功";//我們?cè)O(shè)置的Session數(shù)據(jù)只是保存在服務(wù)器中,不會(huì)外傳
    }
}

當(dāng)客戶端向服務(wù)器發(fā)送請(qǐng)求并且代碼主動(dòng)要Session服務(wù)器才會(huì)第一次創(chuàng)建Session對(duì)象

每創(chuàng)建一個(gè) session 對(duì)象,服務(wù)器都會(huì)通過(guò)響應(yīng)發(fā)送一個(gè) SessionID 給客戶端。

request.getSession() : 如果客戶端發(fā)送的請(qǐng)求中帶有一個(gè)有效的SessionID,服務(wù)器就會(huì)依據(jù)這個(gè)SessionID找到對(duì)應(yīng)的Session對(duì)象并返回。如果沒(méi)有SessionID/沒(méi)有找到SessionID對(duì)應(yīng)的Session對(duì)象,服務(wù)器就會(huì)創(chuàng)建出一個(gè)新的Session對(duì)象,并且返回客戶端一個(gè)SessionID。

總之:每一個(gè)客戶端對(duì)應(yīng)的Session對(duì)象是不同的,通過(guò)Session對(duì)象對(duì)應(yīng)的SessionID來(lái)識(shí)別

注意:

  • Session默認(rèn)存儲(chǔ)在內(nèi)存中,服務(wù)器重啟后Session會(huì)丟失
  • 服務(wù)器可以存放并生成多個(gè)Session對(duì)象
  • 如果我們將自己的攜帶的SessionID改為其它的SessionID(Cookie是可以偽造的)---身份改變

獲取Session有三種方式(如果沒(méi)有Session,都要先設(shè)置Session信息*):

法一:

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/setSession")//設(shè)置Session
    public String setSession(HttpServletRequest request,String name) {
        HttpSession session=request.getSession();
        session.setAttribute("name",name);
        return "設(shè)置Session成功";
    }
    @RequestMapping("/getSession1")//獲取Session
    public String getSession(HttpServletRequest request) {
        HttpSession session=request.getSession();//先獲取Session對(duì)象再獲取其參數(shù)
        return "獲取Session成功"+"name: "+session.getAttribute("name");
    }
}

法二:(Spring獲取Session的方式):通過(guò)@SessionAttribute注解

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/setSession")//設(shè)置Session
    public String setSession(HttpServletRequest request,String name) {
        HttpSession session=request.getSession();
        session.setAttribute("name",name);
        return "設(shè)置Session成功";
    }
   @RequestMapping("/getSession2")//獲取Session
    public String getSession(@SessionAttribute("name") String name) {
        return "獲取Session成功"+"name: "+name;
    }
}

 法三:

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/setSession")
    public String setSession(HttpServletRequest request,String name) {
        HttpSession session=request.getSession();
        session.setAttribute("name",name);
        return "設(shè)置Session成功";
    }
    @RequestMapping("/getSession3")
    public String getSession(HttpSession session) {
        return "獲取Session成功"+"name: "+session.getAttribute("name");
    }
}

2.11 獲取Header

獲取Header有兩種方式

法一:

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/getHeader")
    public String getSession(HttpServletRequest request) {
       String User_Agent=request.getHeader("User-Agent");
        return "獲取Header成功:User-Agent= "+User_Agent;
    }
}

通過(guò)查看Fiddler判斷獲取到的數(shù)據(jù)是否正確

法二:使用 @RequestHeader 注解

@RestController
@RequestMapping("/r")
public class Test {
    @RequestMapping("/getHeader")
    public String getSession(@RequestHeader("User-Agent") String User_Agent) {
        return "獲取Header成功:User-Agent= "+User_Agent;
    }
}

三. 響應(yīng)

3.1 返回靜態(tài)頁(yè)面

使用 @Controller 注解(標(biāo)明我們返回的是一個(gè)視圖)

-  @RestController :類級(jí)別注解,所有方法默認(rèn)返回?cái)?shù)據(jù),不返回視圖。

(@RestController =@Controller+@ResponseBody)
-  @Controller :類級(jí)別注解,方法默認(rèn)返回視圖,如需返回?cái)?shù)據(jù)需添加  @ResponseBody 。
-  @ResponseBody :方法級(jí)別注解,使單個(gè)方法直接返回?cái)?shù)據(jù),不返回視圖。

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping("/html")
    public String getSession() {
        return "/AAA.html"; //注意前面要加 /
    }
}

注意我們要把要返回的靜態(tài)頁(yè)面放在靜態(tài)資源下面的文件中

3.2 返回HTML代碼片段

后端返回?cái)?shù)據(jù)(不是視圖)時(shí),如果數(shù)據(jù)中有HTML代碼,也會(huì)被瀏覽器解析。

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping("/html")
    @ResponseBody
    public String getSession() {
        return "<h1> HTML</h1>";
    }
}

3.3 返回JSON

當(dāng)我們返回的數(shù)據(jù)是對(duì)象/map/list等,Spring會(huì)自動(dòng)將響應(yīng)頭中的content-type設(shè)置為application/json,并返回json數(shù)據(jù)

返回對(duì)象:

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping("/returnjson")
    @ResponseBody
    public Person returnjson() {
     Person person=new Person();
     person.setNum(21);
     person.setName("zhangsan");
        return person;
    }
}

返回map:

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping("/returnjson")
    @ResponseBody
    public Map<String,String> returnjson() {
    Map<String,String> map=new HashMap<>();
    map.put("old","29");
    map.put("name","zhangsan");
     return map;
    }
}

3.4 設(shè)置狀態(tài)碼

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping("/setstatus")
    @ResponseBody
    public String setstatus(HttpServletResponse response) {
        response.setStatus(400);
        return "設(shè)置狀態(tài)碼成功";
    }
}

3.5 設(shè)置 Header

Http響應(yīng)報(bào)頭也會(huì)向客?端傳遞?些附加信息,?如服務(wù)程序的名稱,請(qǐng)求的資源已移動(dòng)到新地址等,如: Content-Type,Local等. 這些信息通過(guò) @RequestMapping 注解的屬性來(lái)實(shí)現(xiàn) 先來(lái)看 @RequestMapping 的源碼:

1.value:指定映射的URL

2. method:指定請(qǐng)求的method類型,如GET,POST等

3. consumes:指定處理請(qǐng)求(request)的提交內(nèi)容類型(Content-Type),例如application/json, text/html;

4. produces:指定返回的內(nèi)容類型,還可以同時(shí)設(shè)置返回值的字符編碼

5. Params:指定request中必須包含某些參數(shù)值時(shí),才讓該?法處理

6. headers:指定request中必須包含某些指定的header值,才能讓該?法處理請(qǐng)求

 設(shè)置 Content-Type:

設(shè)置Content-Type:通過(guò)@RequestMapping的produces屬性設(shè)置

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping(value = "/setContentType",produces = "application/json")
    @ResponseBody
    public String setstatus(HttpServletResponse response) {
        return "{\"name\":\"zhangsan \"}";
    }
}

如果不手動(dòng)設(shè)置Content-Type,Spring會(huì)根據(jù)方法的返回參數(shù)自動(dòng)設(shè)置,返回類型為Spring---設(shè)置為text/plain(返回類型是對(duì)象/map等---設(shè)置為application/json)

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping(value = "/setContentType")
    @ResponseBody
    public String setstatus(HttpServletResponse response) {
        return "{\"name\":\"zhangsan \"}";
    }
}

設(shè)置其它Header

@Controller
@RequestMapping("/r")
public class Test {
    @RequestMapping(value = "/setHeader")
    @ResponseBody
    public String setHeader(HttpServletResponse response) {
       response.setHeader("MyHeader","header");
       return "設(shè)置header成功";
    }
}

到此這篇關(guān)于SpringMVC注解全攻略:從請(qǐng)求到響應(yīng)的文章就介紹到這了,更多相關(guān)SpringMVC注解從請(qǐng)求到響應(yīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot+Nginx+MySQL容器化實(shí)戰(zhàn)指南

    Spring Boot+Nginx+MySQL容器化實(shí)戰(zhàn)指南

    這篇文章主要介紹了Spring Boot+Nginx+MySQL容器化實(shí)戰(zhàn)指南,本文通過(guò)思路代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2026-03-03
  • Java如何實(shí)現(xiàn)內(nèi)存緩存

    Java如何實(shí)現(xiàn)內(nèi)存緩存

    內(nèi)存緩存(Memory?caching)是一種常見(jiàn)的緩存技術(shù),它利用計(jì)算機(jī)的內(nèi)存存儲(chǔ)臨時(shí)數(shù)據(jù),以提高數(shù)據(jù)的讀取和訪問(wèn)速度,本文就來(lái)和大家聊聊Java如何實(shí)現(xiàn)內(nèi)存緩存吧
    2023-08-08
  • 23種設(shè)計(jì)模式(2) java工廠模式

    23種設(shè)計(jì)模式(2) java工廠模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計(jì)模式之java工廠模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 淺談Apache Maven ToolChains的使用

    淺談Apache Maven ToolChains的使用

    Maven是java中非常有用和常用的構(gòu)建工具,基本上現(xiàn)在大型的java項(xiàng)目都是Maven和gradle的天下了。本文將介紹Apache Maven ToolChains的使用。
    2021-06-06
  • 詳解SpringBoot中Controller接收對(duì)象列表實(shí)現(xiàn)

    詳解SpringBoot中Controller接收對(duì)象列表實(shí)現(xiàn)

    這篇文章主要介紹了詳解SpringBoot中Controller接收對(duì)象列表實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域問(wèn)題

    Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域問(wèn)題

    這篇文章主要介紹了Spring Boot 通過(guò)CORS實(shí)現(xiàn)跨域,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • springboot項(xiàng)目啟動(dòng)自動(dòng)跳轉(zhuǎn)到瀏覽器的操作代碼

    springboot項(xiàng)目啟動(dòng)自動(dòng)跳轉(zhuǎn)到瀏覽器的操作代碼

    這篇文章主要介紹了springboot項(xiàng)目啟動(dòng)自動(dòng)跳轉(zhuǎn)到瀏覽器的操作代碼,本文圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Java插入、替換和刪除PDF圖像的操作完整指南

    Java插入、替換和刪除PDF圖像的操作完整指南

    在當(dāng)今數(shù)字化的世界中,PDF 已經(jīng)成為文檔交換的標(biāo)準(zhǔn)格式,本教程將深入探討如何使用 Spire.PDF for Java 庫(kù),輕松實(shí)現(xiàn) PDF 圖像的添加、替換與刪除操作,希望對(duì)大家有一定的幫助
    2025-10-10
  • 詳解spring boot集成RabbitMQ

    詳解spring boot集成RabbitMQ

    RabbitMQ作為AMQP的代表性產(chǎn)品,在項(xiàng)目中大量使用。結(jié)合現(xiàn)在主流的spring boot,極大簡(jiǎn)化了開(kāi)發(fā)過(guò)程中所涉及到的消息通信問(wèn)題。
    2017-03-03
  • JavaWeb核心技術(shù)中Session與Cookie淺析

    JavaWeb核心技術(shù)中Session與Cookie淺析

    session的工作原理和cookie非常類似,在cookie中存放一個(gè)sessionID,真實(shí)的數(shù)據(jù)存放在服務(wù)器端,客戶端每次發(fā)送請(qǐng)求的時(shí)候帶上sessionID,服務(wù)端根據(jù)sessionID進(jìn)行數(shù)據(jù)的響應(yīng)
    2023-02-02

最新評(píng)論

南丹县| 宜丰县| 桐乡市| 昂仁县| 怀来县| 固镇县| 禹州市| 青浦区| 阜南县| 永顺县| 卢氏县| 东宁县| 陆河县| 安乡县| 大悟县| 棋牌| 平安县| 眉山市| 五家渠市| 施秉县| 汤阴县| 云浮市| 临潭县| 饶河县| 胶南市| 获嘉县| 缙云县| 平塘县| 中西区| 吴堡县| 盐池县| 梅河口市| 邯郸市| 和政县| 潜江市| 新郑市| 平顶山市| 新安县| 庆元县| 峨边| 和田县|