1、(補充)視圖解析器---XmlViewResolverjava
做用:分離配置信息。程序員
在視圖解析器---BeanNameViewResolver的基礎之上進行擴充,新建一個myView.xml分離信息session
在applicationContext.xml中進行配置XmlViewResolver,以及處理器配置mvc
myView.xml:app
實現效果:jsp
2、SpringMVC註解開發this
經常使用的兩個註解:編碼
@Controller:是SpringMVC中最經常使用的註解,它能夠幫助定義當前類爲一個Spring管理的bean,同時指定該類是一個控制器,能夠用來接受請求。標識當前類是控制層的一個具體的實現spa
@requestMapping:放在方法上面用來指定某個方法的路徑,當它放在類上的時候至關於命名空間須要組合方法上的requestmapping來訪問3d
擴充:
註解名稱 |
做用 |
@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個處理器方法]
二、請求中的通配符用法
實現效果:
三、請求中方式的定義
對於@RequestMapping,有一個屬性method,用於對被註解方法所處理請求的提交方式進行限制,只有知足該method屬性指定的提交方式,纔會執行被註解方法。 method屬性的取值爲RequestMethod,是一個枚舉常量。經常使用值爲 RequestMethod.GET 與 RequestMethod.POST
四、處理器方法的參數
處理器方法中經常使用的參數有五類,這些參數會在系統調用時由系統自動賦值,即程序員可在方法內直接使用:
①HttpServletRequest
②HttpServletResponse
③HttpSession
④用於承載數據的Model
⑤請求中所攜帶的請求參數
前三種實現方式:
@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:零散參數
@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
public class UserInfo { private String uname; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; }
FirstController控制器類方法參數是實體類對象:
@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表單提交:
實現效果:
控制檯會出現亂碼狀況,如何解決?
五、解決亂碼問題:Web.xml配置編碼過濾器---CharacterEncodingFilter