javaweb之地址和编码

什么是地址和编码呢,在我们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关于编码和地址就到这里了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kay三石 [Alay Kay]

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值