国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring MVC中的常用注解及其用法

這篇具有很好參考價值的文章主要介紹了Spring MVC中的常用注解及其用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、建立連接

@RequestMappering可以作用在類上(類注解)、也可以作用在方法上(方法注解)。
@RequestMappering后面的括號中:雙引號的值會賦值給value這個屬性。只有一個屬性且屬性名為value時這個屬性名可以省略不寫。
@RequestMappering默認支持get/post請求,可以使用method屬性來限制請求方式。

@RequestMapping(value = "/hello/t1", method = RequestMethod.GET)    
public String hello(){       
    return "hello";    
}

二、接收請求

2.1請求中帶有一個參數(shù)

@RequestMapping("/r1")
public String r1(String name){
    return "接收到參數(shù) name:"+name;
}
@RequestMapping("/r2")
public String r2(Integer age){
    return "接收到參數(shù) age:"+age;
}

2.2請求中帶有多個參數(shù)

@RequestMapping("/r3")    
public String r3(String name,Integer age){//注意參數(shù)類型要寫Integer不要寫int,因為請求中沒有傳參數(shù)時則傳的參數(shù)是null,int類型的變量不能接收null
    return "name:"+name+",age:"+age;    
}

2.3用對象接收請求中的參數(shù)

public class UserInfo {//假設代碼中定義了UserInfo類
    private int id;    
    private String name;    
    private Integer age;       
    public UserInfo() {    
    }    
    public UserInfo(int id, String name, Integer age) {        
        this.id = id;       
        this.name = name;       
        this.age = age;  
    }   
    public int getId() {        
        return id;    
    }   
   ...
}
@RequestMapping("/r4")    
public String r4(UserInfo user){        
    return user.toString();    
}

2.4對請求中的參數(shù)進行重命名

從請求中獲取name參數(shù)的值并賦值給代碼中的username參數(shù)。@RequestParam注解里加required = false則表示這個注解修飾的參數(shù)可以不傳(否則這個注解修飾的參數(shù)一定要傳),不傳時這個參數(shù)的值為null。required默認為true。

@RequestMapping("/r5")    
public String r5(@RequestParam(value = "name",required = false) String username, @RequestParam("age") Integer userage){        
    return "username:"+username+",age:"+userage;    
}

2.5請求參數(shù)中帶有數(shù)組

@RequestMapping("/r6")    
public String r6(String[] arr){        
    return Arrays.toString(arr)+",length:"+arr.length;    
}

2.6請求參數(shù)中帶有集合

默認情況下,請求中參數(shù)名相同的多個值,是封裝到數(shù)組中的。如果要封裝到集合,要使?@RequestParam綁定參數(shù)關系。
以下為綁定參數(shù)關系的同時對參數(shù)中的集合名進行重命名:

  @RequestMapping("/r7")
    public String r7(@RequestParam(value = "list", required = false) List<String> list1){
        if (list1!=null){
            return list1.toString()+",size:"+list1.size();
        }
        return "list為空";
    }

2.7json字符串和Java對象互轉

以下這種轉換方式:拿到json字符串把這個json字符串轉換為java對象的時候,會調用java對象無參的構造函數(shù)構造成一個空的對象,再對字符串進行解析對空對象的屬性進行賦值。所以java對象所屬的類中如果我們自己寫了有參的構造方法則要把無參的構造方法加上。

public static void main(String[] args) throws JsonProcessingException {        ObjectMapper objectMapper = new ObjectMapper();        
    UserInfo userInfo = new UserInfo();          
    userInfo.setName("lingliang");          
    userInfo.setAge(16);        
    userInfo.setId(1);       
    //對象轉json        
    String s = objectMapper.writeValueAsString(userInfo);          
    System.out.println(s);          
    //json字符串轉成Java對象      
    UserInfo userInfo1 = objectMapper.readValue(s, UserInfo.class);  
    System.out.println(userInfo1);    
}

2.8前端傳遞json數(shù)據給后端、json數(shù)據在請求正文中、后端接收json數(shù)據

@RequestMapping("/r8")    
public String r8(@RequestBody UserInfo userInfo){        
    return userInfo.toString();    
}

2.9獲取url中的參數(shù)

@RequestMapping("/r9/{articleId}")    
public String r9(@PathVariable Integer articleId){        
    return "articleId:"+articleId;   
}

2.10獲取url中的參數(shù)并對參數(shù)進行重命名

將url中的參數(shù)name重命名為userName:

@RequestMapping("/r10/{name}/{age}")    
public String r10(@PathVariable("name") String userName, @PathVariable Integer age){        
    return "name:"+userName+",age:"+age;    
}

2.11上傳文件

即獲取請求中的文件。@RequestPart這個注解不寫也行,這個注解可以對file進行重命名。

@RequestMapping("/r11")    
public String r11(@RequestPart MultipartFile file) throws IOException {        
    String fileName = file.getOriginalFilename();        
    file.transferTo(new File("D:/temp/"+fileName));          
    return "獲取上傳文件: "+file.getOriginalFilename();    
}

三、獲取cookie和session

3.1傳統(tǒng)方式獲取cookie(可以獲取到所有的cookie)

@RequestMapping("/getCookie1")    
public String getCookie(HttpServletRequest request){        
    Cookie[] cookies = request.getCookies();
    //Arrays.stream(cookies).forEach(x -> System.out.println(x.getName()+":"+x.getValue()));        
    if (cookies!=null){            
        for (Cookie c: cookies){                
            System.out.println(c.getName()+":"+c.getValue());         
        }           
         return "獲取Cookie成功";      
    }          
    return "Cookie 為空";    
}

3.2簡潔方式獲取cookie(可以獲取到指定的cookie)

@RequestMapping("/getCookie2")    
public String getCookie2(@CookieValue("byte") String byte){   
    return "byte:" + byte;    
}

3.3傳統(tǒng)方式設置session和獲取session

@RequestMapping("/setSession")
public String setSession(HttpServletRequest request){
    HttpSession session = request.getSession();
    session.setAttribute("userName","zhangsan");
    return "設置Session成功";
}

@RequestMapping("/getSession1")
public String getSession(HttpServletRequest request){
    HttpSession session = request.getSession();
    String userName = (String)session.getAttribute("userName");
    return "登錄用戶:"+ userName;
}

3.4簡潔方式獲取session

簡潔方式1獲取session:

@RequestMapping("/getSession2")
public String getSession(HttpSession session){//如果后端還沒有session則HttpSession session會幫我們創(chuàng)建一個session,只是這個session里面沒有內容。這預防了空指針異常的出現(xiàn)。
    String userName = (String)session.getAttribute("userName");
    return "登錄用戶:" + userName;
}

簡潔方式2獲取session:

@RequestMapping("/getSession3")
public String getSession(@SessionAttribute(value = "userName", required = false) String userName){
    return "登錄用戶:" + userName;
}

四、獲取header

4.1傳統(tǒng)方式獲取header,可以獲取到全部header

@RequestMapping("/getHeader")    
public String getHeader(HttpServletRequest request){        
    String userAgent = request.getHeader("User-Agent");        
    return "userAgent:"+userAgent;    
}

4.2簡潔方式獲取header

這種方式想獲取到全部header則參數(shù)聲明要寫得非常長。

@RequestMapping("/getHeader2")
public String getHeader2(@RequestHeader("User-Agent") String userAgent){
    return "userAgent:"+userAgent;
}

五、返回響應

(1)返回靜態(tài)頁面。
(2)返回數(shù)據。
(3)返回HTML片段。
(4)返回json。
(5)設置狀態(tài)碼、編碼方式、header。

元注解(即可以注解到其它注解的注解):
1)@Target({ElementType}.TYPE):表示注解的使用范圍,TYPE表示注解的使用范圍是類。
2)@Retention(RetentionPolicy.RUNTIME):表示注解的生命周期。
3)@Documented。

@RestController=@Controller+@ResponseBody。
@Controller是在告訴Spring,Spring要幫我們管理哪些程序,用@Controller修飾則默認返回的是頁面。
@ResponseBody表示返回數(shù)據,其既可以修飾類又可以修飾方法,修飾類表示該類內的所有方法返回的都是數(shù)據,修飾方法表示該方法返回的是數(shù)據。文章來源地址http://www.zghlxwxcb.cn/news/detail-805880.html

@Controller
//@RestController
@RequestMapping("/return")
public class ReturnController {
    @RequestMapping("/r1")
    public String r1(){
        return "/index.html";//返回靜態(tài)頁面
    }

    @ResponseBody
    @RequestMapping("/r2")
    public String r2(){
        return "hello, spring";//返回數(shù)據
    }

    @ResponseBody
    @RequestMapping("/r3")
    public String r3(){
        return "<h1>我是返回的html片段</h1>";//返回html片段
    }

    @ResponseBody
    @RequestMapping("/r4")
    public UserInfo r4(){
        UserInfo userInfo = new UserInfo();
        userInfo.setId(1);
        userInfo.setName("lingliang");
        userInfo.setAge(16);
        return userInfo;//返回json。當方法返回值類型為對象的時候,Spring會把響應的Content-Type自動設置為application/json。當返回的是數(shù)據,方法返回值類型為String的時候,默認情況下,Spring會把響應的Content-Type自動設置為text/html。
    }

    @ResponseBody
    @RequestMapping("/r5")
    public Map<String,String> r5(){
        HashMap map = new HashMap();
        map.put("k1","v1");
        map.put("k2","v2");
        return map;//Spring會把響應的Content-Type自動設置為application/json。
    }

    @RequestMapping("/r6")
    public String r6(){
        return "/a.js";//Spring會把響應的Content-Type自動設置為application/javascript。
    }

    @RequestMapping("/r7")
    public String r7(){
        return "/b.css";//Spring會把響應的Content-Type自動設置為text/css。
    }

    @ResponseBody
    @RequestMapping("/r8")
    public String r8(HttpServletResponse response){
        response.setStatus(401);
        return "設置狀態(tài)碼成功";//設置狀態(tài)碼。狀態(tài)碼不影響界面的展示。
    }

    @ResponseBody
    //@RequestMapping("/r9")
    @RequestMapping(value = "/r9", produces = "application/json; charset=utf8")//設置響應的Content-Type,因為當返回的是數(shù)據,方法返回值類型為String的時候,默認情況下,Spring會把響應的Content-Type自動設置為text/html。
    public String r9(){
        return "{\"OK\":1}";//返回的是一個json數(shù)據。
    }

    @ResponseBody
    @RequestMapping(value = "/r10")
    public String r10(HttpServletResponse response){
      response.setHeader("myHeader","myHeaderValue");//設置自定義的header。
        return "設置header成功";
    }
}

到了這里,關于Spring MVC中的常用注解及其用法的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring MVC:常用參數(shù)(注解)的使用和參數(shù)綁定的驗證

    Spring MVC:常用參數(shù)(注解)的使用和參數(shù)綁定的驗證

    Java EE企業(yè)級應用開發(fā)教程(Spring+Spring MVC+MyBatis)(第2版) Spring MVC常用參數(shù) Spring MVC簡單應用 Spring MVC參數(shù)綁定 本實驗采用的是本地安裝的tomcat8.5.0版本 (1)創(chuàng)建maven 管理的java web工程 (2)添加本地tomcat war包 (3)實驗過程 輸出Hello Word 訪問端口:http://localhost:8080/chapter1

    2024年02月04日
    瀏覽(21)
  • 在 Spring MVC 中,用于接收前端傳遞的參數(shù)的注解常用的有以下幾種

    目錄 1、對于json請求體參數(shù), 2、對于路徑傳參 3、對于query傳參 4、對于form-data參數(shù), 總結: ? 1、對于json請求體參數(shù), 請求頭的Content-Type應為application/json。在前端,可以使用 data格式 傳參。在后端,可以使用 @RequestBody 注解來接收參數(shù)。 ? 2、對于路徑傳參 (例如:test/

    2024年01月23日
    瀏覽(19)
  • Spring-mvc的參數(shù)傳遞與常用注解的解答及頁面的跳轉方式---綜合案例

    Spring-mvc的參數(shù)傳遞與常用注解的解答及頁面的跳轉方式---綜合案例

    目錄 一.slf4j--日志 二.常用注解 ??? ? ?2.1.@RequestMapping ??????2.2.@RequestParam ??????2.3.@RequestBody ??????2.4.@PathVariable 三.參數(shù)的傳遞 3.1 基礎類型 3.2 復雜類型 3.3?@RequestParam 3.4? @PathVariable 3.5 @RequestBody 3.6 增刪改查? 四.返回值? ????????? 4.1 void 返回值? ?4.2 String

    2024年02月09日
    瀏覽(28)
  • 【Spring MVC】Spring MVC基于注解的程序開發(fā)

    【Spring MVC】Spring MVC基于注解的程序開發(fā)

    目錄 一、什么是Spring MVC ?二、Spring MVC項目的創(chuàng)建和使用 1、實現(xiàn)客戶端和服務器端之間的連接 1.1、RequsestMapping注解 1.2、@RequestMapper的簡單使用? 1.3、使用@GetMapping和@POSTMapping注解來實現(xiàn)HTTP連接 三、獲取參數(shù) 1、實現(xiàn)獲取單個參數(shù) 2、實現(xiàn)獲取對象 3、后端參數(shù)重命名(@Requ

    2024年02月13日
    瀏覽(21)
  • 【Spring MVC】Spring MVC的功能使用和相關注解介紹

    【Spring MVC】Spring MVC的功能使用和相關注解介紹

    Spring MVC主要有三個功能: 連接 獲取參數(shù) 輸出數(shù)據 對于 Spring MVC 來說,掌握了以上 3 個功能就相當于掌握了Spring MVC。 連接的功能:將?戶(瀏覽器)和 Java 程序連接起來,也就是訪問?個地址能夠調?到我們的Spring 程序。 先創(chuàng)建一個SpringMVC項目,過程和SpringBoot項目創(chuàng)建相

    2024年02月16日
    瀏覽(22)
  • 【Spring】— Spring MVC的注解

    【Spring】— Spring MVC的注解

    1.DispatcherServlet DispatcherServlet的全名: org.Springframework.web.servlet.DispatcherServlet 它在程序中充當著前端控制器的角色。 【示例】在使用DispatcherServlet時,只需將其配置在項目的web.xml文件中,其配置代碼如下。 在上述代碼中, load-on-startup 元素和 init-param 元素都是可選的。如果 lo

    2024年02月10日
    瀏覽(20)
  • 【Spring MVC】快速學習使用Spring MVC的注解及三層架構

    【Spring MVC】快速學習使用Spring MVC的注解及三層架構

    ?? 博客主頁:從零開始的-CodeNinja之路 ? 收錄文章:【Spring MVC】快速學習使用Spring MVC的注解及三層架構 ??歡迎大家點贊??評論??收藏?文章 SpringWebMVC是基于ServletAPI構建的原始Web框架,從?開始就包含在Spring框架中。它的正式名稱“SpringWebMVC”來?其源模塊的名稱(Spri

    2024年04月17日
    瀏覽(93)
  • Spring MVC 三 :基于注解配置

    Servlet3.0 Servlet3.0是基于注解配置的理論基礎。 Servlet3.0引入了基于注解配置Servlet的規(guī)范,提出了可拔插的ServletContext初始化方式,引入了一個叫ServletContainerInitializer的接口。 An instance of the ServletContainerInitializer is looked up via the jar services API by the container at container / application sta

    2024年02月11日
    瀏覽(24)
  • Spring MVC相關注解運用 —— 下篇

    Spring MVC相關注解運用 —— 下篇

    目錄 一、@ResponseBody、@RestController 1.1. JSP頁面 1.2 放行靜態(tài)資源 1.3 編寫實體類 1.4 控制器方法 1.5 添加依賴 1.6 測試結果 1.7?@RestController? 二、靜態(tài)資源映射 2.1 配置靜態(tài)資源篩查器 2.2 配置靜態(tài)資源資源映射器 2.3 配置默認Servlet處理靜態(tài)資源 三、@RequestBody 3.1?AJAX請求發(fā)送JSO

    2024年02月12日
    瀏覽(20)
  • Spring MVC 的RequestMapping注解

    Spring MVC 的RequestMapping注解

    作用:用于建立請求URL和處理請求方法之間的對應關系。 出現(xiàn)位置: 類上: 請求 URL的第一級訪問目錄。此處不寫的話,就相當于應用的根目錄。寫的話需要以/開頭。它出現(xiàn)的目的是為了使我們的 URL 可以按照模塊化管理,例如: 賬戶模塊: /account /add /account /update /account

    2024年02月02日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包