springMVC常用注解

来源:互联网 发布:hr抢购软件 编辑:程序博客网 时间:2024/06/06 02:15

springmvc可以使用bean来接收参数,因为是反射技术,所以属性字段依然要保持完全一样。

@Controller

@RequestMapping

springMVC在调用处理方法之前会创建一个隐含的模型存储数据,如果方法参数中含有Model类型会自动赋值,从而进行访问和修改

@Model

存入:addAttribute();

取出:(Object)model.asMap().get("");

@ModelAndView

  在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

  在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中 


设置模型:mv.addObject("user", user);

设置视图:mv.setViewName("result");

取出模型:User user = (User)mv.getModel().get("user");

@ModelAttribute 处理前端传来的参数,封装到模型中,先于方法调用,并且注释的方法在每个方法执行前被执行,慎用

@Controllerpublic class TestController {@ModelAttributepublic void userModel(String loginname, String password, Model model){User user = new User();user.setLoginname(loginname);user.setPassword(password);model.addAttribute("user", user);//将user保存到model}@RequestMapping("/login")public void login(Model model){User user = (User)model.asMap().get("user");//取出user}}

@Controllerpublic class TestController {@ModelAttributepublic void userModel(String loginname, String password, ModelAndView mv){User user = new User();user.setLoginname(loginname);user.setPassword(password);mv.addObject("user", user);}@RequestMapping("/login")public ModelAndView login(ModelAndView mv){User user = (User)mv.getModel().get("user");//取出usermv.setViewName("result");return mv;}}

@ModelAttribute("loginname")//设置一个model为loginname,值为方法的返回值loginnamepublic String userModel(@RequestParam("loginname") String loginname){return loginname;}
@ModelAttribute //返回一个名为类小写的modelpublic User Model(@RequestParam("loginname") String loginname,@RequestParam("password") String password){return find(loginname, password); //dao层的一个自定义函数,返回user对象}

@RequestMapping("/login")@ModelAttribute("loginname")public String userModel(){return "admin";//此时返回的不是一个视图名称,而是返回loginname的值admin//形成效果:loginname(key)=admin(value)}
// model属性名称就是value值即”user”,model属性对象就是方法的返回值@ModelAttribute("user")public User userModel5( @RequestParam("loginname") String loginname,@RequestParam("password") String password){User user = new User();user.setLoginname(loginname);user.setPassword(password);return user;}// @ModelAttribute("user") User user注释方法参数,参数user的值来源于userModel5()方法中的model属性。@RequestMapping(value="/login5")public String login5(@ModelAttribute("user") User user) {user.setUsername("管理员");return "result5";}




@RequestParam 将请求中的参数赋值给形参,类似request.getParameter("loginname"),一般默认同名赋值接受前端参数,requestparam可以起别名

public ModelAndView login(@RequestParam("loginname") String loginname,@RequestParam("password"))

@PathVariable 获取url动态参数,只有一个属性value,省略则绑定同名参数

@RequestMapping("/test/{userId}")public void test(@PathVariable Integer userId){}

动态跳转页面

@RequestMapping(value="/{formName}")public String loginForm(@PathVariable String formName){// 动态跳转页面,主要用于jsp页面的跳转return formName;}


@SessionAttribute     将该对象的作用域设置成session

@Controller@SessionAttribute("user")//@SessionAttribute(types={"User.class, Dept.class"}, value={"user", "dept"})public class TestController {}


Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作

public String login(){   return "redirect:regirst.do"; }

//自动注入Bean属性 <form action="login.do"> 用户名:<input name="name"/> 密码:<input name="pass"/> <input type="submit" value="登陆"> </form>   //封装的User类 public class User{  private String name;  private String pass; } @RequestMapping("/login.do") public String login(User user) {}



原创粉丝点击