Spring 5 Web应用升级后无法找到login.html页面求助
Spring 5升级后登录页面404排查方案
1. 核查Spring Security配置(security.xml)
- 确认登录页面配置路径与请求路径匹配,比如
login-page="/login.html"需和实际访问路径一致 - 必须开放登录页面的匿名访问权限,示例配置:
<security:intercept-url pattern="/login.html" access="permitAll()"/> - 验证表单登录的
login-processing-url是否与表单提交路径或controller处理路径对齐
2. 检查Spring MVC配置(spring-servlet.xml)
- 确认视图解析器的前缀、后缀配置正确,确保能定位到
login.jsp:
比如前缀设为<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean>/WEB-INF/jsp/时,login.jsp需放在WEB-INF/jsp/目录下 - 确保开启注解驱动
<mvc:annotation-driven/>,保证LoginLogoutController的@RequestMapping能被识别 - 检查组件扫描配置是否覆盖了
LoginLogoutController所在包:<context:component-scan base-package="com.yourpackage.controller"/>
3. 校验LoginLogoutController代码
- 确认控制器中存在处理
GET /login.html的方法,示例:@Controller public class LoginLogoutController { @GetMapping("/login.html") public String showLoginPage() { return "login"; // 对应视图解析器拼接后的login.jsp } } - Spring 5推荐用
@GetMapping替代Spring 4的@RequestMapping(method = RequestMethod.GET),若使用旧注解需确认兼容性 - 检查控制器类是否标注
@Controller注解,且被Spring容器成功扫描实例化
4. 检查web.xml配置
- 确认Spring MVC的DispatcherServlet映射路径覆盖
/login.html,示例:<servlet-mapping> <servlet-name>spring-servlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> - 排查是否有其他过滤器或Servlet拦截
/login.html请求,导致DispatcherServlet无法处理
5. 路径与日志验证
- 日志显示“没有GET /app-system-web/login.html的映射”,注意
/app-system-web是应用上下文路径,controller的@RequestMapping只需写/login.html,上下文路径由容器自动拼接,无需手动写在映射中 - 查看Spring启动日志,确认
LoginLogoutController是否被成功注册,以及它的请求映射是否正确加载
6. 静态资源与视图位置排查
- 若
login.html是静态页面,需放在webapp根目录下,同时配置Spring MVC允许访问静态资源:<mvc:resources mapping="/login.html" location="/login.html"/> - 若为JSP视图,必须放在WEB-INF下(或视图解析器配置的路径),不能直接访问,需通过controller转发
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

