【发布时间】:2021-02-11 07:18:02
【问题描述】:
servlet 不做重定向,使用 Spring Boot 2.4.1。下面是代码和cmets。
类小服务程序
code
@WebServlet(name = "estore",
urlPatterns = {"/"},
loadOnStartup = 1)
public class EstoreServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
IOException{
// Here logic and after need redirect
response.sendRedirect("/index.html");
}
}
来自请求的信息
code
Session - org.apache.catalina.session.StandardSessionFacade@2e555cdd
Servlet path - /
Server name - localhost
Local name - 0:0:0:0:0:0:0:1
Local addr - 0:0:0:0:0:0:0:1
Get Remote user - null
Get method - GET
Get protocol - HTTP/1.1
Get content type - null
Get server port - 8080
Get sheme - http
Get Request URI - /
Get Context Path -
Spring MVC 配置文件
code
@Configuration
@ServletComponentScan(basePackages = "internet_store.web_ui.servlet")
@EnableWebMvc
public class MvcConfiguration implements WebMvcConfigurer {
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver resourceViewResolver = new SpringResourceTemplateResolver();
resourceViewResolver.setPrefix("classpath:/templates/internet_store/");
resourceViewResolver.setSuffix(".html");
resourceViewResolver.setTemplateMode(TemplateMode.HTML);
resourceViewResolver.setCharacterEncoding("UTF-8");
resourceViewResolver.setCheckExistence(false);
return resourceViewResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry
.addResourceHandler("/resources/**")
.addResourceLocations("/resources/", "classpath:/templates/internet_store/")
.setCachePeriod(320000)
.resourceChain(true)
.addResolver(new PathResourceResolver());
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable("estore");
}
}
此代码在浏览器 ERR_TOO_MANY_REDIRECTS 中返回错误。如果在控制器集中返回“redirect:/foo”,那么重定向也不做。下面的例子。
code
@GetMapping(value = "/back_client")
public String backButtonClientFormPressed() {
return "service/service";
}
index.html 有带方法的控制器
code
@GetMapping(value = "/index")
public String index(ModelMap modelMap) {
updatePage();
Path resourceDirectory = Paths.get("resources");
modelMap.addAttribute("error", "");
refreshData(modelMap);
return "index";
}
将服务/服务更改为重定向:/索引将出现错误 ERR_TOO_MANY_REDIRECTS。也许资源路径有问题?感谢您的关注。
【问题讨论】:
标签: java spring spring-mvc