Spring MVC页面跳转报404的问题

本文详细解析了SpringMVC项目中常见的404错误,主要针对两种情况:部署项目时路径使用项目名导致的问题及部署时未使用项目名的情况。文章提供了三种解决方案,包括调整前端页面的action属性、创建WebPathInitServlet类以及直接修改部署设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写了一个Spring MVC的Demo复习一下,结果发现一直有问题,当前端页面输入用户名和密码,发到controller,但是一跳转就报404,但是controller可以进去的问题
  • 登录界面代码如下
    在这里插入图片描述
  • controller部分代码

在这里插入图片描述

  • 跳转前页面
    在这里插入图片描述
  • 跳转结果:
    在这里插入图片描述
    出现这种问题有两种情况的,
原因一(这种情况是部署项目的时候路径使用了项目名):在这里插入图片描述
  • 细心的话能发现,跳转前后页面的url出现了问题,跳转前有项目名,跳转后没有项目名了,根本原因在于前端页面的<form标>签提交路径action的问题,路径action="/login",这个前面加上“/”就代表从根目录跳转,根目录就会抹掉你的项目名,这样肯定找不到你实际要跳转的位置,但是如果删掉“/”同样无法跳转
  • 解决方法一:在action的跳转路径把项目也补上,就是action="/项目名/login"。
  • 解决方法二:这种方法比较推荐,因为之后所有的位置都可以通用
    在java下创建一个util包,创建WebPathInitServlet类
    在这里插入图片描述
    代码如下:
@WebServlet(urlPatterns = {},loadOnStartup = 2)
	public class WebPathInitServlet extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
        //在整体应用上下文当中存储了一个ctx的值,用它来引用上下文路径.
        config.getServletContext().setAttribute("ctx",config.getServletContext().getContextPath());
        super.init(config);
    }
}
  • 然后就可以在任何可能造成路径错误的地方写成 action="${ctx}/login" 这种形式
    **解决方法三:**直接删掉部署的时候的项目名
    在这里插入图片描述
原因二(这种情况是部署项目的时候路径本来就没有使用项目名):

前端:通过链接跳转到login的controller,并且使用链接传值
在这里插入图片描述

controller部分
在这里插入图片描述
跳转结果:
在这里插入图片描述
依旧是路径的问题,检查自己的springMVC视图解析器
在这里插入图片描述
在jsp前面加上"/"即可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值