@Controller
spring中的注解 代表控制层在 配置文件加载的时候会new Bean
<!-- 开启扫描 --> <context:component-scan base-package="cn.vp.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan>
<!-- 开启spring mvc注解 -->
<mvc:annotation-driven/>
@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@RequestMapping(value="/test.jsp" method=RequestMethod.GET params="choose=2")的常用属性
1、 value :指定请求的实际地址,指定的地址可以是URI
2、 method : 指定请求的method类型, GET、POST、PUT、DELETE等;
3、 params :指定request中必须包含某些参数值是,才让该方法处理。
示例代码:
<body> <form action="login.do" method="post"> 用户名<input type="text" name="uname"><br> 密 码<input type="password" name="pwd"><br> <input type="hidden" name="choose" value="1"> <input type="submit" value="登录"> </form> </body>
@RequestMapping(value="/login.do",params="choose=2",method= RequestMethod.GET) public String login2(String uname,String pwd) { System.out.println("进入choose=2的get请求方法"); return null; } @RequestMapping(value="/login.do",params="choose=2",method=RequestMethod.POST) public String login(String uname,String pwd) { System.out.println("进入choose=2的post请求方法"); return null; } @RequestMapping(value="/login.do",params="choose=1") public String login1(String uname,String pwd) { System.out.println("进入choose=1的方法"); return null; }
@SessionAttributes
注:名字为”user”的属性再结合使用注解@SessionAttributes可能会报错
将值放到session作用域中,写在class上面。
@ModelAttribute
代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中
@ModelAttribute的使用 (有返回值和没有返回值的方法)
1.@ModelAttribute注解void返回值的方法
在这个代码中,访问控制器方法helloWorld时,会首先调用populateModel方法,将页面参数abc(/helloWorld.ht?abc=text)放到model的attributeName属性中,在视图中可以直接访问
@Controller public class UserContoller { @ModelAttribute public void populateModel(@RequestParam("username") String abc, Model model) { model.addAttribute("attributeName", abc); } @RequestMapping("/helloWorld") public String helloWorld() { return " forward:index.jsp "; } }
<body> <h1>request作用域:${requestScope.attributeName}</h1> </body>
2.@ModelAttribute注释返回具体类的方法
当用户请求 http://localhost:8080/u3_08_001/helloWorld时,首先访问populateModel方法,返回User对象,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回User类型,那么这个model属性的名称是user。
这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。
@Controller public class UserContoller { @ModelAttribute public User populateModel(User user) { return user; } @RequestMapping("/helloWorld") public String helloWorld() { System.out.println("进入...."); return "forward:index.jsp"; } }