为什么要给 web 项目配置虚拟目录?

初学 JavaWeb 时,会发现只要我们把 web 项目放到 Tomcat 的 webapps 目录下,再通过 http://localhost:8080/项目名称/某个页面 就可以访问该网站了。可是这样并不符合规范,最好还是把 web 项目文件和 Tomcat 的安装文件分开。那如何实现这个要求呢?当然是给 web 项目配置虚拟目录啦。

如何给 web 项目配置虚拟目录?

前面已经说了,我们要把项目文件和 Tomcat 安装文件分离开。假设我们这里把 test 项目放在 D 盘的根目录下。配置虚拟目录的方法官方提供了五种,这里只介绍两种。

方法一

在 conf 目录下的 server.xml 文件的 Host 标签下添加 Context 标签<Context path="/test" docBase="D:\test"/>,改完后的如下所示,这样只需要在地址栏输入:http://localhost:8080/test/index.html 就可以访问 test 项目的 index 页面了。但是这种方式的缺点是需要重启服务器才能生效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
 
    <!-- SingleSignOn valve, share authentication between web applications
       Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    <Context path="/test" docBase="D:\test"/>
    <!-- Access log processes all example.
       Documentation at: /docs/config/valve.html
       Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="localhost_access_log" suffix=".txt"
        pattern="%h %l %u %t "%r" %s %b" />
 
   </Host>

方法二

在 conf\Catalina\localhost 目录下新建一个名为 test1 的 XML 文件,内容写上<Context docBase="D:\test1"/> 就可以了。这种方法可以不用重启 Tomcat ,就能立即生效。在地址栏输入:http://localhost:8080/test1/index.html 就可以访问 web 项目的 index.html 文件了。虚拟目录的路径名可以任意,并不一定要和项目名称相同。

为什么这两种方法都是通过修改这种 XML 文件就起作用了呢?这是因为 Tomcat 程序将这种需要改变的内容写在 XML 配置文件中,然后在程序运行的时候来寻找这种信息,以达到不用修改程序源码就能够改变程序运行的目的。以后的学习中经常会遇到配置文件的哦!

如何将网站进行云部署,能够让别人也能访问这个网站呢?

现在你已经购买了云服务器和域名,并做好了解析。你想要通过你的域名www.jb51.net访问你的网站,该怎么做呢?

你需要在 server.xml 文件的 <Engine>标签下新建一个<Host>标签,内容如下:

1
2
3
4
<Host name="www.jb51.net" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="D:\test"/>
</Host>

再将 server.xml 中的第一个<Connector>标签改为如下所示,也就是把 8080 端口改为 80

1
2
3
<Connector port="80" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443" />

总结一下,就是新建了一个主机(Host) ,主机名为 www.jb51.net ,因为 http 协议默认采用 80 端口,所以不用指定端口号了,在不给出任何路径时,就默认访问 D 盘下的 test 项目,至于该访问 test 项目的那个页面这还需要指定。

一般是需要在对应 web 项目的 web.xml 文件中添加如下代码,就会默认访问 index.html 的页面,但是 Tomcat 的 web.xml 文件已经写好了,所以并不需要另外指定。

1
2
3
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

原来需要通过http://www.jb51.net:8080/项目名/首页名访问首页的,现在只需要通过www.jb51.net 就能访问了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

 

原文链接:http://www.jianshu.com/p/8a622c5691c8?utm_source=tuicool&utm_medium=referral

Tomcat 中如何给 web 项目配置虚拟目录的方法的更多相关文章

  1. Tomcat部署web项目,虚拟目录,上下文(Context),WEB-INF,web.xml,servlet,404

    Web项目的uri模型大致如下: http://localhost:8080 (/context) (/resource) 站点/上下文/资源 一. Tomcat中指定上下文(Context) 方法一 ...

  2. php 在windows下配置虚拟目录的方法

    1.先找到apache的配置文件 httpd.conf 找如如下代码: # Virtual hosts#Include conf/extra/httpd-vhosts.conf 把# Include ...

  3. maven 创建web项目的标准目录结构

      maven 创建web项目的标准目录结构 CreateTime--2018年4月18日21:05:37 Author:Marydon 1.标准目录介绍(开发目录) 2.在eclipse下,目录展示 ...

  4. Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改

    2019-12-31     17:28:38 一般只需要把Java站点文件夹或*.war文件拷贝到Web Server的webapps文件夹下,即可启动运行该站点,但更多时候,我们并不想拷贝站点,而 ...

  5. Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目

    本篇博客讲解IDEA如何配置Tomcat. 大部分是直接上图哦. 点击如图所示的地方,进行添加Tomcat配置页面 弹出页面后,按照如图顺序找到,点击+号 tomcat Service -> L ...

  6. IDEA下集成tomcat7插件将tomcat内嵌到web项目中

    新建一个maven web项目 修改pom.xml文件 <build> <plugins> <!-- 配置Tomcat插件: 就是本地部署,将tomcat 内嵌到 web ...

  7. tomcat中部署多个项目,webAppRootKey 参数配置

    在一个tomcat中部署多个项目时,需要在每个项目的web.xml中配置webAppRootKey参数,如下: <context-param> <param-name>webA ...

  8. 如何在Linux中tomcat下运行一个web项目

    如何在Linux中tomcat下运行一个web项目 然后启动Tomcat项目.运行的运行后会自动将war包解压. 如果页面报404,那么请查看tomcat日志文件,它一定是报错了....

  9. 在Myeclipse中拷贝一个web项目,但是tomcat文件夹中没有更新,需要进行修改才能更新。

    1.在Myeclipse中拷贝一个web项目,但是tocat文件夹中没有更新,需要进行修改才能更新. 2.方法:右键这个工程,然后Properties->MyEclipse->Projec ...

随机推荐

  1. 揭开redux,react-redux的神秘面纱

    16年开始使用react-redux,迄今也已两年多.这时候再来阅读和读懂redux/react-redux源码,虽已没有当初的新鲜感,但依然觉得略有收获.把要点简单写下来,一方面供感兴趣的读者参考, ...

  2. CF练习记录

    2018/5/6 Codeforces Round #478 (Div. 2) C http://codeforces.com/contest/975/problem/C Valhalla Siege ...

  3. Maximum Subsequence Sum

    Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. A continuous subsequence is defined to ...

  4. 最长公共子序列Lcs (51Nod - 1006)

    20180604   11:28   给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的).   比如两个串为:   abcicba abdkscab   ab是两个串的子序列,ab ...

  5. centos7 openvpn代理搭建

    系统环境:centos7.1 拨号ip地址:125.112.194.40(公网) server端部署 一.准备工作 1.检查SELinux状态,关闭 sed -i 's/enforcing/disab ...

  6. VMware虚拟化NSX-Manager命令行更改admin用户密码

    1.1    登录到NSX-Manager命令行界面,输入用户名和密码登录到用户模式 Log in to the vSphere Client and select an NSX virtual ap ...

  7. 001---Linux系统的启动过程

    Linux系统的启动过程 按下电源 开机自检(BIOS):检查cpu.内存.硬盘是否有问题,找到启动盘. MBR引导(master boot record):主引导记录,读取存储设备的512bytes ...

  8. 加载旋转框(loading spinner)

    目标是这样的 用到的组件 AlertDialog 和 ProgressBar 先创建一个 AlertDialog 的布局 <?xml version="1.0" encodi ...

  9. 【Consul】关于健康检查的一点思考

    健康检查是Consul提供的一项主要功能,其配置格式如下: { "check": { "id": "redis", "name&q ...

  10. Java:位移运算符

    Java中有三个位移运算符,用于对int类型整数的二进制补码进行操作: 1. "<<": 左移运算符 在二进制补码末尾添加“0”,之前的其他位相当于左移了一位,可看作成 ...