## SpringMVC 注解的方式
- @Controller
- @RequestMapping
- @SessionAttributes
## 案例實(shí)操
### @Controller 控制器定義
在 spring 3.0 中舅踪,通過@controller 標(biāo)注即可將 class 定義為一個(gè) controller 類纽甘。為使 springMVC 能找到定義為 controller 的 bean,需要在 servlet-context 配置文件中增加
如下定義:
~~~ xml
<context:component-scan base-package="com.xxx.controller"/>
~~~
注:實(shí)際上,使用@Component抽碌,也可以起到@Controller 同樣的作用悍赢。
### @RequestMapping
在類前面定義,則將 url 和類綁定货徙。
在方法前面定義左权,則將 url 和類的方法綁定
~~~ java
//url: http://localhost:8080/springmvc01/hello2/test01.do
@RequestMapping("test01")
public ModelAndView test01(){
ModelAndView mv=new ModelAndView();
mv.setViewName("hello");
mv.addObject("hello", "hello test01");
return mv;
}
//url: http://localhost:8080/springmvc01/hello2.do?test01
@RequestMapping(params="test02")
public ModelAndView test02(){
ModelAndView mv=new ModelAndView();
mv.setViewName("hello");
mv.addObject("hello", "hello test02");
return mv;
}
//url: http://localhost:8080/springmvc01/hello2/test03.do
@RequestMapping("test03")
? ? public String test03(Model model){
? ? model.addAttribute("hello", "hello test03");
? ? return "hello";
}
//url: http://localhost:8080/springmvc01/hello2/test04.do
@RequestMapping("test04")
public String test04(ModelMap modelMap){
? ? modelMap.addAttribute("hello", "hello test04");
? ? return "hello";
}
//url: http://localhost:8080/springmvc01/hello2/test05.do
@SuppressWarnings("unchecked")
@RequestMapping("test05")
public String test05(Map model){
? ? model.put("hello", "hello test05 ");
? ? return "hello";
}
~~~
### @SessionAttributes
用于聲明 session 級(jí)別存儲(chǔ)的屬性,放置在處理器類上(了解)
~~~ java
@Controller
@SessionAttributes({"userName"})// userName 放入 session
public class UserController {
? ? @RequestMapping("/queryUser")
? ? public ModelAndView queryUser(String userName){
? ? ? ? ModelAndView mv=new ModelAndView();
? ? ? ? mv.addObject("userName", userName);
? ? ? ? mv.setViewName("user");
? ? ? ? return mv;
}
}
~~~
頁面取值
~~~ jsp
<body>
${sessionScope.a}|||${sessionScope.b}
</body>
~~~
## 擴(kuò)展~常見 **MVC** **框架比較**
運(yùn)行性能上:
Jsp+servlet>struts1>spring mvc>struts2+freemarker>struts2,ognl, 值棧痴颊。
開發(fā)效率上,基本正好相反赏迟。值得強(qiáng)調(diào)的是,spring mvc 開發(fā)效率和 struts2 不相上下蠢棱,但從目前來看锌杀,spring mvc 的流行度已遠(yuǎn)遠(yuǎn)超過 struts2。
Struts2 的性能低的原因是因?yàn)?OGNL(一種表達(dá)式語言泻仙,通過它簡單一致 的表達(dá)式語法糕再,可以存取對象的任意屬性,調(diào)用對象的方法玉转,結(jié)合 struts2 框架使用)和值棧(簡單理解為存放 struts2 action 的堆棧)造成的突想。所以,如果系統(tǒng)并發(fā)量高冤吨,可以使用 freemaker 進(jìn)行顯示蒿柳,而不是采用 OGNL 和值棧。這樣漩蟆,在性能上會(huì)有相當(dāng)大得提高垒探。 需要視頻配套資料或其他資料+我們小姐姐V lezijie007(加好友暗號(hào) -98 ,不備注不加)