javaEE006.03 路径和乱码问题、绝对路径、获取虚拟路径request.getContextPath()

系列文章目录

前言

因为现在的路径都不是绝对路径会有安全隐患404,即找不到资源文件

一、绝对路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于相对路径会有问题,隐患404
现在我们把一整套的相对路径改成绝对路径
服务器解析 :/ 代表的是当前项目
浏览器解析:/ 代表的 是8080
在这里插入图片描述

在这里插入图片描述
因为这样写,一个两个还好,如果很多的话,并不方便,我们有没有简单的办法?有,加个base标签
在这里插入图片描述

特别需要注意的是如下,千万注意!!!
在这里插入图片描述
所以不能加 /

在这里插入图片描述
在这里插入图片描述
项目名动态获取在jsp的时候会讲,这里暂时不管
在这里插入图片描述
跳转的地方也要变成绝对路径,都加上 /
在这里插入图片描述
在这里插入图片描述
浏览器解析的 / 代表的 就是 8080
8080 下 还得加个项目名 才能找到我们想要的路径
在这里插入图片描述
当然后面真实项目中我们肯定会动态获取项目名
动态获取项目名其实就是前面文章所讲的 获取虚拟路径
/ + 项目名 = 虚拟路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以回首页,就说明绝对路径是完全没有问题的

二、乱码问题

现象

如果前面代码都敲了一遍,应该已经发现这个问题了,直接教你乱码了
在这里插入图片描述
好了不开玩笑,这个页面应该很熟悉
在这里插入图片描述
然后前台打印出来的效果:
在这里插入图片描述
虽然平时不建议使用中文,如果万一我们的项目中就是有中文呢,不可避免的有中文怎么办?
在这里插入图片描述
怎么解决乱码问题?首先我们要先知道为什么会出现乱码问题
乱码实际上就是编码与解码不一致,就会出现乱码
那么什么叫编码,什么叫解码呢?
计算机底层是二进制的,计算机还有个名字叫电脑,
为什么叫电脑,因为计算机是计算是用通电状态来表示数据的
用 1和 0 来表示 1 代表 通电 0 代表不通电
所以编码就是将字符转化为二进制的过程
解码则相反

这里又涉及了请求乱码和响应乱码
在这里插入图片描述

  • 服务器的默认编码不支持中文
    所以我们需要去了解一下支持中文的
    GBK 和 UTF-8
    我们中国大陆用的较多的是 UTF-8,因为它比GBK支持的字符多一些

  • 客户端(浏览器)的编码 其实是我们设置的,解码默认为 GBK
    不知道大家 是否还有印象,我们新建一个html(HTML5)页面的时候
    在这里插入图片描述
    所以我们发现一个很严重的问题
    无论是 请求还是响应 在默认情况下 都是乱码
    所以默认情况下,无论是请求还是响应,一定是乱码的

解决乱码问题

解决请求乱码

只说问题不说解决办法就是耍流氓,所以我们不耍流氓,我们来讲讲解决方案

在哪去解决问题?在servlet中去解决,我们去设置编码
在这里插入图片描述
在这里插入图片描述
我们写完之后测试一下,看看控制台,发现并没有什么用
继续看看还有啥没有处理
原因如下,我们解决的是post请求
还得解决get请求
在这里插入图片描述
改成post 就可以了
在这里插入图片描述
post请求一行代码就解决了
那么问题我们解决一半了,下面还剩下 get ,get请求怎么处理呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改了服务器的配置,一定要重启一下服务器,
然后测试一下
在这里插入图片描述
在这里插入图片描述

解决响应乱码

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
怎么解决,有两种方式
1、直接将服务器编码设置为GBK(不推荐)——原理:因为浏览器默认解码就是GBK
在这里插入图片描述
在这里插入图片描述

2、将服务器编码与浏览器编码统一设置为UTF-8
这就有一个痛点,我们怎么用服务器端的代码 去改变 浏览器的编码格式 呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

总结

1、
相对路径改绝对路径会更稳定,更靠谱,可以杜绝出现404
绝对路径需要加标签或者自己加上项目名,加标签要灵活使用,样板如下:
** **
在这里插入图片描述

2、
解决乱码问题 三行代码,最终留下一行最精简的代码:
response.setContentType(“text/html;charset=UTF-8”);

3、获取虚拟路径 request.getContextPath()
最终得到的是 /BookStore04

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值