日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

@requestmapping獲取請求參數

作者:仰望星空的快樂 更新時間: 2022-05-10 編程語言

從前端頁面,向控制器方法中傳遞參數

1.原生servlet (太麻煩,一般不用)

 @RequestMapping(value = {"/param_yuansheng"})
    public String get_param(HttpServletRequest request)
    { //servlet原生的方式   注意不能使用占位符方式傳遞參數,因為在傳值時,
        // 占位符參數沒辦法獲得參數名,只能是獲得之后再賦名字
        //原生方式一般都不用,太麻煩
       String uname= request.getParameter("username");
       System.out.println(uname);
        return "test_param";
    }

2.直接獲取參數

參數名和name要一一對應

點我跳轉到形參獲取參數值測試方法
//    通過請求的形參來獲得請求參數  形參的參數名 和控件的name名一定要對應
    @RequestMapping(value = {"/param_xingcan"})
    public String get_param(String username,String password)
    {
       System.out.println(username);
       System.out.println(password);
        return "test_param";
    }


3.如果有多個name相同的控件,比如說多選框

發送的get請求會是這樣的

http://localhost:8080/Springmvcdemo2/param_duogetongmingcanshu?uname=123&upwd=123&hobbis=b&hobbis=c&hobbis=a

發送的post請求會是這樣

html頁面:

多個同名參數
用戶名 數組獲取 字符串獲取

1.可以用string接收,會得到選中的控件的value b,a,c的字符串 中間用,號隔開
2.可以用數組接收,會得到選中控件的value的數組[b, c,a]

 @RequestMapping(value = {"param_duogetongmingcanshu"})
    public String get_duogetongmingcanshu1(
                    String uname, String hobbis, String[] hobbis2)
    {System.out.println("------傳遞多個參數-----");
        System.out.println("uname:"+uname);
        System.out.println("字符串獲取hobbis:"+hobbis);
        System.out.println("數組獲取hobbis2:"+Arrays.toString( hobbis2));
        return "test_param";
    }

?結果:

?4.按類傳輸

如果要傳輸的數據可以寫成一個類時,可以新建一個user類,類中聲明這三個參數和無參構造

注意類中的屬性名和我要傳的參數的名字一定要一一對應

 @RequestMapping(value = {"/param_class"})
    public String get_params(User user, HttpServletResponse response)
    {
        PrintWriter out = null;
        try {
            out = response.getWriter();
        } catch (IOException e) {
            e.printStackTrace();
        }
        out.println(user);
        System.out.println(user);
        return "target";
    }

直接傳輸類
用戶名 愛好 用戶id

?當我有個user類,有 id和name和 pwd三個屬性,但我在獲取用戶輸入時,不需要獲取id(id在數據庫表中自增),那我就需要給user類寫一個name和pwd的兩參數的構造函數,就可以傳遞user類了 如下

  @RequestMapping("/register_check")
    public String register_check(user user1)
    {
        System.out.println(user1);
        return null;
    }
用戶名: 密碼:

5. 用/傳遞參數 ,經常用于result風格的請求

SpringMVC支持路徑中的占位符(重點)

原始方式:/deleteUser?id=1

restful方式:/deleteUser/1

SpringMVC路徑中的占位符常用于Restful風格中,當請求路徑中將某些數據通過路徑的方式傳輸到服務器中,就可以在相應的@RequestMapping注解的value屬性中通過占位符{xxx}表示傳輸的數據,在通過@PathVariable注解,將占位符所表示的數據賦值給控制器方法的形參

@RequestMapping("/testRest/{id}/{username}")
public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){
    System.out.println("id:"+id+",username:"+username);
    return "success";
}
//最終輸出的內容為-->id:1,username:admin
測試路徑中的占位符-->/testRest

7.解決獲取請求參數的亂碼問題

解決獲取請求參數的亂碼問題,可以使用SpringMVC提供的編碼過濾器CharacterEncodingFilter,但是必須在web.xml中進行注冊??

攔截所有請求,并交給編碼過濾器處理,將請求設置為param-value中指定的編碼格式



    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
        encoding
        UTF-8
    
    
        forceResponseEncoding
        true
    


    CharacterEncodingFilter
    /*

SpringMVC中處理編碼的過濾器一定要配置到其他過濾器之前,否則無效

原文鏈接:https://blog.csdn.net/sharesb/article/details/124336950

欄目分類
最近更新