JavaEE Spring MVC 常用注解

@RequestMapping

       ⽤来注册接⼝的路由映射。当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类的某个⽅法的过程就叫路由映射。

@Controller //类注解不能忘
@RequestMapping("/webcontroller")
public class WebController {

    @RequestMapping("/sayhi")
    public String sayHi() {
        return "Hi~";
    }
}

通过输入网址localhost:8080/webcontroller/sayhi就可以访问到。但是实际上你看到的又不一样。

对于上述的情况,在确定你的URL正确的情况下,我们需要另外加一个注解:@ResponseBody,加在类上。就可以让页面打印出来Hi~。

@ResponseBody

        @ResponseBody的作用是将Java对象转为某种格式的数据,用来返回JSON数据或者XML数据。SpringMVC模型如下:

        没有加这个注解的时候,Controller返回的数据将经过View,经过View转发后返回给客户端,而加了注解,相当于将数据直接返回给客户端。View表示视图的意思,也就是说,如果没有加该注解,View希望拿到一个html页面。

现在写一个简单的html页面,后端返回该页面。看看没有加@ResponseBody:

@Controller
// @ResponseBody
@RequestMapping("/webcontroller")
public class WebController {

    @RequestMapping("/sayhi")
    public Object sayHi() {
        return "/index.html";
    }
}
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<div>
    <h1>Hello World!</h1>
</div>
</body>
</html>

加了@ResponseBody:

当然,如果我们这样写代码: 

 

这是浏览器自动解析的结果。

        @ResponseBody注解使用的地方非常多,和@Controller组合起来一个新的注解叫@RestController,起到@ResponseBody+@Controller的作用。

@RequestMapping是post请求还是get请求

前面我们说@RequestMapping注解,那么他是post请求还是get请求?使用PostMan快速测试。

        可以看出, @RequestMapping既可以是post也可以是get请求。但是一般情况下,我们并不希望一个方法可以解析多个请求,要么只解析get请求,要么只解析post请求。我们可以通过method来指定。

发送get请求:

更简单的写法:@GetMapping 和 PostMapping

@GetMapping 和 PostMapping

@Controller
@ResponseBody
@RequestMapping("/webcontroller")
public class WebController {

    @GetMapping("/getmapping")
    public String getMapping() {
        return "getMapping";
    }
}

发送get请求: 

@Controller
@ResponseBody
@RequestMapping("/webcontroller")
public class WebController {

    @PostMapping("/postmapping")
    public String postMapping() {
        return "postMapping";
    }
}

发送post请求:

传递参数

        以前什么传递参数,现在仍然什么传递参数,非常的方便。可以传单个参数,也可以传多个参数,还可以传一个对象,这里不在演示。

    @GetMapping("/getmapping")
    public String getMapping(String name) {
        return "name: " + name;
    }

@RequestParam后端参数重命名

        某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 不⼀致,这个时候,我们可以使用@RequestParam注解来重命名。 

        但是这样的话,他只能获取前端传来的prename。如果前端传来别的参数,也会报错,所以需要另外加一个required属性,值为false,用来指定prename是不是必须要传的。

@RequestBody

用来接受json格式的对象。如果不加该注解,是获取不到参数的。同时,需要传给一个对象。

        使用HashMap作为返回值的原因是他也是key-value格式,返回给前端就会被转化成json。当然,你返回User的对象也是可以的,符合key-value的格式。

@Data //需要添加lombok支持
public class User {

    private String name;
    private Integer password;
}

    @RequestMapping("/jsonlogin")
    public User jsonLogin(@RequestBody User user) {
        User user1 = new User();
        user1.setName(user.getName());
        user1.setPassword(user.getPassword());
        return user1;
    }

@PathVariable 

        这个参数用来获取URL中的参数。

    @RequestMapping("/pathvariable/{name}/{password}")
    public String pathVariable(@PathVariable String name,@PathVariable Integer password) {
        return "name: " + name + " | password: " + password;
    }

@RequestPart

        用来上传文件。

    @RequestMapping("/requestpart")
    public String requestPart(String name, @RequestPart("myfile") MultipartFile file) {
        try {
            file.transferTo(new File("E:\\Git\\java-learning\\22_java_12\\java_12_01\\java120101\\src\\main\\resources\\static\\image\\img.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }

        return "success!";
    }

@CookieValue

        获取cookie。

    @RequestMapping("/getcookie")
    public String getCookie(@CookieValue("name") String name,
                            @CookieValue("password") Integer password) {
        return "name: " + name + " | password: " + password;
    }

 读取Session

        @SessionAttribute用来获取session。

    //先设置session    
    @RequestMapping("/setsess")
    @ResponseBody
    public String setSess(HttpServletRequest request) {
        HttpSession httpSession = request.getSession(true);
        if (httpSession != null) {
            httpSession.setAttribute("name", "111");
        }
        return "session";
    }

    @RequestMapping("getsess")
    @ResponseBody
    public String getSess(@SessionAttribute(value = "name", required = false) String name) {
        return name;
    }

读取请求头

使用@RequestHeader注解。

    @RequestMapping("/getheader")
    public String getHeader(@RequestHeader("user-Agent") String userAgent) {
        return userAgent;
    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建Spring MVC环境,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了Java开发工具包(JDK)和一个Java集成开发环境(IDE),比如Eclipse或IntelliJ IDEA。 2. 创建一个新的Maven项目。在IDE中选择创建一个新的Maven项目,并选择适当的参数和配置。 3. 在项目的pom.xml文件中添加Spring MVC的依赖。可以通过以下方式添加Spring MVC的依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.9</version> </dependency> ``` 4. 创建一个Spring MVC的配置文件。在src/main/resources目录下创建一个名为`springmvc-servlet.xml`的文件,并添加以下内容: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 启用Spring MVC注解驱动 --> <mvc:annotation-driven/> <!-- 定义控制器扫描包 --> <context:component-scan base-package="com.example.controllers"/> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans> ``` 5. 创建一个控制器类。在com.example.controllers包下创建一个新的类用于处理请求和响应,例如: ```java @Controller public class HomeController { @RequestMapping("/") public String home() { return "home"; } } ``` 6. 创建视图文件。在src/main/webapp/WEB-INF/views目录下创建一个名为`home.jsp`的文件,并添加相关内容。 7. 配置Web部署描述符。在src/main/webapp/WEB-INF目录下创建一个名为`web.xml`的文件,并添加以下内容: ```xml <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/springmvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` 8. 运行应用程序。启动你的应用程序,并在浏览器中访问http://localhost:8080/。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值