💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 在 Spring 中实现控制器 > 原文: [https://javatutorial.net/implementing-controllers-in-spring](https://javatutorial.net/implementing-controllers-in-spring) 控制器在 Spring 中的主要目的是拦截传入的 http 请求,将数据发送到模型进行处理,最后从模型中获取处理后的数据,然后将完全相同的数据传递给要呈现它的视图。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) 上面所写内容的顶级概述: ![Controllers in Spring example](https://img.kancloud.cn/e5/5b/e55bfdbf997a42f5e06bb5f246072e57_646x480.jpg) Spring 工作流程 现在,让我们构建一个简单的应用程序,作为在 Spring 中实现控制器的示例。 当您要“声明”一个类作为控制器时,就像使用`@Controller`对其进行注释一样简单。 在类级别使用时,控制器现在可以处理 REST API 请求。 ### `GetMapping`注解 当使用`@Controller`注解时,可以通过使用该方法的`RequestMapping`注解来提供请求映射。 还有`@RequestMapping`,`@PostMapping`,`@PutMapping`可以简化常见 HTTP 方法类型的映射。 ```java package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @RestController @SpringBootApplication public class DemoApplication { @GetMapping("/") String home() { return "Greetings from Java Tutorial Network"; } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 上面的代码段,我们创建了一个`DemoApplication`,其注释为`@Controller`和`@SpringBootApplication`。 请注意`@GetRequest("/")`的使用。 这就是说`home()`方法将显示注释中放置的内容,在本例中为`"/"`,即`http://localhost:8080/`。 在示例中,我使用的是`@RestConroller`,它基本上是控制器的专用版本,其中包括`@Controller`和`@ResponseBody`注解。 它只是简化了控制器的实现。 当我们运行上面的代码时,我们得到以下结果: ![Controllers implementation Spring](https://img.kancloud.cn/32/54/32540e6a32fa5c50e83811690633e3fb_961x178.jpg) 输出量 如果我们想实现一个简单的登录功能,我们将执行以下操作: ```java package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/account/*") public class AccountController { @RequestMapping public String login() { return "login"; } } ``` 我们在这里所做的是,我们对类`AccountController`和方法`login()`都进行了注释。 当访问`http://localhost:8080/account/`时,我们将被带到登录页面。 请注意网址末尾的`"/"`。 如果不存在,例如`http://localhost:8080/account`,将导致错误。 我在`account/`之后加上`*`的原因是,如果我们想向其添加更多内容(例如注册),则该 URL 将能够处理具有不同路径的所有请求。 但就目前而言,我们将仅坚持登录。 接下来,我们需要为登录创建一个类,并将其注释为`@Controller`: ```java package com.example.demo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("/account/login") public class Login { @GetMapping public String login() { return "login"; } } ``` 现在,当我们访问`http://localhost:8080/account/login`时,它将返回`login.jsp`文件中的内容。