第一个Javaweb应用程序

一、Javaweb应用程序结构

  一个 web 应用程序是由一组 Servlet,HTML 页面,类,以及其它的资源组成的运行在 web 服务器上的完整的应用程序,以一种结构化的有层次的目录形式存在

  组成 web 应用程序的这些文件要部署在相应的目录层次中,根目录代表整个 web 应用程序的”根”

  通常将 web 应用程序的目录放在 webapps 目录下,在 webapps 目录下的每一个子目录都是一个独立的 web 应用程序,子目录的名字就是 web 应用程序的名字,也就是 web 应用程序的“根”。用户通过 web 应用程序的”根”来访问 web 应用程序中的资源

  Servlet 规范中定义了 web 应用程序的目录层次:

  两点说明:

  ①WEB-INF目录下的classes和lib目录都可以存放Java的类文件,在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。如果这两个目录下存在同名的类,起作用的将是classes目录下的类
  ②WEB-INF 是一个特殊的目录(所有字母都要大写)。这个目录并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。但该目录下的内容对于Servlet代码是可见的

二、部署并启动 tomcat 服务器

  1. 解压 apache-tomcat-6.0.16.zip 到一个非中文目录下

  2. 配置一个环境变量. java_home(指向 JDK 安装的根目录) 或 jre_home

  3. 通过双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat, 启动服务器

  4. 可以在浏览器中输入 localhost:8080 来检验 Tomcat 安装是否正确.

  5. 若已经启动了一个 Tomcat 应用, 若再启动同一个 Tomcat 应用, 会抛出异常:  java.net.BindException: Address already in use: JVM_Bind:8080,因为端口已经被占用了,可以通过修改 server.xml 文件中的配置信息来修改 Tomcat 服务器的端口号:

  <Connector port="8989" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" />

  把 port 的值改为其他的端口号即可.

  6. 为了可以在任意目录下启动 Tomcat 服务器,可以把 D:\apache-tomcat-6.0.16\bin 添加到 path 下添加成功后, 若在任意目录下通过 startup 启动 Tomcat 服务器, 会有提示:
  The CATALINA_HOME environment variable is not defined correctly This environment variable is needed to run this program
  即: 要求设置 CATALINA_HOME 这个环境变量

  7. 设置 CATALINA_HOME 环境变量:通过阅读 startup.bat 批处理文件, 可知 CATALINA_HOME 环境变量下有一个 bin 目录,而 bin 目录又有一个 catalina.bat 文件, 由此可知 CATALINA_HOME 指向的应该是 Tomcat 安装的根目录,于是把 Tomcat 的根目录设为CATALINA_HOME 环境变量.,此时即可以在 任意 目录下通过 startup.bat、shutdown.bat 启动、关闭 Tomcat 服务器.

  8.继续阅读 startup.bat 文件, 发现启动 tomcat 服务器的是 catalina.bat 文件,在命令行窗口直接输入 catalina, 提示如下:
  commands:
  debug             Start Catalina in a debugger
  debug -security   Debug Catalina with a security manager
  jpda start        Start Catalina under JPDA debugger
  run               Start Catalina in the current window
  run -security     Start in the current window with security manager
  start             Start Catalina in a separate window
  start -security   Start in a separate window with security manager
  stop              Stop Catalina
  version           What version of tomcat are you running?
  catalina 命令有如上的可选参数.
  run: 在 catalina 同一个命令行窗口下启动服务器.
  start: 开启一个新窗口启动服务器
  stop: 关闭服务器.

三、第一个 WEB 应用程序开发, 并部署到 Tomcat 服务器下运行

  1. 在 Eclipse 新建一个 Java Project

  2. 在 Java 项目下创建 WEB 开发的目录结构
   -WebContent
       -WEB-INF
          -classes (编译后的 class 文件必须放在该目录下.)
          -lib
          -web.xml (从 apache-tomcat-6.0.16\webapps\docs\WEB-INF 中复制过来,可以不做修改)
      html 页面
      JSP 页面
      图片...

  3. 在 src 下新建一个 Person 类
  package com.atguigu.test;
  public class Person {
      public String getPersonInfo(){
          return "person info...";
      }
  }

  4. 手工的 Person 类对应的 class 文件(含包)复制到 classes 目录下,可以通过修改默认的输出目录达到自动把编译好的 class 放到 classes 目录下

  5. 在 WebContent 目录下新建一个 JSP 文件:
  <%@page import="me.test.Person"%>
  <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
      pageEncoding="ISO-8859-1"%>

  <%
      Person person = new Person();
      System.out.print(person.getPersonInfo());
  %>

  6. 把 WebContent 目录复制到 Tomcat 的 webapps 目录下, 并改名为: helloworld

  7. 在浏览器的地址栏中输入: http://localhost:8989/helloworld/hello.jsp 即可看到命令行的打印信息

四、配置任意目录下的Web应用程序

  在Web服务器中可以配置虚拟目录,而虚拟目录所对应的真实目录可以在任何路径下。

  在Tomcat服务器中,主要在 XML 配置文件中通过<Context>元素的设置来完成的。一个<Context>元素就表示一个Web应用程序,运行在特定的虚拟主机中。

  <Context>元素是<Host>元素的子元素,可以在conf\server.xml文件中设置Context元素。

<Context>元素的常用属性

  <Context>元素是<Host>元素的子元素,可以在conf\server.xml文件中设置Context元素。

  使用docBase属性指定Web应用程序的真实路径。将属性reloadable设置为true,Tomcat在运行时会自动监测Servlet类的改动,如果发现有类被更新,Tomcat服务器将自动重新加载该Web应用程序。这样,在开发时,就不需要频繁重启Tomcat了

  还可以在conf目录下依次创建Catalina\localhost目录,然后在localhost目录下为 test 这个Web应用程序建立 test.xml 文件,编辑这个文件输入以下内容

  从Tomcat 5开始,不建议直接在server.xml文件中配置<Context>元素,因为server.xml文件作为Tomcat的主要配置文件,一旦Tomcat启动后,将不会再读取这个文件,因此无法在Tomcat服务器启动时发布Web应用程序。如果在其他地方配置<Context>元素,那么在Tomcat运行时,也可以发布Web应用程序。

  从Tomcat 5.5开始,在\conf\Catalina\localhost目录下创建XML配置文件来配置Web应用程序,Tomcat将以XML文件的文件名将作为Web应用程序的上下文路径,而不理会在<Context>元素的path属性中指定的上下文路径是什么。由于Tomcat 5.5之后的版本是以XML配置文件的文件名作为Web应用程序的上下文路径的,因此在配置<Context>元素时,可以不使用path属性。

  因此,我们可以在 conf 目录下依次创建 catalina\localhost 目录,然后在 localhost 目录下为 test 这个Web应用程序建立 test.xml 文件,编辑这个文件输入以下内容

  <?xml version="1.0" encoding="UTF-8"?>
  <Context docBase="E:\\Java\\Source\\hello\\java-1\\firstWebApp\\WebContent" reloadable="true"/>

如果,您对我的这篇博文有什么疑问,欢迎评论区留言,大家互相讨论学习。
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博文感兴趣,可以关注我的后续博客,我是【AlbertRui】。

转载请注明出处和链接地址,欢迎转载,谢谢!

 

第一个Javaweb应用程序的更多相关文章

  1. JavaWeb学习系列——第一个JavaWeb程序

    创建JavaWeb项目 Eclipse中新建一个Dynamic Web Project 指定项目名称.依赖环境 勾选生成web.xml选项 更改项目编译输出目录,项目右键 ->propertie ...

  2. 第一个JavaWeb程序

    转载 第一个JavaWeb程序 JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框 ...

  3. JavaWeb学习总结第二篇--第一个JavaWeb程序

    JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...

  4. Intellij Idea创建的第一个JavaWeb程序

    第一个JavaWeb程序 1. 创建 2. 目录结构 src目录用于放java源文件,web目录用于放web资源,WEB-INF是Java web应用固定的存放配置及类库的目录,index.jsp是我 ...

  5. 手把手教你写一个RN小程序!

    时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...

  6. 用c-free 5写一个入门的程序

    本文记录了在windows系统中使用C-FREE 5新建一个Hello HoverTree程序的步骤. 安装好C-Free 5之后,打开.新建一个工程: 附C-Free 5下载:http://hove ...

  7. 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串

    关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串  实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来 ...

  8. 第一个C语言程序

    从第一个C语言程序了解C语言 了解关键字 了解函数 注释 C语言的执行流程 标识符 C语言的学习重难点 从第一个C语言程序了解C语言 上图是一个在控制台上显示“Hello, World!”的C语言源代 ...

  9. 第六章第一个linux个程序:统计单词个数

    第六章第一个linux个程序:统计单词个数 从本章就开始激动人心的时刻——实战,去慢慢揭开linux神秘的面纱.本章的实例是统计一片文章或者一段文字中的单词个数.  第 1 步:建立 Linu x 驱 ...

随机推荐

  1. python的乘法口诀表

    python的乘法口诀表 python的乘法口诀表 用python来写一个脚本,使得这个脚本在运行后自动输出乘法口诀表. pyton的脚本如下: #!/usr/bin/env python #codi ...

  2. linux初学者-NFS网络文件系统篇

    linux初学者-NFS网络文件系统篇 在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况.在linux系统之间,所用 ...

  3. 更简洁的log4j日志输出

    参考博客:https://blog.csdn.net/guoquanyou/article/details/5689652 只输出到文本,不输出到控制台 log4j.rootLogger=debug, ...

  4. markdown表情

    Emoji表情 将对应emoji表情的符号码复制后输入你的markdown文本即可显示emoji表情. 如:blush:,显示为

  5. VS Code 安装 LeetCode 插件

    练习算法绕不开的一个网站就是力扣,很多小伙伴为了拿到大厂 offer,刷题都刷到吐了. 然而如果直接在 LeetCode 上写代码,那是很痛苦的一件事,那就相当于用 txt 写代码一样,没有 IDE ...

  6. rm -rf /*时遇到的趣事

    今天在一个linux群里面闲逛的时候,突然看见一个愤青把自己的linux系统给 rm -rf /* 了 ,感觉很好玩就看了一下,突然我发现了有趣的事情! 我的朋友问我,这个为什么显示没有删除,我看了确 ...

  7. IDEA自定义配置

    目录 1 常规设置 1 修改字体大小 2 创建文件时 增加注释信息 3 项目编码为UTF-8 4 properties 文件编码为UTF-8且Transparent native-to-ascii c ...

  8. 脱壳系列_2_IAT加密壳_详细版解法1(含脚本)

    1 查看壳程序信息 使用ExeInfoPe 分析: 发现这个壳的类型没有被识别出来,Vc 6.0倒是识别出来了,Vc 6.0的特征是 入口函数先调用GetVersion() 2 用OD找OEP 拖进O ...

  9. Redis的HelloWorld

    1.安装完成的Redis: linux安装的应用默认会在:usr/local/bin. 1.redis-benchmark:性能测试工具,是redis提供的一个高并发程序,可以在自己本机运行,看看自己 ...

  10. redis缓存介绍以及常见问题浅析

    # 没缓存的日子: 对于web来说,是用户量和访问量支持项目技术的更迭和前进.随着服务用户提升.可能会出现一下的一些状况: 页面并发量和访问量并不多,mysql足以支撑自己逻辑业务的发展.那么其实可以 ...