zoukankan      html  css  js  c++  java
  • spring注解

    1.注解

    • @Controller控制器定义

        和Struts1一样,Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。

        在spring 3.0中,通过@controller标注即可将class定义为一个controller类。为使spring能找到定义为controller的bean,需要在spring-context配置文件中增加如下定义:

    <context:component-scan base-package="com.sxt.web"/>

       注:实际上,使用@component,也可以起到@Controller同样的作用。 

    • @RequestMapping

      在类前面定义,则将url和类绑定。

          在方法前面定义,则将url和类的方法绑定,如下所示:

     1 package com.sxt.web;
     2 
     3 import javax.annotation.Resource;
     4 import org.springframework.stereotype.Controller;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import com.sxt.service.UserService;
     7 
     8 @Controller
     9 @RequestMapping("/user.do")
    10 public class UserController  {
    11 
    12     @Resource
    13     private UserService userService;
    14     
    15     //http://localhost:8080/springmvc02/user.do?method=reg&uname=zzzz
    16     @RequestMapping(params="method=reg") 
    17     public String reg(String uname) {
    18         System.out.println("HelloController.handleRequest()");
    19         userService.add(uname); 
    20         return "index";
    21     }
    22     
    23     public UserService getUserService() {
    24         return userService;
    25     }
    26     public void setUserService(UserService userService) {
    27         this.userService = userService;
    28     }
    31 }
    • @RequestParam 

        一般用于将指定的请求参数付给方法中形参。示例代码如下:

    1 @RequestMapping(params="method=reg5")
    2     public String reg5(@RequestParam("name")String uname,ModelMap map) { 
    3         System.out.println("HelloController.handleRequest()");
    4         System.out.println(uname); 
    5         return "index";
    6     }

      这样,就会将name参数的值付给uname。当然,如果请求参数名称和形参名称保持一致,则不需要这种写法。

    • @SessionAttributes

          将ModelMap中指定的属性放到session中。示例代码如下:

     1 @Controller
     2 @RequestMapping("/user.do")
     3 @SessionAttributes({"u","a"})   //将ModelMap中属性名字为u、a的再放入session中。这样,request和session中都有了。
     4 public class UserController  {
     5     @RequestMapping(params="method=reg4")
     6     public String reg4(ModelMap map) {          System.out.println("HelloController.handleRequest()");
     7         map.addAttribute("u","uuuu");  //将u放入request作用域中,这样转发页面也可以取到这个数据。
     8         return "index";
     9     }
    10 }
    1 <body>
    2    <h1>**********${requestScope.u.uname}</h1>
    3    <h1>**********${sessionScope.u.uname}</h1>
    4   </body>

      注:名字为”user”的属性再结合使用注解@SessionAttributes可能会报错。

    • @ModelAttribute

          这个注解可以跟@SessionAttributes配合在一起用。可以将ModelMap中属性的值通过该注解自动赋给指定变量。

        示例代码如下:

     1 package com.sxt.web;
     2 import javax.annotation.Resource;
     3 import org.springframework.stereotype.Controller;
     4 import org.springframework.ui.ModelMap;
     5 import org.springframework.web.bind.annotation.ModelAttribute;
     6 import org.springframework.web.bind.annotation.RequestMapping;
     7 import org.springframework.web.bind.annotation.SessionAttributes;
     8 @Controller
     9 @RequestMapping("/user.do")
    10 @SessionAttributes({"u","a"})  
    11 public class UserController  {
    12     
    13     @RequestMapping(params="method=reg4")
    14     public String reg4(ModelMap map) {
    15         System.out.println("HelloController.handleRequest()");
    16         map.addAttribute("u","尚学堂高淇");
    17         return "index";
    18     }
    19     
    20     @RequestMapping(params="method=reg5")
    21 public String reg5(@ModelAttribute("u")String uname ,ModelMap map) { 
    22         System.out.println("HelloController.handleRequest()");
    23         System.out.println(uname); 
    24         return "index";
    25     }
    26     
    27 }
    View Code
  • 相关阅读:
    若没有特殊说明,博文密码都是我的生日
    「考前日志」11.18
    「考前日志」11.17
    洛谷 P2018 消息传递
    「考前日志」11.16
    「考前日志」11.15
    「考前日志」11.14
    2020.11.13 “考试”
    「考前日志」11.13
    AcWing277 饼干
  • 原文地址:https://www.cnblogs.com/woshimrf/p/4811233.html
Copyright © 2011-2022 走看看