Spring MVC的常用注解

一 点睛

1 @Controller

@Controller注解在类上,表明这个类是Spring MVC里的Controller,将其声明为Spring的一个Bean,Dispatch Servlet会自动扫描注解了此注解的类,并将Web请求映射到注解了@RequestMapping的方法上,需要注意的是,在Spring MVC声明控制器Bean的时候,只能使用@Controller。

2 @RequestMapping

@RequestMapping注解是用来映射Web请求(访问路径和参数)、处理类和方法的。它可以注解在类和方法上。注解在方法上的@RequestMapping路径会继承注解在类上的路径,@RequestMapping支持Servlet的request和response作为参数,也支持对它们的媒体类型进行配置。

3 @ResponseBody

@ResponseBody支持将返回值放在response体内,而不是返回一个页面。我们很多机遇Ajax的程序,可以以此注解返回数据而不是返回页面;此注解可以放在返回值或者方法上。

4 @RequestBody

@RequestBody允许request的参数在request体中,而不是在直接链接在地址后面。此注解放在参数前。

5 @PathVariable

@PathVariable 用来接收路径参数,如/news/001,可接收001作为参数,此注解放置在参数前。

6 @RestController

@RestController是一个组合注解,组合了@Controller和@ResponseBody,意味着当只开发一个和页面交互数据的控制的时候,需要使用此注解。 若没有此注解,要想实现上述功能,则需自己在代码中加@Controller和@ResponseBody两个注解。

二 实战

1 添加pom.xml

<!--对json和xml格式的支持 -->
<dependency>
     <groupId>com.fasterxml.jackson.dataformat</groupId>
     <artifactId>jackson-dataformat-xml</artifactId>
     <version>2.5.3</version>
</dependency>

2 模型类

package com.wisely.highlight_springmvc4.domain;
public class DemoObj {
     private Long id;
     private String name;
     //jackson对对象和json做转换时一定需要此空构造函数

     public DemoObj() {
          super();
     }
     public DemoObj(Long id, String name) {
          super();
          this.id = id;
          this.name = name;
     }
     public Long getId() {
          return id;
     }
     public void setId(Long id) {
          this.id = id;
     }
     public String getName() {
          return name;
     }
     public void setName(String name) {
          this.name = name;
     }
     
     
}

3 注解演示控制器

package com.wisely.highlight_springmvc4.web.ch4_3;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.wisely.highlight_springmvc4.domain.DemoObj;

@Controller // 声明此类是一个控制器
@RequestMapping("/anno") //映射此类的访问路径是/anno
public class DemoAnnoController {

    // 此方法未标注路径,因此使用类级别的路径/anno,produces可定制返回的response
    //媒体类型和字符集,或需返回值是json对象,则设置produces="application/json;charset="UTF-8"
    @RequestMapping(produces = "text/plain;charset=UTF-8")    
    // 演示可接受HttpServletRequest作为参数,当然也可接受HttpServletResponse作为参数。
    //此处@ResponseBody用在返回值前面
    public @ResponseBody String index(HttpServletRequest request) {
        return "url:" + request.getRequestURL() + " can access";
    }
    //演示接收路径参数,并在方法参数前结合@PathVariable使用,访问路径为/anno/pathvar/xx
    @RequestMapping(value = "/pathvar/{str}", produces = "text/plain;charset=UTF-8")
    public @ResponseBody String demoPathVar(@PathVariable String str,
            HttpServletRequest request) {
        return "url:" + request.getRequestURL() + " can access,str: " + str;
    }
    //演示常规request参数获取,访问路径为/anno/requestParam/id=1
    @RequestMapping(value = "/requestParam", produces = "text/plain;charset=UTF-8") 
    public @ResponseBody String passRequestParam(Long id,
            HttpServletRequest request) {
        
        return "url:" + request.getRequestURL() + " can access,id: " + id;

    }
    //演示解释参数到对象,访问路径为/anno/obj/id=1&name=xx
    @RequestMapping(value = "/obj", produces = "application/json;charset=UTF-8")
    @ResponseBody //也可用在方法上
    public String passObj(DemoObj obj, HttpServletRequest request) {
        
         return "url:" + request.getRequestURL()
                     + " can access, obj id: " + obj.getId()+" obj name:" + obj.getName();

    }

    //演示不同路径到相同的方法上,访问路径为/anno/name1或/anno/name2
    @RequestMapping(value = { "/name1", "/name2" }, produces = "text/plain;charset=UTF-8")
    public @ResponseBody String remove(HttpServletRequest request) {
        
        return "url:" + request.getRequestURL() + " can access";
    }

}

4 @RestController演示控制器

package com.wisely.highlight_springmvc4.web.ch4_3;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.wisely.highlight_springmvc4.domain.DemoObj;

@RestController //声明是控制器,并且返回数据时不需要@ResponseBody
@RequestMapping("/rest")
public class DemoRestController {
    
    @RequestMapping(value = "/getjson",
            produces={"application/json;charset=UTF-8"}) //返回数据的媒体类型是json
    public DemoObj getjson (DemoObj obj){
        return new DemoObj(obj.getId()+1, obj.getName()+"yy");//直接返回对象,对象会自动转换成json
    }
    @RequestMapping(value = "/getxml",
            produces={"application/xml;charset=UTF-8"})//返回数据的媒体类型为xml
    public DemoObj getxml(DemoObj obj){
        return new DemoObj(obj.getId()+1, obj.getName()+"yy"); //直接返回对象,对象会自动转换为xml
    }

}

三 测试

 

  • 7
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring MVC中,有一些常用注解可以用于标记控制器类和处理请求的方法。其中,@Controller是用于标记一个类为Spring MVC的控制器类,但它本身并不能使Spring认识它,真正处理请求的是使用@RequestMapping注解的方法。 另一个常用注解是@RequestMapping,它用于映射请求的URL到相应的处理器方法上。通过在方法上添加@RequestMapping注解,并指定相应的URL路径,可以将请求映射到对应的方法进行处理。 除了@Controller和@RequestMapping之外,还有一些其他常用注解。比如,@ResponseBody用于将方法的返回值直接作为响应体返回给客户端,而不进行视图解析。@RequestParam用于获取请求参数的值。@PathVariable用于获取URL路径中的参数值。这些注解可以更灵活地处理请求和响应。 此外,还有一些用于依赖注入的注解,比如@Resource和@Autowired。虽然@Resource不是Spring注解,但Spring支持该注解的注入。这两个注解可以用于将其他组件或bean注入到控制器或其他类中,以便在其中使用。 综上所述,常用Spring MVC注解包括@Controller、@RequestMapping、@ResponseBody、@RequestParam、@PathVariable、@Resource和@Autowired。这些注解Spring MVC框架中起到了不同的作用,可以帮助我们更好地进行请求处理和依赖注入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [spring mvc常用注解标签](https://blog.csdn.net/XYC3939/article/details/102298463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [SpringMVC常用注解](https://blog.csdn.net/skyxxy123/article/details/127532094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值