什么是地址和编码呢,在我们java应用程序中地址的作用是什么呢,这里的地址所包含的事项有哪些呢?
地址的含义:
在计算机科学中,内存中每个用于数据存取的基本单位,都被赋予一个唯一的序号,称为地址,也叫做内存地址。内存地址指系统 RAM 中的特定位置,通常以十六进制的数字表示。IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置(来源于:百度百科)然而我们这里所讲的既不是ip地址,也不是内存地址,也不是mac地址了,这里讲到的地址其实就是一个路径的,用于描述这个东西所在的路径。
常用地址的写法包含三种 :
- 绝对路径:以/开头的路径就叫做绝对路径,绝对路径在相对于的路径上直接拼接得到最终的路径
- 相对路径:不以/开头的路径就叫做相对路径,相对路径基于当前所在的路径计算的到最终的路径
- 硬盘路径:以盘符开头的路径就叫做硬盘路径.是哪个路径就是哪个路径.没有相对于谁的问题
绝对路径和相对路径的比较:
- 1、防止网站被恶意抄袭,使用绝对路径,如果有人抄袭采集你的内容,里面的链接还会指向你的网站。有些抄袭的比较懒,连里面的链接一起抄了过去。
- 2、如果站长不能做301转向,因而有网址规范化的问题,使用绝对路径有助于链接指向选定的URL版本。
- 3、就算网页被移动位置,里面的链接还是指向正确的URL。
绝对路径的缺点:
- 1、除非链接是动态插入的,不然没办法在测试服务器上进行测试。因为里面的链接将直接指向真正的域名URL,而不是测试服务器中的URL。
- 2、除非链接是动态插入的,不然移动内容页面将很困难。因为内容页面位置发生变化,在其他页面上的链接却可能无法跟着变化,还指向原来的已经硬编码的绝对路径。
虚拟路径: --写虚拟路径时都使用绝对路径
如果路径是给浏览器用的,这个路径相对于虚拟主机,所以需要写上web应用的名称
如果路径是个服务器用的,这个路径相对于web应用,所以可以省写web应用的名称
<a href="/Day04/.....">
<form action="/Day04/...">
<img src="/Day04/....">
//请求头信息
response.setHeader("Location","/Day04/....");
response.setHeader("refresh","3;url=/Day04/...");
response.sendRedirect("/Day04/...");
request.getRequestDispathce("/index.jsp").forward();
request.getRequestDispathce("/index.jsp").include();
真实路径: --写真实路径时都使用相对路径
根据原理,具体问题具体分析
servletContext.getRealPath("config.properties");//--给一个相对于web应用目录的路径
classLoader.getResource("../../config.properties");//--给一个相对于类加载目录的路径
File file = new File("config.properties");//--相对于程序的启动目录
new InputStream("config.properties");//--相对于程序的启动目录
编码:
编码是信息从一种形式或格式转换为另一种形式的过程,也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。编码在电子计算机、电视、遥控和通讯等方面广泛使用。编码是信息从一种形式或格式转换为另一种形式的过程。解码,是编码的逆过程。而我们主要使用编码有GB编码标准中,A比较常用的是GB2312和GBK两种,GB2312是GBK的一个子集,GB2312编码范围是 0xA1A1 - 0xFEFE ,GBK码是GB码的扩展字符编码,对多达2万多的简繁汉字进行了编码,简体版的Win95和Win98都是使用GBK作系统内码。ios8859-1是服务器默认的编码,是java网络传输使用的标准字符集,所以我们要设置编码来进行转码。所以我们显示中文时一般都讲其转换为GBK格式,为了提高Unicode的编码效率,于是就出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个字节就够了。汉字则为3个字节比如下面的设置方式。其他编码想了解的话自行百度。
总的来说编码就是让计算机能够看到你输入的是什么,再次返回的数据也能让你看到。编码方式可以实现不同计算机语言的沟通,因为在中文操作系统默认为GB2132,在日文操作系统使用的是ANSI 编码代表 JIS 编码,所以在中文 windows下要转码成gb2312,gbk只需要把文本保存为ANSI 编码即可
在jsp主页面中我们经常看到乱码,那就是一种是在调用getParameter之前通过request.setCharacterEncoding设置字符编码,另一种是调用new String(str.getBytes("iso8859-1"), "UTF-8");编码后解码,这两种方法都可以得到正确的结果
response.setHeader("Content-Type", "text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
response.getWriter().write("中国");
OK关于编码和地址就到这里了。