1. 程式人生 > 實用技巧 >SpringMVC框架的註解如何使用?

SpringMVC框架的註解如何使用?

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 和值棧。這樣,在效能上會有相當大得提高。