前言
本文主要是講解在Controller中的開發(fā)盐须,主要的知識點有如下:
- 編碼過濾器
- 使用注解開發(fā)
- 注解
@RequestMapping
詳解 - 業(yè)務方法接收參數(shù)
- 字符串轉(zhuǎn)日期
- 重定向和轉(zhuǎn)發(fā)
- 返回JSON
SpringMVC過濾編碼器
在SpringMVC的控制器中,如果沒有對編碼進行任何的操作阀捅,那么獲取到的中文數(shù)據(jù)是亂碼裸准!
即使我們在handle()方法中去扣,使用request對象設置編碼也不行!原因也非常簡單,我們SpringMVC接收參數(shù)是通過控制器中的無參構(gòu)造方法织狐,再經(jīng)過handle()方法的object對象來得到具體的參數(shù)類型的治泥。
Struts2是使用攔截器來自動幫我們完成中文亂碼的問題的筹煮。那么SpringMVC作為一個更加強大的框架,肯定也有對應的方法來幫我們完成中文亂碼問題居夹!
值得注意的是:該過濾編碼器只能解決POST的亂碼問題败潦!
我們只需要在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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注解開發(fā)SpringMVC
我們在快速入門的例子中使用的是XML配置的方式來使用SpringMVC的吮播,SpringMVC也能夠支持注解变屁。【個人非常喜歡注解的方式】
我們在使用Action的時候意狠,要么繼承著AbstractCommandController類粟关,要么顯示使用注解Controller接口。當我們使用了注解以后就不用顯示地繼承或?qū)崿F(xiàn)任何類了!
開發(fā)流程
使用@Controller
這個注解闷板,就表明這是一個SpringMVC的控制器澎灸!
@Controller
public class HelloAction {
}
當然了,現(xiàn)在Spring是不知道有這么一個注解的遮晚,因此我們需要在配置文件中配置掃描注解
值得注意的是:在配置掃描路徑的時候性昭,后面不要加.*
不然掃描不了,我不知道學Struts2還是其他的地方時候县遣,習慣加了.*糜颠,于是就搞了很久!
<!--掃描注解萧求,后面不要加.*-->
<context:component-scan base-package="zhongfucheng"/>
在控制器中寫業(yè)務方法
@Controller
public class HelloAction {
/**
*
* @RequestMapping 表示只要是/hello.action的請求其兴,就交由該方法處理。當然了.action可以去掉
* @param model 它和ModelAndView類似夸政,它這個Model就是把數(shù)據(jù)封裝到request對象中元旬,我們就可以獲取出來
* @return 返回跳轉(zhuǎn)的頁面【真實路徑,就不用配置視圖解析器了】
* @throws Exception
*/
@RequestMapping(value="/hello.action")
public String hello(Model model) throws Exception{
System.out.println("HelloAction::hello()");
model.addAttribute("message","你好");
return "/index.jsp";
}
}
跳轉(zhuǎn)到index頁面守问,首頁得到對應的值匀归。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
這是我的首頁 <br>
${message}
</body>
</html>
當然了,基于注解和基于XML來開發(fā)SpringMVC耗帕,都是通過映射器穆端、適配器和視圖解析器的。 只是映射器兴垦、適配器略有不同徙赢。但是都是可以省略的!
<!-- 基于注解的映射器(可選) -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<!-- 基于注解的適配器(可選) -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<!-- 視圖解析器(可選) -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
更新:上邊的適配器和映射器只是Spring3.1版本之前使用的探越、3.1版本之后現(xiàn)在一般用以下的兩個
映射器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
適配器:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
當然了狡赐,這上面兩個配置也可以使用<mvc:annotation-driven>
>替代注解處理器和適配器的配置。
RequestMapping
**@RequestMapping能夠控制請求路徑和請求方式钦幔!**
一個控制器寫多個業(yè)務方法
到目前為止枕屉,我們都是一個控制器寫一個業(yè)務方法,這肯定是不合理的鲤氢。我們在Struts2中一個Action就對應多個業(yè)務方法了搀擂。那么我們在SpringMVC中又怎么寫呢?卷玉?哨颂?
其實我們可以推理出來,@RequestMapping
就是用于配置哪個請求對應哪個業(yè)務方法的相种!
public @interface RequestMapping {
String[] value() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
}
當我們請求hello.action的時候威恼,處理的業(yè)務方法是hello().....當我們請求bye.action的時候,處理的業(yè)務方法是bye()
@Controller
public class HelloAction {
/**
*
* @RequestMapping 表示只要是/hello.action的請求,就交由該方法處理箫措。當然了.action可以去掉
* @param model 它和ModelAndView類似腹备,它這個Model就是把數(shù)據(jù)封裝到request對象中,我們就可以獲取出來
* @return 返回跳轉(zhuǎn)的頁面【真實路徑斤蔓,就不用配置視圖解析器了】
* @throws Exception
*/
@RequestMapping(value="/hello.action")
public String hello(Model model) throws Exception{
System.out.println("HelloAction::hello()");
model.addAttribute("message","你好");
return "/index.jsp";
}
@RequestMapping(value = "/bye.action")
public String bye(Model model) throws Exception {
model.addAttribute("message","再見");
return "/index.jsp";
}
}
分模塊開發(fā)
當然了植酥,我們在Struts2常常使用namespace來進行分模塊開發(fā),在SpringMVC中我們也可以這樣干弦牡,并且我們又是使用的是@RequestMapping
這個注解友驮!
只要把@RequestMapping
這個注解寫到類上面去,就代表了分模塊驾锰。
@Controller
//我們知道喊儡,如果是value屬性上的注解,我們可以把value省略掉的
@RequestMapping("/zhongfucheng")
public class HelloAction {
/**
* @param model 它和ModelAndView類似稻据,它這個Model就是把數(shù)據(jù)封裝到request對象中,我們就可以獲取出來
* @return 返回跳轉(zhuǎn)的頁面【真實路徑买喧,就不用配置視圖解析器了】
* @throws Exception
* @RequestMapping 表示只要是/hello.action的請求捻悯,就交由該方法處理。當然了.action可以去掉
*/
@RequestMapping(value = "/hello.action")
public String hello(Model model) throws Exception {
System.out.println("HelloAction::hello()");
model.addAttribute("message", "你好");
return "/index.jsp";
}
@RequestMapping(value = "/bye.action")
public String bye(Model model) throws Exception {
model.addAttribute("message", "再見");
return "/index.jsp";
}
}
那么我們想要HelloAction該控制器處理我們的請求淤毛,訪問的地址要么是:http://localhost:8080/zhongfucheng/hello.action
,或者要么是http://localhost:8080/zhongfucheng/bye.action
限定某個業(yè)務控制方法今缚,只允許GET或POST請求方式訪問
我們?nèi)绻胍薅硞€業(yè)務控制方法,只允許GET或POST請求方式訪問低淡。還是通過@RequestMapping
來實現(xiàn)姓言。只要設定它的method屬性就行了!
@RequestMapping(value = "/bye.action",method = RequestMethod.POST)
public String bye(Model model) throws Exception {
model.addAttribute("message", "再見");
return "/index.jsp";
}
當我把業(yè)務方法的請求設置為POST以后蔗蹋,我想要通過GET方式來訪問該業(yè)務方法何荚。就行不通了!
業(yè)務方法寫入傳統(tǒng)web參數(shù)
我們的業(yè)務方法除了可以寫Model這個參數(shù)以外猪杭,如果有需要我們還可以寫request餐塘,response等傳統(tǒng)Servlet的參數(shù)。這是一樣可以使用的....
但是呢皂吮,我們并不建議使用傳統(tǒng)的web參數(shù)戒傻,因為會耦合
@RequestMapping(method=RequestMethod.POST,value="/register")
public String registerMethod(HttpServletRequest request,HttpServletResponse response) throws Exception{
//獲取用戶名和薪水
String username = request.getParameter("username");
String salary = request.getParameter("salary");
System.out.println("用戶注冊-->" + username + ":" + salary);
//綁定到session域?qū)ο笾? request.getSession().setAttribute("username",username);
request.getSession().setAttribute("salary",salary);
//重定向/jsp/success.jsp頁面
//response.sendRedirect(request.getContextPath()+"/jsp/success.jsp");
//轉(zhuǎn)發(fā)/jsp/ok.jsp頁面
request.getRequestDispatcher("/jsp/ok.jsp").forward(request,response);
//轉(zhuǎn)發(fā)(提倡)
return "/jsp/success.jsp";
}
小細節(jié):如果我們的返回值是返回一個真實路徑,而我們在程序中又使用了轉(zhuǎn)發(fā)或重定向蜂筹。需纳。。那么具體跳轉(zhuǎn)的位置就是按我們程序中跳轉(zhuǎn)的路徑為準艺挪!
業(yè)務方法收集參數(shù)
我們在Struts2中收集web端帶過來的參數(shù)是在控制器中定義成員變量不翩,該成員變量的名字與web端帶過來的名稱是要一致的...并且,給出該成員變量的set方法,那么Struts2的攔截器就會幫我們自動把web端帶過來的參數(shù)賦值給我們的成員變量....
那么在SpringMVC中是怎么收集參數(shù)的呢慌盯?周霉??亚皂?我們SpringMVC是不可能跟Struts2一樣定義成員變量的俱箱,因為SpringMVC是單例的,而Struts2是多例的灭必。因此SpringMVC是這樣干的:
- 業(yè)務方法寫上參數(shù)
- 參數(shù)的名稱要和web端帶過來的數(shù)據(jù)名稱要一致
接收普通參數(shù)
如果是普通參數(shù)的話狞谱,我們直接在方法上寫上與web端帶過來名稱相同的參數(shù)就行了!
<form action="${pageContext.request.contextPath}/hello.action" method="post">
<table align="center">
<tr>
<td>用戶名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>編號</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
@RequestMapping(value = "/hello.action")
public String hello(Model model, String username, int id) throws Exception {
System.out.println("用戶名是:" + username);
System.out.println("編號是:" + id);
model.addAttribute("message", "你好");
return "/index.jsp";
}
效果:
接收JavaBean
我們處理表單的參數(shù)禁漓,如果表單帶過來的數(shù)據(jù)較多跟衅,我們都是用JavaBean對其進行封裝的。那么我們在SpringMVC也是可以這么做的播歼。
- 創(chuàng)建Javabean
- javaBean屬性與表單帶過來的名稱相同
- 在業(yè)務方法上寫上Javabean的名稱
創(chuàng)建JavaBean伶跷,javaBean屬性與表單帶過來的名稱相同
public class User {
private String id;
private String username;
public User() {
}
public User(String id, String username) {
this.id = id;
this.username = username;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
'}';
}
}
在業(yè)務方法參數(shù)上寫入Javabean
@RequestMapping(value = "/hello.action")
public String hello(Model model,User user) throws Exception {
System.out.println(user);
model.addAttribute("message", "你好");
return "/index.jsp";
}
收集數(shù)組
收集數(shù)組和收集普通的參數(shù)是類似的,看了以下的代碼就懂了秘狞。
<form action="${pageContext.request.contextPath}/hello.action" method="post">
<table align="center">
<tr>
<td>用戶名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>愛好</td>
<td><input type="checkbox" name="hobby" value="1">籃球</td>
<td><input type="checkbox" name="hobby" value="2">足球</td>
<td><input type="checkbox" name="hobby" value="3">排球</td>
<td><input type="checkbox" name="hobby" value="4">羽毛球</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
業(yè)務方法獲取參數(shù)
@RequestMapping(value = "/hello.action")
public String hello(Model model,int[] hobby) throws Exception {
for (int i : hobby) {
System.out.println("喜歡運動的編號是:" + i);
}
model.addAttribute("message", "你好");
return "/index.jsp";
}
效果:
收集List<JavaBean>
集合
我們在Spring的業(yè)務方法中是不可以用List叭莫,SpringMVC給了我們另一種方案!
我們使用一個JavaBean把集合封裝起來烁试,給出對應的set和get方法雇初。那么我們在接收參數(shù)的時候,接收的是JavaBean
/**
* 封裝多個Emp的對象
* @author AdminTC
*/
public class Bean {
private List<Emp> empList = new ArrayList<Emp>();
public Bean(){}
public List<Emp> getEmpList() {
return empList;
}
public void setEmpList(List<Emp> empList) {
this.empList = empList;
}
}
業(yè)務方法接收JavaBean對象
/**
* 批量添加員工
*/
@RequestMapping(value="/addAll",method=RequestMethod.POST)
public String addAll(Model model,Bean bean) throws Exception{
for(Emp emp:bean.getEmpList()){
System.out.println(emp.getUsername()+":"+emp.getSalary());
}
model.addAttribute("message","批量增加員工成功");
return "/jsp/ok.jsp";
}
在JSP頁面直接寫上empList[下表].
<form action="${pageContext.request.contextPath}/emp/addAll.action" method="POST">
<table border="2" align="center">
<caption><h2>批量注冊員工</h2></caption>
<tr>
<td><input type="text" name="empList[0].username" value="哈哈"/></td>
<td><input type="text" name="empList[0].salary" value="7000"/></td>
</tr>
<tr>
<td><input type="text" name="empList[1].username" value="呵呵"/></td>
<td><input type="text" name="empList[1].salary" value="7500"/></td>
</tr>
<tr>
<td><input type="text" name="empList[2].username" value="班長"/></td>
<td><input type="text" name="empList[2].salary" value="8000"/></td>
</tr>
<tr>
<td><input type="text" name="empList[3].username" value="鍵狀哥"/></td>
<td><input type="text" name="empList[3].salary" value="8000"/></td>
</tr>
<tr>
<td><input type="text" name="empList[4].username" value="綠同學"/></td>
<td><input type="text" name="empList[4].salary" value="9000"/></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="批量注冊"/>
</td>
</tr>
</table>
</form>
其實這種方法看起來也沒有那么難理解减响,我們就是向上封裝了一層【與接收普通的JavaBean類似的】靖诗。
收集多個模型
我們有可能在JSP頁面上即有User模型的數(shù)據(jù)要收集,又有Emp模型的數(shù)據(jù)要收集....并且User模型的屬性和Emp模型的屬性一模一樣....此時我們該怎么辦呢支示?刊橘??
我們也是可以在User模型和Emp模型上向上抽象出一個Bean悼院,該Bean有Emp和User對象
/**
* 封裝User和Admin的對象
* @author AdminTC
*/
public class Bean {
private User user;
private Admin admin;
public Bean(){}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public Admin getAdmin() {
return admin;
}
public void setAdmin(Admin admin) {
this.admin = admin;
}
}
在JSP頁面收集的時候伤为,給出對應的類型就行了。
<form action="${pageContext.request.contextPath}/person/register.action" method="POST">
<table border="2" align="center">
<tr>
<th>姓名</th>
<td><input type="text" name="user.username" value="${user.username}"/></td>
</tr>
<tr>
<th>月薪</th>
<td><input type="text" name="user.salary" value="${user.salary}"></td>
</tr>
<tr>
<th>入職時間</th>
<td><input
type="text"
name="user.hiredate"
value='<fmt:formatDate value="${user.hiredate}" type="date" dateStyle="default"/>'/></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="普通用戶注冊" style="width:111px"/>
</td>
</tr>
</table>
</form>
字符串轉(zhuǎn)日期類型
我們在Struts2中据途,如果web端傳過來的字符串類型是yyyy-mm-dd hh:MM:ss這種類型的話绞愚,那么Struts2默認是可以自動解析成日期的,如果是別的字符串類型的話颖医,Struts2是不能自動解析的位衩。要么使用自定義轉(zhuǎn)換器來解析,要么就自己使用Java程序來解析....
而在SpringMVC中熔萧,即使是yyyy-mm-dd hh:MM:ss這種類型SpringMVC也是不能自動幫我們解析的糖驴。我們看如下的例子:
JSP傳遞關于日期格式的字符串給控制器...
<form action="${pageContext.request.contextPath}/hello.action" method="post">
<table align="center">
<tr>
<td>用戶名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>出生日期</td>
<td><input type="text" name="date" value="1996-05-24"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
User對象定義Date成員變量接收
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
業(yè)務方法獲取Date值
@RequestMapping(value = "/hello.action")
public String hello(Model model, User user) throws Exception {
System.out.println(user.getUsername() + "的出生日期是:" + user.getDate());
model.addAttribute("message", "你好");
return "/index.jsp";
}
結(jié)果出問題了僚祷,SpringMVC不支持這種類型的參數(shù):
現(xiàn)在問題就拋出來了,那我們要怎么解決呢贮缕?辙谜??感昼?
SpringMVC給出類似于Struts2類型轉(zhuǎn)換器這么一個方法給我們使用:如果我們使用的是繼承AbstractCommandController類來進行開發(fā)的話装哆,我們就可以重寫initBinder()方法了....
具體的實現(xiàn)是這樣子的:
@Override
protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
那我們現(xiàn)在用的是注解的方式來進行開發(fā),是沒有重寫方法的定嗓。因此我們需要用到的是一個注解蜕琴,表明我要重寫該方法!
@InitBinder
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(
Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
}
再次訪問:
值得注意的是:如果我們使用的是Oracle插入時間的話宵溅,那么我們在SQL語句就要寫TimeStrap時間戳插入進去凌简,否則就行不通!
結(jié)果重定向和轉(zhuǎn)發(fā)
我們一般做開發(fā)的時候恃逻,經(jīng)常編輯完數(shù)據(jù)就返回到顯示列表中雏搂。我們在Struts2是使用配置文件進行重定向或轉(zhuǎn)發(fā)的:
而我們的SpringMVC就非常簡單了,只要在跳轉(zhuǎn)前寫上關鍵字就行了寇损!
public String hello(Model model, User user) throws Exception {
System.out.println(user.getUsername() + "的出生日期是:" + user.getDate());
model.addAttribute("message", user.getDate());
return "redirect:/index.jsp";
}
以此類推畔派,如果是想要再次請求的話,那么我們只要寫上對應的請求路徑就行了润绵!
@RequestMapping(value = "/hello.action")
public String hello(Model model, User user) throws Exception {
return "redirect:/bye.action";
}
@RequestMapping("/bye.action")
public String bye() throws Exception {
System.out.println("我進來了bye方法");
return "/index.jsp";
}
返回JSON文本
回顧一下Struts2返回JSON文本是怎么操作的:
- 導入jar包
- 要返回JSON文本的對象給出get方法
- 在配置文件中繼承json-default包
- result標簽的返回值類型是json
那么我們在SpringMVC又怎么操作呢?胞谈?尘盼?
導入兩個JSON開發(fā)包
- jackson-core-asl-1.9.11.jar
- jackson-mapper-asl-1.9.11.jar
在要返回JSON的業(yè)務方法上給上注解:
@RequestMapping(value = "/hello.action")
public
@ResponseBody
User hello() throws Exception {
User user = new User("1", "zhongfucheng");
return user;
}
配置JSON適配器
<!--
1)導入jackson-core-asl-1.9.11.jar和jackson-mapper-asl-1.9.11.jar
2)在業(yè)務方法的返回值和權限之間使用@ResponseBody注解表示返回值對象需要轉(zhuǎn)成JSON文本
3)在spring.xml配置文件中編寫如下代碼:
-->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
</list>
</property>
</bean>
測試的JSP
<input type="button" value="Emp轉(zhuǎn)JSON"/><p>
<input type="button" value="List<Emp>轉(zhuǎn)JSON"/><p>
<input type="button" value="Map<String,Object>轉(zhuǎn)JSON"/><p>
<!-- Map<String,Object>轉(zhuǎn)JSON -->
<script type="text/javascript">
$(":button:first").click(function(){
var url = "${pageContext.request.contextPath}/hello.action";
var sendData = null;
$.post(url,sendData,function(backData,textStaut,ajax){
alert(ajax.responseText);
});
});
</script>
測試:
Map測試:
@RequestMapping(value = "/hello.action")
public
@ResponseBody
Map hello() throws Exception {
Map map = new HashMap();
User user = new User("1", "zhongfucheng");
User user2 = new User("12", "zhongfucheng2");
map.put("total", user);
map.put("rows", user2);
return map;
}
更新------------------------------------------------------------------
如果傳遞進來的數(shù)據(jù)就是JSON格式的話,我們我們需要使用到另外一個注解@RequestBody
,將請求的json數(shù)據(jù)轉(zhuǎn)成java對象
總結(jié)
- 使用注解的開發(fā)避免了繼承多余的類烦绳,并且非常簡潔高效卿捎。
- 想要中文不亂碼,僅僅設置request的編碼格式是不行的径密。因為SpringMVC是通過無參的構(gòu)造器將數(shù)據(jù)進行封裝的午阵。我們可以使用SpringMVC提供的過濾器來解決中文亂碼問題。
- RequestMapping可以設置我們具體的訪問路徑享扔,還可以分模塊開發(fā)底桂。基于這么兩個原因惧眠,我們就可以在一個Action中寫多個業(yè)務方法了籽懦。
- RequestMapping還能夠限制該請求方法是GET還是POST。
- 在我們的業(yè)務方法中氛魁,還可以使用傳統(tǒng)的request和response等對象暮顺,只不過如果不是非要使用的話厅篓,最好就別使用了。
- 對于SpringMVC自己幫我們封裝參數(shù)捶码,也是需要使用與request帶過來的名稱是相同的羽氮。如果不相同的話,我們需要使用注解來幫我們解決的惫恼。
- 如果是需要封裝成集合档押,或者封裝多個Bean的話,那么我們后臺的JavaBean就需要再向上一層封裝尤筐,在業(yè)務方法上寫上Bean進行了汇荐。當然了,在web頁面上要指定對應Bean屬性的屬性盆繁。
- 字符串轉(zhuǎn)日期對象用到
@InitBinder
注解來重寫方法掀淘。 - 返回JSON對象,我們就需要用到
@ResponseBody
注解油昂,如果接收JSON數(shù)據(jù)封裝成JavaBean的話革娄,我們就需要用到@RequestBody
注解。隨后在配置文件上創(chuàng)建對應的bean即可冕碟。
如果文章有錯的地方歡迎指正拦惋,大家互相交流。習慣在微信看技術文章安寺,想要獲取更多的Java資源的同學厕妖,可以關注微信公眾號:Java3y