注解(annotation)

目录

java注解

SpringMVC注解

restEasy注解

 Json注解:

@JsonInclude(JsonInclude.Include.NON_NULL)    // 忽略null值
@JsonIgnoreProperties(ignoreUnknown = true)     // 忽略不匹配的值

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") //日期格式化

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",locale = "zh", timezone = "GMT+8")  //如果有时区差请用这种

 

 

Spring注解

spring参考网址:

  API地址:http://docs.spring.io/spring/docs/current/javadoc-api/

     使用说明地址: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/

       官网:http://projects.spring.io/spring-framework/

@RequestMapping

访问请求路径,可以对象,方法都加上,如下面的例子,访问路径就为  uri = /rest/mytest/a/myPage,

也可以设置接收类型POST|GET

@RequestMapping(value="/suggestInfoSubmit",method=RequestMethod.POST)
@Controller
@RequestMapping("/rest/mytest/a") public Class A{   @RequestMapping("/myPage")   public String getMyPage(){
       } } 

requestMapping还支持多个地址

 

@RequestMapping(value= {"/index","/login","/"})

 

将method简化就为:GetMapping/ PostMapping

 

@ResponseBody

 如果在方法上设置有,则返回内容,而非指向的jsp页面,否则就是查找对应的jsp页面显示。

@RequestMapping(value="/suggestInfoSubmit",method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> submitSuggestInfo(@ModelAttribute GroupSuggestVO suggestVO,HttpServletRequest request){

 不写返回String指向jsp页面

@RequestMapping(value = "/suggestPage")
public String getSuggestPage(Model model,HttpServletRequest request,HttpServletResponse response) throws ClientProtocolException, IOException {
logger.debug(">>>getSettingSuggestPage(Model model,HttpServletRequest request,HttpServletResponse response)");
logger.debug("<<<getSettingSuggestPage(Model model,HttpServletRequest request,HttpServletResponse response)");
return PAGE_SETTING_SUGGEST;

参数:

@PathVariable

 获取路径参数,restful接口使用uri访问方式,即url的路径名称是参数的一部分。多用于GET请求。比如根据personID查找人员信息就可使用uri中加入员工ID的形式。

@RequestMapping(value="/suggestInfoSubmit/{id}",method=RequestMethod.GET)
@ResponseBody
public Map<String, Object> submitSuggestInfo(@PathVariable String 
 id,HttpServletRequest request){

@RequestParam

获取request中的参数

$.ajax({
url:url,
data:{name:name}
})

public Map<String, Object> submitSuggestInfo(@RequestParam("name") String userName,HttpServletRequest request){

 @RequestBody

获取request中的所有参数,这种方式适合于复杂数据提交,数组,POJO对象中包含对象,或list对象。

这种方式需要将request的ajax提交 contentType:'application/json',同时将data数据 JSON.stringify。ajax默认为:( "application/x-www-form-urlencoded")

jsp:
$.ajax({ url :
'****', contentType: 'application/json', data: JSON.stringify(person) }) java: @RequestMapping('') public Map<String,Object> submitInfo(@RequestBody Person person){ }

 注意:如果提交的数据是List对象类型,后台如果直接List<User> userList,接到的实质是List<LinkedHashMap>而非user对象,需要使用 User[] user来接收对象。

@ModelAttribute

@ModelAttribute可以添加在一个方法上,也可以标注在参数上。

方法上作用,大多用于整个类的所有方法的初始化操作,在进入指定的uri对应的方法前,首先执行这个类中的@ModelAttribute修饰的方法,然后再转入到实际请求方法中。

@ModelAttribute
public void init(){
    system.out.println('**1***');
}

@RequestMapping("***")
public  String getTest(){
  system.out.println('**2***');
}

 

注意:@ModelAttribute标注在方法上,如果有return值,则自动会装入到Model中。名字则为指定的名字。

@ModelAttribute(value="user")
public User getUser(@RequestParam String id){
     User users = new User("123", "张三");
     return users;
}

EL表达式接收:  ${requestScope.user.name}


相当于:
@ModelAttribute
public void getUser(@RequestParam String id, Model model){
     User users = new User("123", "张三");
     model.addAttribute("user", users);
}

 

如果@ModelAttribute和@RequestMapping作用于一个方法,则返回的是Model对象而非视图地址。因此要注意。

@RequestMapping(".....")
@ModelAttribute(value="user")
public String getUser(@RequestParam String id){
     User users = new User("123", "张三");
     return "user_page";
}

----------------
结果:
不会跳转到jsp页面。
EL表达式接收  ${user}    ---结果:   user_page

 

@ModelAttribute添加在参数上可以接收另外一个方法中添加到Model中的内容。

因Model中的方法只有addAttribute()方法,没有get方法,因此对于forward的形式,可以将前一个方法中加工获取的内容放入到model中,在需要的方法中@ModelAttribute来获取。

@ModelAttribute(value="user")
public User getUser(@RequestParam String id){
     User users = new User("123", "张三");
     return users;
}


@RequestMapping(....)
public void getUser(@ModelAttribute('user') User user, Model model){
     User users = new User("123", "张三");
}

 

转载于:https://www.cnblogs.com/DennyZhao/p/7010312.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值