You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中Circular view path [login]错误排查与解决咨询

循环视图路径错误排查与解决方案

错误原因

Circular view path [login] 核心问题是:DispatcherServlet解析视图名login时,找不到对应的物理JSP文件,默认将视图名当作请求路径转发,导致再次触发/login请求,形成循环调用。

逐步排查与解决

1. 补全JSP依赖

Spring Boot默认不内置JSP支持,必须手动添加依赖:

  • Maven(pom.xml):
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
  • Gradle(build.gradle):
implementation 'javax.servlet:jstl'
providedRuntime 'org.apache.tomcat.embed:tomcat-embed-jasper'

2. 配置视图解析器参数

在application.properties或application.yml中设置JSP文件的前缀和后缀,要和文件实际位置对应:

# application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

比如你的login.jsp放在src/main/webapp/WEB-INF/jsp/目录下,上述配置可正确定位文件;若文件位置不同,调整前缀路径即可。

3. 修正LoginController写法

  • 必须用@Controller注解,不能用@RestController(后者会把返回值直接输出为JSON,不会解析视图)。
  • 方法返回纯视图名,不要加额外路径:
@Controller
public class LoginController {
    @GetMapping("/login")
    public String showLoginPage() {
        return "login"; // 对应前缀+login+后缀的JSP路径
    }
}

4. 调整WebSecurityConfig拦截规则

确保Spring Security不拦截JSP文件和登录页请求:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/WEB-INF/jsp/**").permitAll() // 允许访问JSP目录
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login") // 与Controller映射URL一致
                .permitAll();
    }
}

5. 确认项目结构与打包方式

  • JSP文件必须放在src/main/webapp/目录下,仅WAR打包支持该目录;如果是JAR打包,Spring Boot不支持JSP,需改成WAR打包(pom.xml中设置<packaging>war</packaging>),或替换为Thymeleaf等支持JAR的模板引擎。

内容的提问来源于stack exchange,提问作者Ganiel24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:22:14