在这个篇章中,我们来学习下在web开发过程中会碰到的路径写法问题。

  在之前的web应用开发,尤其是Servlet的学习过程中,我们碰到多次要写路径的问题,这些路径并不统一,因此这里将大致说明下各个方法或者对象创建中会碰到的路径写法:

  首先,在web开发中,注意这里特别强调是在web开发中,也就是我们用Servlet来处理web应用的过程中:

  地址最好以“/”开头!!!

  以“/”开头在不同的对象或方法、标签中代表不同的相对根目录。区别在于编程者要注意这个地址是给服务器端使用的,还是给客户端浏览器使用的。

  如果是给服务器端使用的地址,“/”代表当前web工程;

  如果是给客户端浏览器使用的地址,“/”代表服务器中的主机,或者表示服务器部署web应用的根目录(如Tomcat的【webapps】目录)。

以下通过几个例子来说明:

1.

    this.getServletContext().getRealPath("/index.jsp");

在服务器端操作服务器中的资源,所以是给服务器使用的地址,表示该web工程下的index.jsp。

2.

    this.getServletContext().getRequestDispatcher("/index.jsp");

3.

    response.sendRedirect("/myservlet/index.jsp");

重定向需要配合响应头“Location”来将响应发给浏览器,再由浏览器来重新发送请求给重定向中的新URL,所以是给客户端浏览器使用的地址。【myservlet】为web应用名,存在于Tomcat的【webapps】目录下。

4.

    response.getWriter().write("<meta http-equiv='refresh' content='3;url=/myservlet/index.jsp'>");

很明显这个将会给浏览器进行解析出这个HTML语言作为页面中的响应头,所以是给浏览器的地址,需要提供web应用名。

5.

    <form action=”/myservlet/servlet/ServletRegister”>
</form>

在浏览器中提交表单给服务器,是给浏览器的地址。

6.

    <a href=”/myservlet/servlet/ServletRegister”></a>
<img src=”/myservlet/servlet/ServletRegister” />

均为给浏览器的地址。

这里注意:对于Servlet这样的web资源,路径都是以对外访问路径名(虚拟路径)为主(在web.xml文档中<servlet-mapping>标签定义),所不同的是对于浏览器地址来说需要加上web应用名。例:

对于服务器地址:

    request.getRequestDispatcher("/servlet/ServletDemo").forward(request, response);

对于客户端浏览器地址:

    response.sendRedirect("/myservlet/ servlet/ServletDemo");

另记:“/”通常用于表示虚拟地址,如URL地址,而“\”通常用于系统硬盘上的文件地址。

Servlet的学习之web路径问题的更多相关文章

  1. servlet入门学习之Web容器

    一.web服务器 web服务器(程序/软件) 即:www服务器或http服务器.提供Web信息浏览服务.它只需支持HTTP协议.HTML文档格式及URL.向浏览器提供服务的程序. 1.Web服务器是指 ...

  2. Servlet的学习之Cookie

    从本篇开始学习Servlet技术中的Cookie专题. 首先来了解什么是“会话”.会话是web技术中的一个术语,可以简单的理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭 ...

  3. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址

    在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path = getServletContext().getRealP ...

  4. Servlet的学习之Filter过滤器技术(1)

    本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器, ...

  5. Servlet的学习(四)

    在本篇的Servlet的学习中,主要来学习由使用MyEclipse来开发Servlet的一些小细节. 细节一:在web.xml中可以对同一个Servlet配置多个对外访问路径,并如果在web.xml中 ...

  6. Servlet的学习之Session(3)

    在上一篇<Servlet的学习之Session(2)>我们知道了Session能实现一个会话过程中保存数据或者多个会话中实现同一个Session的关键因素就是Cookie,只是Cookie ...

  7. Servlet的学习之Session(2)

    在上一篇中我们学习了Session对象默认在一个会话过程中,由服务器创建,能保存在这个会话过程中用户访问多个web资源时产生的需要保存的数据,并在访问服务器中其他web资源时可以将这些数据从Sessi ...

  8. Servlet的学习之Request请求对象(3)

    本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看R ...

  9. Servlet的学习之Response响应对象(2)

    本篇接上一篇<Servlet的学习之Response响应对象(1)>,继续从HttpServletResponse响应对象来介绍其方法和功能. 使用setHeader方法结合HTTP协议的 ...

随机推荐

  1. Oracle修改字段长度以及计算天数

    sql修改字段长度的语法: alter table 表名 modify 字段名 字段类型; sql修改字段长度的示例代码 alter table qtline modify qtl_bidernote ...

  2. 使用阿里云集成包快速搭建LAMP+FTP教程

    LAMP集成包安装步骤 1.下载开发集成包 下载最新版的阿里云市场提供的WEB开发集成包(内含Apache.Mysql.PHP.vsftpd) #Linux指令wget http://gongdan. ...

  3. 432B - Football Kit

    解题思路: 暴力绝对TLE 一个队伍穿主场球衣的次数 = 这个队伍的客场球衣颜色与其他队主场球衣颜色起冲突的次数 + (n - 1) #include <stdio.h> #include ...

  4. Windows Phone 8初学者开发—第18部分:在页面间导航

    原文 Windows Phone 8初学者开发—第18部分:在页面间导航 原文地址:  http://channel9.msdn.com/Series/Windows-Phone-8-Developm ...

  5. GIT分支操作常用命令

    切换分支:git checkout name 撤销修改:git checkout -- file 删除文件:git rm file 查看状态:git status 添加记录:git add file ...

  6. datanode启动后,在web50070port发现不到datanode节点(能力工场)

    直接上问题:这两天为了试验,安装了两套集群: (1)32位hadoop1集群(5个节点); (2)64位hadoop2集群(6个节点) 两个集群中都遇到过这种问题:在namenode正常启动hadoo ...

  7. Android 自动编译、打包生成apk文件 4 - 多渠道批量打包

    相关文章列表: < Android 自动编译.打包生成apk文件 1 - 命令行方式> < Android 自动编译.打包生成apk文件 2 - 使用原生Ant方式 > < ...

  8. ArrayList集合--C#

    static void Main(string[] args) { //实例化出一个集合对象 ArrayList list = new ArrayList(); /*添加*/ //--添加单个元素 l ...

  9. ZOJ 3603字符串操作

    解题思路:找到公共子串然后升序输出 坑的地方就在于输入是存在相同字母的 #include <stdio.h> #include <algorithm> #include < ...

  10. 17-UIKit(UIView的动画)

    2. UIView的动画 UIView类本身具有动画的功能 2.1 概念 由UI对底层Core Animation框架的封装 可以轻松简单的实现动画效果 2.2 两种使用方式 1> Block ...