1. 程式人生 > 其它 >【SpringMVC】獲取請求引數的方式

【SpringMVC】獲取請求引數的方式

SpringMVC獲取請求引數的方式

目錄

方式1:ServletAPI

 //servletAPI方式獲取
    @PostMapping(value = "/api/sign/register", produces = "application/json")
    @ResponseBody
    public String sendPostMessage(HttpServletRequest request){
        String usercount = request.getParameter("userCount");
        String userpwd = request.getParameter("userPwd");
        int result = UserMethods.userAdd(usercount, usercount, userpwd);
        return "{\"result\":\""+result+"\"}";
    }

方法2:通過控制器方法的形參獲取請求引數

    @PostMapping(value = "/api/sign/register", produces = "application/json")
    @ResponseBody
    public String sendPostMessage(String userCount,String userPwd){
        int result = UserMethods.userAdd(userCount, userCount, userPwd);
        System.out.println(result);
        return "{\"result\":\""+result+"\"}";
    }

方法3:@RequestParam

    @PostMapping(value = "/api/sign/register", produces = "application/json")
    @ResponseBody
    public String sendPostMessage(@RequestParam("userCount") String usercount,@RequestParam("userPwd") String userpwd){
        int result = UserMethods.userAdd(usercount, usercount, userpwd);
        System.out.println(result);
        return "{\"result\":\""+result+"\"}";
    }

可選引數寫法如下

@RequestParam(value="userName",required = false,defaultValue = "未命名使用者")

方法4:@RequestHeader

作用:將請求頭資訊和控制器方法形參建立對映關係

屬性:value、required、defaultValue

請求頭:

Example:

()

    @PostMapping(value = "/api/sign/register", produces = "application/json")
    @ResponseBody
    public String sendPostMessage(@RequestParam("userCount") String usercount,@RequestParam("userPwd") String userpwd,@RequestHeader(value="Host",required=false,defaultValue="") String host){
        int result = UserMethods.userAdd(usercount, usercount, userpwd);
        System.out.println(result);
        return "{\"result\":\""+result+"\"}";
    }

方法5:@CookieValue

作用:將Cookie資料和控制器方法形參建立對映關係

屬性:value、required、defaultValue

用法同@RequestParam@RequestHeader

方法5:通過POJO獲取請求引數

在控制器方法的形參位置設定一個實體類型別的形參

若瀏覽器傳輸的請求引數的引數名 與 實體類中的屬性名 一致

那麼該引數就會為此屬性賦值

解決獲取請求引數的亂碼問題

可以使用SpringMVC提供的編碼過濾器CharacterEncodingFilter(需要在web.xml中註冊)

    <filter>
        <filter-name>characterEncodingFilter</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>forceResponseEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

記錄

1.註冊頁面路徑設定

    @RequestMapping("/reg")
    public String register(){
        return "/sign/register";
    }

2.前端使用ajax方式POST提交到Java後端

 function loginSubmit() {
      var usercount = $("#email").val();
      var password = $("#pwd").val();
      var password2 = $("#pwdt").val();
      var code = $("#code").val();
      if (usercount == null | password == null) return false;
      if (usercount == 0 | password == 0) return false;
      if (password2 != password) {
        tips("兩次輸入的密碼不一致");
        return false;
      }
      cookie_code = $.cookie('code');
      cookie_email = $.cookie('email');
      if (cookie_code == undefined) {
        tips("驗證碼無效,請檢查驗證碼或重新獲取");
        return false;
      }
      if (code != cookie_code) {
        tips("驗證碼錯誤,請檢查驗證碼或重新獲取");
        return false;
      }
      if (usercount != cookie_email) {
        tips("當前填寫郵箱與所驗證的郵箱不一致!");
        return false;
      }
      $.ajax({
        type: 'POST',
        url: '/api/sign/register',
        data: {
            'userCount':usercount,
            'userPwd':password,
        },
        success: function(text) {
          if(text["result"] == "1"){
           $(document.body).text('註冊成功,使用者' +usercount);
          }
        },
        error: function (jqXHR) {
          $(document.body).text('Error: ' + jqXHR.status);
        }
      });

      return false;
    }

3.後端接收引數並處理

下面的只是其中一種接收方式

    @PostMapping(value = "/api/sign/register", produces = "application/json")
    @ResponseBody
    public String sendPostMessage(@RequestParam("userCount") String usercount,@RequestParam("userPwd") String userpwd){
        int result = UserMethods.userAdd(usercount, usercount, userpwd);
        System.out.println(result);
        return "{\"result\":\""+result+"\"}";
    }