dream_sky




  种一棵树最好的时间是  十年前。      其次是,     现在!

springmvc注解

 <!-- 配置handerAdapter  适配器 -->

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

<!-- 默认的注解映射的支持 -->  

        <mvc:annotation-driven /> 

<!-- spring容器扫描指定包下的所有类,如果类上有注解  那么根据注解产生相应bean对象已经映射信息 -->

        <context:component-scan base-package="cn.sxt.controller"/>

 

1、 SessionAttributes:

    ModelMap 中的哪些属性需要转存到 session 中,以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。

        这一功能是通过类定义处标注 @SessionAttributes 注解来实现的

@SessionAttributes("user"),向session写入user
只能放在类上,将requestcope的数据备到session

1
2
3
4
5
6
7
8
@SessionAttributes("user")
public class LoginController {
    @RequestMapping("/login.do")
    public String loginUser(String name,ModelMap map){
        //如果@SessionAttributes有modelmap中的key,那么会将值设置到session中
        map.addAttribute("user", name);
        return "forward:/WEB-INF/jsp/index.jsp";
    }

 

 

2、@ModelAttribute:

        方法体上:

        先逐个调用在方法级上标注了
        @ModelAttribute 的方法,然后将该模型参数放入doHello4()函数的Map参数中

        参数上:

        SpringMVC先从模型数据中获取对象,再将请求参数绑定到对象中,再传入形参,并且数据模型中的对象会被覆盖。

1
2
3
4
5
6
7
8
9
@ModelAttribute("user1")
   public User getUser() {
       User user = new User();
       user.setId(1L);
       user.setName("jjjj");
       user.setPassword("iiiii");
       return user;
 
   }

 

1
2
3
4
5
6
7
8
9
10
@RequestMapping(value = "hello7")
   public ModelAndView doHello6(
           @ModelAttribute("user1")
                   User user, ModelAndView modelAndView) {
 
 
       System.out.println(user + ":hello7");
       modelAndView.setViewName("redirect:/hello/hello4.do");
       return modelAndView;
   }

 

 

 

1
2
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday;

 

3、Controller类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Controller
public class HellController {
 
    //通过使用@RequestMapping 注解 可以指定请求的url�?映射到该方法�?
//  @RequestMapping(value="/hi.do")
    @RequestMapping("/helo.do")
    public ModelAndView hello(){
        System.out.println("dsf");
        ModelAndView mv = new ModelAndView();
        mv.setViewName("hell");
        mv.addObject("msg""annotation ssindddmc-");
        return mv;
    }
 
//public class HellController {
    @RequestMapping("helo1.do")
    public ModelAndView show2(HttpServletRequest req){
        System.out.println("dddf");
        req.setAttribute("msg""req携带参数");
        return new ModelAndView("hell");
    }
}

 

 

4、RequestBody,实体对象的json作为参数

@RequestBody 注解则是将 HTTP 请求正文插入方法中
实体反序列化过程

application/json或者是application/xml

1
2
3
4
5
6
7
8
9
10
@RequestMapping(value="/body.do",method = RequestMethod.POST,consumes = "application/json")
    //将会把返回值 转换为json对象
    @ResponseBody
    public List<User> json(@RequestBody User user){//post传参:raw格式json。{"name":"f","id":23,"age":3}
        List<User> list = new ArrayList<User>();
        list.add(new User(1,"zhansan",22));
        list.add(user);
//      return "forward:index1.jsp";
        return list;
    }

 

        

   ${user }<br>

    ${user.get(0).name}<br>

    ${user[0].id}

 

4、ResponseBody,
实体序列化过程
可定以在类上,即RestController
返回json

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用

在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中

1
2
3
4
5
6
7
8
9
10
@RequestMapping(value="/json.do",method = RequestMethod.GET)
@ResponseBody
//将会把返回值 转换为json对象
public List<User> json(){
    List<User> list = new ArrayList<User>();
    list.add(new User(1,"zhansan",22));
    list.add(new User(2,"wangwu",21));
    list.add(new User(3,"zhaosi",33));
    return list;
}

 

5、@RequestMapping 后,返回值通常解析为跳转路径


6 、@ControllerAdvice,处理异常

@PathVariable绑定URI模板变量值

1
2
3
@RequestMapping("/{userId}/ac.do")
public ModelAndView ac(@RequestParam(value="username", required=true, defaultValue="zhang") String a,
        @PathVariable(value="userId") String userId){

 



@RequestParam使用示

相当于request.getParameter(“参数名”)

1
2
3
4
5
6
public ModelAndView hello(@RequestParam(value="ids", required=true, defaultValue="111") Integer id,Model map){
        System.out.println("id=="+id);
//      return null;
        map.addAttribute("id", id);
        return new ModelAndView("hello");
    }

 

 

@RequestHeader用于将请求的头信息区数据映射到功能处理方法的参数上

@ModelAttribute绑定请求参数到命令对象

@CookieValue用于将请求的Cookie数据映射到功能处理方法的参数上

@Value用于将一个SpEL表达式结果映射到到功能处理方法的参数上

@Valid在参数类上和@NotEmpty在实体上,控制参数不为空。

 

posted @ 2018-06-12 22:01  书晨007  阅读(133)  评论(0)    收藏  举报
将时间精确到分,将获得较高的效率!