註解驅動的控制器,將請求對映到處理器
即使用 DefaultAnnotationHandlerMapping
WEB-INF/
name-servlet.xml中需要:
<!--
自動掃描的包名 -->
<context:component-scan
base-package="com.gome.memberFront.web" />
<mvc:annotation-driven
/>
對於@Controller標註的類,以及這種類裡的方法,可以使用@RequestMapping("url路徑")註解來指定其處理來自何url的請求 。
例如:
@Controller
@RequestMapping("complaint")
public class MyController {
@RequestMapping("getComplaintList")
public Object getComplaintList(HttpServletRequest request, HttpServletResponse response) {
}
}
則該類處理來自 web應用部署路徑/complaint的請求,該方法處理來自 web應用部署路徑/complaint/getComplaintDiffs的請求。
類處的引數("value")可以省略,讓方法處的引數改為("complaint/getComplaintList")即可。
@RequestMapping不但支援標準的URL,還支援帶?、 * 、** 、{xxx}佔位符的URL,例如:
/user/*/createUser 匹配/user/aaa/createUser
/user/**/createUser 匹配/user/aaa/bbb/createUser 、 /user/createUser
/user/createUser?? 匹配/user/createUseraa
/user/{userId} 匹配user/123
在對應方法中,形參位置,可以使用(@PathVariable("userId"),將url中的實參與形參進行繫結
在處理類中,最後要返回ModelAndView,準備下一步通過ViewResolver解析
處理方法簽名(view向controller傳值)
1,使用@RequestParam繫結請求引數值,RequestParam有三個引數,value(引數名)、required(是否必須)、defaultValue(預設引數名,不常用):
@Controller
@RequestMapping("complaint")
public class MyController {
@RequestParam(value="userName",required=false)String userName;}
2,使用@CookieValue繫結請求中的Cookie值
public class MyController {
@CookieValue(value="sessionId",required=false)String sessionId;}
3,使用@RequestHeader繫結請求報文頭的屬性值
public class MyController {
@RequestHeader(value="Accept-Encoding")String encoding;}
在controller的函式引數中增加一個 Model m,在函式體中使用m.addAttribute("key",value),可以將值傳入view
使用json作為資料傳輸媒介:
不再需要向view層傳ModelAndView,而是需要配置好json相應的型別轉換器等,如下
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
然後可以在controller最後使用@ResponseBody,表示該方法的返回結果直接寫入HTTP response body中,方法的返回值也不再是ModelAndView,而是String或者Object
由此,便可以將Map或者物件以json的形式返回前端。
相關文章
- hibernate annotation註解方式來處理對映關係
- RxHttp 一條鏈傳送請求之註解處理器 Generated API(四)HTTPAPI
- Nacos - 服務端處理註冊請求服務端
- 註解處理器
- SpringMVC請求對映handler原始碼解讀SpringMVC原始碼
- 怎麼設定對映網路驅動器?在電腦上設定對映網路驅動器的方法
- NAS對映網路驅動器如何操作?
- 搜尋 伺服器處理請求伺服器
- Java中的註解-自定義註解處理器Java
- 【Spring註解驅動開發】關於BeanPostProcessor後置處理器,你瞭解多少?SpringBean
- 如何在win10系統中對映網路驅動器_win10電腦對映網路驅動器的方法Win10
- SpringMVC--請求資料對映SpringMVC
- SpringMVC學習(三)對映請求引數&請求引數SpringMVC
- 請求資料處理
- wordpress 處理 ajax 請求
- Mongodb請求處理流程MongoDB
- .NET處理HTTP請求HTTP
- 處理REST SOE請求REST
- Nginx請求處理流程你瞭解嗎?Nginx
- serv-u中如何對映網路驅動器
- 從請求到響應 django 都做了哪些處理Django
- Java Struts2 的請求處理流程詳解Java
- Java註解解析-搭建自己的註解處理器(CLASS註解使用篇)Java
- 跟控制器說再見吧,從今天開始使用請求處理器(Request Handlers) 正規化
- Yii2 在模組內對映 Controller 到其它控制器Controller
- 如何高效的處理陣列對映陣列
- Android註解處理初探:使用註解處理器消除樣板程式碼Android
- 使用Django來處理對於靜態檔案的請求Django
- 如何SQL Server中檢視對映網路驅動器NASQLServer
- SpringMVC請求處理流程SpringMVC
- 請求處理管道個人理解
- nginx處理http請求流程NginxHTTP
- springmvc處理ajax請求SpringMVC
- RequestMappingHandlerMapping請求地址對映流程!APP
- Python web伺服器怎麼處理請求PythonWeb伺服器
- Java後端中的請求最佳化:從請求合併到非同步處理的實現策略Java後端非同步
- 使用Android註解處理器,解放勞動生產力Android
- QTP中對映驅動器和複製資料夾的指令碼QT指令碼