我正在构建一个spring boot应用程序。我的问题是,当我运行项目时,我的登录页面没有显示。这是我的代码:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class RestLogin {
@RequestMapping("/")
public String login() {
return "login";
}
}
我只获得一个白页和"登录"写在里面。当我尝试使用@RestController
更改@Controller
时,我得到GET http://localhost:8080/ 404 ()
。我的login.html页面位于webapp> tpl> login.html
如何显示登录页面?
修改
这是我的应用程序类
@SpringBootApplication
public class ExampleApplication extends SpringBootServletInitializer {
private static Logger logger = LoggerFactory.getLogger(ExampleApplication.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(ExampleApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}
}
答案 0 :(得分:2)
我不知道你的配置,但是:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests()
.antMatchers("/**").permitAll();
http.authorizeRequests().antMatchers("/**").permitAll();
}
}
在Application.properties文件中添加:
spring.mvc.view.suffix: .html
将RestLogin类的@RestController
更改为@Controller
。还将您的html文件放在资源文件夹内的静态文件夹中。
答案 1 :(得分:0)
您需要一个带有main方法的应用程序类。请参阅this tutorial。
这是一个片段:
package hello;
import java.util.Arrays;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
System.out.println("Let's inspect the beans provided by Spring Boot:");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
};
}
}
答案 2 :(得分:0)
这是正常行为。
新版本的Spring网站附带@RestController注释,除了@Controller
+ @ResponseBody
之外什么都没有。因此,当您在方法中使用return语句时,必须使用@RestController
或使用@ResponseBody
注释您的方法。
这里的问题是Spring对http方法类型了解不多,请你尝试使用@GetMapping("/")
同时组合路径和方法。
答案 3 :(得分:0)
根据您发布的代码和说明,您会收到预期的行为。
当您使用@RestController
注释控制器时,这意味着该控制器上的方法将尝试将其结果作为JSON返回。
根据你的代码:
@RestController
public class RestLogin {
@RequestMapping("/")
public String login() {
return "login";
}
}
你正在返回字符串“登录”,这就是为什么你得到空白页,其中登录一词为JSON
如果您将@RestController
更改为@Controller
,那么它将不再将您的字符串作为JSON返回,
但是Spring会尝试从“login”字符串中找出一个视图,为此您需要在项目中添加一个视图解析器bean。