【SpringMVC】獲取請求引數的方式
阿新 • • 發佈:2022-05-21
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+"\"}";
}