SpringMVC框架的註解如何使用?
阿新 • • 發佈:2020-09-01
SpringMVC 註解的方式
- @Controller
- @RequestMapping
- @SessionAttributes
案例實操
@Controller 控制器定義
在 spring 3.0 中,通過@controller 標註即可將 class 定義為一個 controller 類。為使 springMVC 能找到定義為 controller 的 bean,需要在 servlet-context 配置檔案中增加
如下定義:
<context:component-scan base-package="com.xxx.controller"/>
注:實際上,使用@Component,也可以起到@Controller 同樣的作用。
@RequestMapping
在類前面定義,則將 url 和類繫結。
在方法前面定義,則將 url 和類的方法繫結
//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 級別儲存的屬性,放置在處理器類上(瞭解)
@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; } }
頁面取值
<body>
${sessionScope.a}|||${sessionScope.b}
</body>
擴充套件~常見 MVC 框架比較
執行效能上:
Jsp+servlet>struts1>spring mvc>struts2+freemarker>struts2,ognl, 值棧。
開發效率上,基本正好相反。值得強調的是,spring mvc 開發效率和 struts2 不相上下,但從目前來看,spring mvc 的流行度已遠遠超過 struts2。
let>struts1>spring mvc>struts2+freemarker>struts2,ognl, 值棧。
開發效率上,基本正好相反。值得強調的是,spring mvc 開發效率和 struts2 不相上下,但從目前來看,spring mvc 的流行度已遠遠超過 struts2。
Struts2 的效能低的原因是因為 OGNL(一種表示式語言,通過它簡單一致 的表示式語法,可以存取物件的任意屬性,呼叫物件的方法,結合 struts2 框架使用)和值棧(簡單理解為存放 struts2 action 的堆疊)造成的。所以,如果系統併發量高,可以使用 freemaker 進行顯示,而不是採用 OGNL 和值棧。這樣,在效能上會有相當大得提高。