在Spring实施控制器
控制器在Spring中的主要用途是拦截传入的http请求,将数据发送到模型进行处理,最后从模型中获取处理后的数据,并将相同的数据传递给视图,视图将呈现这些数据。
对上述内容的最高层概述:
Spring工作流程
现在,让我们构建一个简单的应用程序,作为如何在Spring中实现控制器的示例。
当你想“声明”一个类为controller时,只需用*@controller*对它进行注释就可以了。当在类级别使用时,控制器现在可以为restapi请求提供服务。
GetMapping注释
使用*@Controller注释时,可以通过对方法使用RequestMapping注释来提供请求映射。还有@RequestMapping、@PostMapping、@PutMapping*简化了常见HTTP方法类型的映射。
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注释。它只是简化了控制器的实现。
当我们运行上面的代码时,我们得到以下结果:
输出
如果我们想实现一个简单的登录功能,我们将执行以下操作:
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/被访问,我们将进入登录页面。请注意url末尾的“/”。如果它不在那里,例如http://localhost:8080/帐户,将导致错误。
我在account/后面加上“*”是因为如果我们想添加更多内容,比如signup,URL将能够处理具有不同路径的所有请求。
目前,我们将坚持只登录。接下来我们需要做的是为登录创建一个类,并将其注释为@Controller:
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它将返回登录.jsp“文件。