一、(補充)視圖解析器---XmlViewResolver
作用:分離配置信息。
在視圖解析器---BeanNameViewResolver的基礎之上進行擴充,新建一個myView.xml分離信息
在applicationContext.xml中進行配置XmlViewResolver,以及處理器配置
myView.xml:
實現效果:
二、SpringMVC注解開發
常用的兩個注解:
@Controller:是SpringMVC中最常用的注解,它可以幫助定義當前類為一個Spring管理的bean,同時指定該類是一個控制器,可以用來接受請求。標識當前類是控制層的一個具體的實現
@requestMapping:放在方法上面用來指定某個方法的路徑,當它放在類上的時候相當於命名空間需要組合方法上的requestmapping來訪問
擴充:
注解名稱
作用
@Controller
注解標明該類需要Spring容器自動加載,將一個類成為 Spring 容器的 Bean。
@RequestMapping
可以標注在類定義處,將 Controller 和特定請求關聯起來;還可以標注在方法簽名處。所以在類聲明處標注的 @RequestMapping 相當於讓 POJO 實現了 Controller 接口,而在方法定義處的 @RequestMapping 相當於讓 POJO 擴展 Spring 預定義的 Controller(如 SimpleFormController 等)。
@Resource
用來注解該屬性的SETTER方法參數來源於Spring Bean
@ModelAttribute
①綁定請求參數到命令對象:放在功能處理方法的入參上時,用於將多個請求參數綁定到一個命令對象,從而簡化綁定流程,而且自動暴露為模型數據用於視圖頁面展示時使用;
②暴露表單引用對象為模型數據:放在處理器的一般方法(非功能處理方法)上時,是為表單准備要展示的表單引用對象,如注冊時需要選擇的所在城市等,而且在執行功能處理方法(@RequestMapping注解的方法)之前,自動添加到模型對象中,用於視圖頁面展示時使用;
③暴露@RequestMapping方法返回值為模型數據:放在功能處理方法的返回值上時,是暴露功能處理方法的返回值為模型數據,用於視圖頁面展示時使用。
@SessionAttributes
代表被注解對象會被存放到HttpSession作用域
@PathVariable
用於將請求URL中的模板變量映射到功能處理方法的參數上
@requestParam
用於將請求參數區數據映射到功能處理方法的參數上
入門案例:
① Springmvc的包掃描器:
由於使用了基於注解的Controller,所以這裡指定了需要被掃描的包路徑,如果有多個可以使用逗號分隔。
處理器類:[一個處理類中也可定義N個處理器方法]
2、請求中的通配符用法
實現效果:
3、請求中方式的定義
對於@RequestMapping,有一個屬性method,用於對被注解方法所處理請求的提交方式進行限制,只有滿足該method屬性指定的提交方式,才會執行被注解方法。 method屬性的取值為RequestMethod,是一個枚舉常量。常用值為 RequestMethod.GET 與 RequestMethod.POST
4、處理器方法的參數
處理器方法中常用的參數有五類,這些參數會在系統調用時由系統自動賦值,即程序員可在方法內直接使用:
①HttpServletRequest
②HttpServletResponse
③HttpSession
④用於承載數據的Model
⑤請求中所攜帶的請求參數
前三種實現方式:
1 2 3 4 5 6 7 8@RequestMapping
(value=
"/one.do"
,method=RequestMethod.GET)
public
String doFirst(HttpServletRequest request,HttpServletResponse response,HttpSession session){
System.out.println(request);
System.out.println(response);
System.out.println(session);
return
"index"
;
}
用於承載數據的Model:零散參數
1 2 3 4 5 6 7 8 9 10@RequestMapping
(value=
"/one.do"
,method=RequestMethod.GET)
public
String doFirst(Model model){
Map<String,Object> datas=
new
HashMap<String, Object>();
datas.put(
"uname"
,
"逗比 ^^"
);
model.addAllAttributes(datas);
System.out.println(model);
return
"index"
;
}
對象參數:裝配成實體
自定義實體類:UserInfo
1 2 3 4 5 6 7 8 9 10 11 12public
class
UserInfo {
private
String uname;
public
String getUname() {
return
uname;
}
public
void
setUname(String uname) {
this
.uname = uname;
}
FirstController控制器類方法參數是實體類對象:
1 2 3 4 5 6 7 8 9 10 11 12 13@Controller
@RequestMapping
(value=
"/con"
)
public
class
FirstController{
@RequestMapping
(value=
"/dofirst.do"
)
public
String doFirst(UserInfo info){
System.out.println(info.getUname());
return
"index"
;
}
}
大配置同理:
jsp頁面form表單提交:
實現效果:
控制台會出現亂碼情況,如何解決?
5、解決亂碼問題:Web.xml配置編碼過濾器---CharacterEncodingFilter
SpringMVC+MyBatis集成配置 http://www.linuxidc.com/Linux/2016-09/135212.htm
SpringMVC總結篇 http://www.linuxidc.com/Linux/2016-06/132659.htm
Spring+SpringMVC企業快速開發架構搭建 http://www.linuxidc.com/Linux/2015-09/122942.htm
SpringMVC的亂碼處理 http://www.linuxidc.com/Linux/2015-07/120542.htm
Spring MVC+Spring3+Hibernate4開發環境搭建 http://www.linuxidc.com/Linux/2013-07/87119.htm
Spring MVC整合Freemarker基於注解方式 http://www.linuxidc.com/Linux/2013-02/79660.htm
基於注解的Spring MVC簡單介紹 http://www.linuxidc.com/Linux/2012-02/54896.htm
SpringMVC詳細示例實戰教程 http://www.linuxidc.com/Linux/2015-06/118461.htm
SpringMVC錯誤頁面配置 http://www.linuxidc.com/Linux/2016-12/138097.htm
SpringMVC 異常處理 http://www.linuxidc.com/Linux/2015-06/119049.htm
SpringMVC框架入門配置 IDEA下搭建Maven項目 http://www.linuxidc.com/Linux/2016-09/134918.htm