我有一个Spring Boot web应用程序,它可以服务于静态页面和基于控制器的页面(ModelAndView)。问题是,控制器可以提供类似于<代码>/{字符串}的服务,而静态页面必须提供<代码>/测试。
问题是控制器映射优先,我需要避免这种情况。如果用户点击测试,则必须将其转发到测试。html静态页面。
我尝试以这种方式使用ViewControlller注册表的order属性,但没有成功:
@Configuration
public class MyWebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/test").setViewName("forward:/test.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE); // but I tried with 0 and -1 as well: annotated controllers should have order equals to 0
}
}
这是我的SpringBootApplication类:
@SpringBootApplication
public class VipApplication {
public static void main(String[] args) {
SpringApplication.run(VipApplication.class, args);
}
}
这是控制器代码:
@Controller
public class VipController {
@RequestMapping(value = "/{string}")
public ModelAndView vip(@PathVariable("string") String string) {
ModelAndView mv = new ModelAndView("mypage");
return mv;
}
}
如何重新排序映射以确保在注释控制器之前考虑静态页面?
(我不确定,但)我建议重写WebMVCConfigureAdapter。addResourceHandlers()方法,并通过调用ResourceHandlerRegistry配置资源处理程序的顺序。setOrder()
我有如下控制器方法: 我有URLlocalhost:8080/login/do作为方法内部登录过程方法的URL,一些业务逻辑是在执行时编写的,它将带我到一些页面candidate.html、passworderror.html等,但是在移动到URL显示为localhost:8080/login/candidate.jsp的任何页面时,我不希望 /login出现在URL中。强文本,因为如果我向前移动
和我的disparcher上下文: 即使我添加了@service和@repositort(“userdao”)
我想创建Spring boot Web应用程序。 我有两个静态html文件:一个。html,两个。html。 我想将它们映射如下 不使用模板引擎(Thymeleaf)。 如何做到这一点?我已经尝试了很多方法来实现这一点,但我有404个错误或500个错误(循环视图路径[one.html]:将调度回当前处理程序URL)。 OneController.java是: 项目结构为
当存在多个时,视图解析器如何确定要加载哪个控制器。 我正在从头开始学习Spring,正如我的导师所说,我们只需要一个带有注释的控制器类。如果我有多个带有注释的类,以及如何确定要加载哪个控制器类,因为Spring是Singleton,并且只有一个控制器类存在。
有类似的主题,但它们都使用xml配置文件。我之所以写这个问题,是因为我使用了注释。 我在运行应用程序时遇到问题: 在尝试设置Spring servlet时,获取WARNorg.springframework.web.servlet.PageNotes-未找到HTTP请求与URI的映射 尝试在服务器上运行时出现错误404 以下是我的代码(跳过包和导入): 1)初始化器 2)应用配置 3)控制器 控制