JavaWeb一些配置介绍

什么是 Servlet:
  • Servlet 是一个 JavaEE的组件,也是 JavaEE中的一个规范
    • Servlet是JavaEE 中的一个规范:服务器其实就是对 Servlet 的实现
    • Servlet 是一个JavaEE 的组件 :Servlet 是一个程序(类),只不过必须要遵循 Servlet 的规范
      要求类:必须实现 javax.servlet.Servlet接口

1、Servlet容器 : 能够发布和运行java web 应用的web服务器
2、Servlet规范 :对javaWeb应用作了如下定义:“javaWeb 应用由一组 Servlet/JSP 、HTML文件、相关 java 类,以及其他可以被绑定的资源构成,它可以在由各种应用厂商提供的符合 Servlet 规范的 Servlet 容器中运行
3、Web应用程序 指 提供浏览器访问的程序,通常也称为web应用

Tomcat目录结构
目录描述
/bin存放在window 平台及 Linux 平台上启动和关闭 Tomcat 的脚本文件
/conf存放 Tomcat 服务器的各种配置文件,其中最重要的配置文件是server.xml
/lib存放 Tomcat 服务器及所有 Web 应用都可以访问的 JAR 文件
/webapps在Tomcat 上发布 javaWeb 应用时,默认把Web 应用文件放于此目录下
/workTomcat的工作目录,Tomcat在运行时把生成的一些工作文件放于此目录下

JavaWeb 应用的 lib 子目录:存放的JAR 文件只能被当前 javaWeb 应用访问。

Tomcat的类加载器负责为 Tomcat 本身 javaWeb应用加载相关的类。
假如 Tomcat的类加载器要为一个 javaWeb 应用加载一个名为 Sample 的类,则类加载器会按照如下顺序到各个目录去查找 Sample 类的.class 文件,知道找到为止,如都不存在则抛出异常:

  1. JavaWeb 应用的 WEB-INF/classes 目录下直接查找 Sample.class 文件
  2. JavaWeb 应用的 WEB-INF/lib 目录的JAR文件中查找 Sample.class 文件
  3. Tomcat 的 lib子目录下直接查找 Sample.class 文件
  4. Tomcat 的 lib子目录的JAR文件中查找 Sample.class 文件
Web应用目录结构 (假设有一个helloapp的web程序)
/helloapp ————Web应用的根目录,所有JSP和html文件都存放此目录(根目录文件外界可访问)
		|
		|——JSP、HTML、css、JavaScript文件等
		|
		|——/WEB-INF    (该目录下的文件外界无法直接访问,由Web服务器调用)
			   |
		       |——/classes (存放各种 .class 文件),Servlet类的.class 文件也放与此目录
			   |——/lib (存放 web应用所需要的各种 jar 文件)
			   |——web.xml  (web应用的配置文件)
  • 在 WEB-INF 目录的 classes 及 lib子目录下,都可以存放 java类文件
  • 在运行时,Servlet 容器(Tomcat)的类加载器
    • 先 加载 classes 目录下的类,
    • 再加载lib目录下的 JAR 文件(java 类库的打包文件)中的类。
    • 因此,如果两个目录下存在同名的类,classes 目录下的类具有优先权
Web 组件的 URL
  • Web 应用的默认 URL 入口都是 Web 应用的根目录名,例如上面的 helloapp应用,它的URL 入口为/helloapp

  • 假设有一个 helloapp / dir1/dir2/hello.jsp 文件
    那么它的 URL 为 http://localhost/helloapp/dir1/dir2/hello.jsp
    可以在 web.xml 文件中对其映射 URL ,(简短访问的URL)
    对于 Servlet,需要在 web.xml 文件中对其映射URL。
    Servlet的URL由web.xml文件中的 元素来指定.如下

	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>mypack.DispatcherServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/dispatcher</url-pattern>
	</servlet-mapping>
<!-- 这些元素都是在根<web-app>中 -->

以上元素的值为“/dispatcher”,因此访问 mypack.DispatcherServlet 类的 URL
http://loacalhost/helloapp/dispatcher

当浏览器端首次访问通过该 URL 请求访问 DispatcherServlet 时,Tomcat 需要先找到文件系统中的 DispatcherServlet.class 文件,从而加载 DispatcherServlet 类。Tomcat 查找 DispatcherServlet.class 文件的步骤如下:

  1. 参考 helloapp 应用的 web.xml 文件,找到 子元素的值为 "/dispatcher"的 元素

  2. 读取 元素的子元素的值,由此确定 Servlet 的名字为 “dispatcher”。

  3. 找到 子元素的值为 “disptcher” 的 元素.

  4. 读取元素的 子元素的值,由此确定 Servlet 的类名为 “mypack.DispatcherServlet”

  5. 到当前应用的WEB-INF 目录下的 classes /mypack 包下查找 DispatcherServlet.class 文件
    (如果在此目录中未找该.class 参考 Tomcat目录介绍最下面那个顺序加载类)

可以参考如下:Servlet的请求流程
Servlet的请求流程

部署Web项目的几种方式

1、直接把项目的 web根路径,拷贝到 Tomcat 根 / webapps 目录中
该方式不支持热部署。(代码变动之后,需要重新部署,重新部署的成本很大)
把所有的项目都部署在该路劲,启动越来越慢,若其中一个项目有问题,Tomcat是启动不了的


  1. 告诉 Tomcat 服务器,从指定的路径去部署项目
  • 找到 Tomcat 根 / conf / servlet.xml 文件
  • 在元素之间,编写 元素,如下

context

  • path:指定访问 Web 应用的 URL 入口
  • context还有一个 reloadable属性,该属性默认false
    简单来说当该属性设置为 true 时,Tomcat服务器在运行状态会监视 WEB-INF/classes 和 WEB-INF/lib 目录下的class文件的改动,以及监视Web 应用的 WEB-INF/web.xml文件的改动,如果检测到改动,服务器会自动重新加载 Web应用 。

  1. Tomcat5.5开始推荐的另外一种方式部署项目:(本质和方式二相同)
    步骤:
    • 找到 Tomcat 根/ conf /Catalina / localhost 新建一个 xml 文件: 比如 abc.xml(xml文件即可)
    1. 内容是:
      此时该文件的名字,就相对于是第一种方式的 path 值(上下文名字)
      访问: http: //localhost /abc/index.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值