在Spring实施控制器

时间:2020-02-23 14:34:25  来源:igfitidea点击:

控制器在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“文件。