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在实体上,控制参数不为空。

 

转载于:https://www.cnblogs.com/shuchen007/p/9175269.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值