java - Spring MVC 处理未映射的请求

标签 java spring spring-mvc

我正在启动一个项目,所有 html 页面都已准备好。所以,现在我必须创建所有 Controller 来处理请求并显示 View 。在创建所有 Controller 之前,我是否可以有一个“通用” Controller 来获取与路线相对应的 View 。

比如我有spring mvc+thymeleaf。我的所有 .html 都位于 WebContent/WEB-INF/templates 中,并带有解析器:

private ITemplateResolver templateResolver() {
    SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
    resolver.setApplicationContext(applicationContext);
    resolver.setPrefix("/WEB-INF/templates/");
    resolver.setTemplateMode(TemplateMode.HTML);
    return resolver;
}

我创建的第一个也是唯一一个 Controller 是:

@RequestMapping(value = "/", method = RequestMethod.GET)
public String login(Model model) {
    return "authentication/login.html";
}

那么,我可以有一个“通用” Controller 来处理其余的请求,这样如果你写“http://localhost:8080/authentication/register.html” ',通用 Controller 将获取'authentication/register.html'中的 View ?

最佳答案

如果模板是静态的,您可以将它们作为资源提供。阅读 spring documentation on that topic .

基本上看起来像

<mvc:resources mapping="/**" location="/WEB-INF/templates/"/>

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("/WEB-INF/templates/");
    }

}

取决于项目中 spring 配置的类型。

关于java - Spring MVC 处理未映射的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394834/

相关文章:

java - mysql中数据库的创建和删除

java - 无法在 Ubuntu 上使用 JDK 9 启动 Eclipse Neon - 退出代码 = 13

java - 初始化对象并稍后根据 if 语句中的值创建它

spring - 使用 JpaRepository 的动态搜索查询

java - 在 Spring Controller 中维护相同的 session

java - 如何设置JDK版本来编译JSP页面?

java - Spring 3 的新特性是什么(与 Spring 2.5 相比)?

java - 现有对象的编辑应该在存储库层还是在服务中完成?

java - Spring Boot 导入信任库

mysql - 开源应用服务器解决方案