SpringMVC接收引數的4種方式
阿新 • • 發佈:2018-12-16
功能類:
/** * 接收引數: * 1.接收普通引數 * 2.使用物件接收引數 * 3.HttpServletRequset接收引數(不推薦!) * 4.URL地址提取資料 --> RESTful風格 * 注意事項: * ①如果傳參型別不匹配,則會報400錯誤 * ②接收日期格式: * 後臺->前臺:日期getter方法上添加註解--> @JsonFormat(pattern="yyyy-MM-dd hh:mm:ssS",timezone="GMT+8") * 前臺->後臺:日期setter方法上添加註解--> @DateTimeFormat(pattern="yyyy-MM-dd") * ③中文編碼問題:tomcat8已經解決get請求亂碼 * post請求:SpringMVC框架本身沒有處理請求編碼,需要配置一個spring內建請求編碼過濾器 * @author 鄭清 */ @Controller public class LoginController { /* * 1.接收普通引數 */ @RequestMapping("/login") @ResponseBody public void login(String username,String password){ //形參名稱與傳遞引數一致 System.out.println(username+"-->"+password); } @RequestMapping("/login1") @ResponseBody public void login1(@RequestParam("username")String name,String password){ //形參名稱與傳遞引數不一致 System.out.println(name+"-->"+password); } /* * 2.使用物件接收引數 * 注意:在物件部分前面加了一個日期,而日期格式的資料接收需要在日期setter方法上,添加註解 --> @DateTimeFormat(pattern="yyyy-MM-dd") */ @RequestMapping("/login2") @ResponseBody public void login(User u){ System.out.println(u); } /* * 3.HttpServletRequset接收引數(不推薦使用-->why?-->又回到了最初的程式碼,不能體現SpringMVC的作用了...) */ @RequestMapping("/login3") @ResponseBody public void login(HttpServletRequest req){ System.out.println(req.getParameter("username")+"-->"+req.getParameter("password")+"-->"+req.getParameter("date")); } /* * 4.URL地址提取資料 --> RESTful風格 */ @RequestMapping("/login4/{username}/{id}") @ResponseBody public void login(@PathVariable("username")String username,@PathVariable("id")Integer id){ System.out.println(username+"-->"+id); } }
User類:
/** * 日期格式處理: * 從後臺向前臺-->在日期get屬性欄位上新增一個格式化註解 --> @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") * 從前臺向後臺(異常的狀態碼是400,類似於struts2轉換異常) --> 在日期setter方法上,添加註解 --> @DateTimeFormat(pattern="yyyy-MM-dd") * @author 鄭清 */ public class User { private String username; private String password; private Date date; @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") //日期格式化註解 public Date getDate() { return date; } @DateTimeFormat(pattern="yyyy-MM-dd") public void setDate(Date date) { this.date = date; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username + ", password=" + password + ", date=" + date + "]"; } }
jsp頁面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>1.接收普通引數</h1> <form action="/zq/login" method="post" > 使用者名稱:<input type="text" name="username" ><br/> 密 碼:<input type="text" name="password" ><br/> <input type="submit" > </form> <h1>2.使用物件接收引數</h1> <form action="/zq/login2" > 使用者名稱:<input type="text" name="username" ><br/> 密 碼:<input type="text" name="password" ><br/> 日 期:<input type="text" name="date" ><br/> <input type="submit" > </form> <h1>3.HttpServletRequset接收引數</h1> <form action="/zq/login3" > 使用者名稱:<input type="text" name="username" ><br/> 密 碼:<input type="text" name="password" ><br/> 日 期:<input type="text" name="date" ><br/> <input type="submit" > </form> <h1>4.URL地址提取資料</h1> <a href="/zq/login4/鄭清/18">RESTful風格</a> </body> </html>
web.xml配置post請求編碼過濾器:
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
最後要注意匯入所需要的jar包哦!!!