springmvc的路径问题

本文总结了在SpringMVC项目中遇到的路径问题,包括相对路径、绝对路径、前台路径和后台路径的区别。当在浏览器输入localhost:8080/bwcar/login.html访问登录页面并发送以/开头的AJAX请求时,浏览器解析路径错误,导致请求失败。分析问题后发现,请求URL应以资源路径为基础,而非服务器根路径。解决方案是去掉URL的开头斜杠,确保请求路径为localhost:8080/bwcar/sys/login,从而正确达到Controller进行登录验证。

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

关于相对路径,绝对路径,前台路径,后台路径的分类,以及浏览器和服务器对路径的解析规则,可以参考下面这篇博客:

转自:https://blog.youkuaiyun.com/qq_41933149/article/details/101847293

下面以一个曾经遇到的路径问题进行一下总结:

我有一个登录页面,地址为:

localhost:8080/bwcar/login.html

在这里插入图片描述
输入用户名和密码,点击登录后会触发一个ajax请求:

注意:url以 / 开头

login: function(event){
            $.ajax({
                type: 'POST',
                data: JSON.stringify(this.user),
                url: '/sys/login',
                dataType: 'json',
                contentType: 'application/json',
                cache: false,
                success: function(result){
                    if (result.code == 200){
                        window.location.href="index.html";
                    }else{
                        vm.error = true;
                        vm.errorMsg = result.msg;
                        vm.refreshCode();
                    }
                }
            });
        }

后端代码是这样的:

@ResponseBody
    @RequestMapping("/sys/login")
    public R login(@RequestBody UserDTO userDTO){
        String customKaptcha = userDTO.getCaptcha();
        String serverKaptcha = ShiroUtils.getKaptcha();
        if (!customKaptcha.equalsIgnoreCase(serverKaptcha)) {
            return R.error("验证码错误");
        }
        // 省略其他代码

问题出现

把项目部署进tomcat后,地址栏输入:localhost:8080/bwcar/login.html,访问到上面的登录界面。输入用户名和密码,点击登录后发现没有任何响应,f12打开控制台发现如下的报错信息:
在这里插入图片描述

分析问题

我的ajax请求的路径是这样的:

url: '/sys/login'

根据参考的那篇博客,以 / 开头的前台路径,浏览器在解析的时候,参考的路径是当前web服务器的根,也就是:

localhost:8080

于是拼接成完整的请求路径就是:

localhost:8080/sys/login

这是不对的,就像访问我的登录页面一样,需要加上我的项目名称,也就是这样才能访问到:

localhost:8080/bwcar/sys/login

解决问题

解决办法是将ajax请求的url写出这样:

url: 'sys/login'

同样的,根据参考的博客,不以 / 开头的前台路径,浏览器在解析时,参考的路径是资源路径:

登录页面的url为:

localhost:8080/bwca/login.html

所以资源路径为:

localhost:8080/bwcar

于是拼接成完整的请求路径就是:

localhost:8080/bwcar/sys/login

这样才能访问到controller层,进行登录验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值