Web,Tomcat,HTTP,Servlet

一.Web

 1.Java Web 是用 Java 技术来解决相关 web 互联网领域的技术总和。

C/S 是 Client/Server 的缩写,即客户端/服务器结构。在这种结构中,服务器通常采用高 性能的 PC 机或工作站,并采用大型数据库系统(如 Oracle 或SQL Server) ,客户端则需要安装专用的客户端软件。这种结构可以充分利用两端硬件环境的优势,将任务合理分配到客户端和服务器,从而降低了系统的通信开销。

B/S 是 Browser/Server 的缩写,即浏览器/服务器结构。在这种结构中,客户端不需要开发任何用户界面,而统一采用如 IE、 Firefox、 Chrome 等浏览器,通过 Web 浏览器向 Web 服务器发送请求,由 Web 服务器进行处理,并将处理结果逐级传回客户端。这种结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,从而节约了开发成本.

2.Web 应用程序的工作原理

Web 应用程序大体上可以分为两种,即静态网站和动态网站。


随着网络的发展,很多线下业务开始向网上发展,基于 Internet 的 Web 应用也变得越来越复杂,用户所访问的资源已不能只是局限于服务器上保存的静态网页,更多的内容需要根据用户的请求动态生成页面信息,即动态网站。
 

           

3.Web 应用技术

a.客户端应用的技术

     1)HTML HTML 语言是客户端技术的基础,主要用于显示网页信息,有浏览器解释执行,它不需 要编译。
               2) CSS CSS 就是一种叫做样式表的技术,也有人称之为层叠样式表。在制作网页时才有用 CSS 样式,可以有效地对页面的布局、字体、颜色、背景和其他效果实现更加精确的控制。

b.服务器端应用的技术                 

                      1)JSP Java Server Page 简称 JSP。 JSP 是以 Java 为基础开发的,所以它沿用 Java 强大的 API 功 能。 JSP 页面中的 HTML 代码用来显示静态内容部分,嵌入到页面中的 Java 代码与 JSP 标记 用来生成动态的内容。 JSP 允许程序员编写自己的标签库来完成应用程序的特定要求。 JSP 可以被预编译,提高了程序的运行速度。另外, JSP 开发的应用程序经过一次编译后,便可 随时随地运行。所以在绝大部分系统平台中,代码无需做修改即可在支持 JSP 的任何服务器中运行。
                      2)Servlet Servlet 是 Java 早期的 Web 服务器端技术,用 Java 语言编写。无论是从原理和编程方式 上,几乎就是 CGI 的翻版,具有 CGI 的缺点和优点,与 CGI 主要不同的是, Servlet 对每个请求都是单独启动一个线程,而不是进程。

二.Tomcat

1. 什么是 Tomcat

Tomcat 是一个符合 JavaEE WEB 标准的最小的 WEB 容器,所有的 JSP 程序一定要有 WEB 容器的支持才能运行,而且在给定的 WEB 容器里面都会支持事务处理操作。        

2. 安装 Tomcat

a.运行 Tomcat 需要 JDK 的支持【Tomcat 会通过 JAVA_HOME 找到所需要的JDK】。 安装就是解压缩过程。启动 Tomcat,能访问则算安装好了


          b.解压Tomcat压缩包,此为免安装版

           

启动后该启动窗口不能关
          c.打开浏览器输入 http://localhost:8080/访问

d.调用 shutdown 命令关闭 Tomcat

e.Tomcat 目录结构

f.Eclipse 关联 Tomcat:Window->preferences->Server->Runtime Environment->add->apache-tomcat-8.0.23

三.HTTP协议

HTTP 协议(Hypertext Transfer Protocol, 超文本传输协议),是一个客户端请求和回应的 标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。用户输入地址 和端口号之后就可以从服务器上取得所需要的网页信息。

1. 浏览器中的书写格式:图上\\改为//

2. HTTP 协议的主要特点:

     简单快速.灵活.HTTP1.1 支持持续连接.无状态: HTTP 协议是无状态协议.
 

3. HTTP 请求

                     http 请求由三部分组成,分别是: 请求行、 请求头、 请求正文

            a.get(没有请求体)

b.post

c.格式

3.HTTP 响应

                  在接收和解释请求消息后,服务器返回一个 HTTP 响应消息。 HTTP 响应也是由三个部分组成,分别是: 状态行、 消息报头、 响应正文.

4.消息头

a.请求头

    请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。Referer: 该请求头指明请求从哪里来.

b.响应头

               响应报头允许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和 对 Request-URI 所标识的资源进行下一步访问的信息。Location: Location 响应报头域用于重定向接受者到一个新的位置。

              Location响应报头域, 常用在更换域名的时候。 response.sendRedirect(“http://www.shsxt.com”);

              Refresh:自动跳转(单位是秒),可以在页面通过 meta 标签实现,也可在后台实现。

四.第一个 Servlet 实现

              Servlet 是 Server 与 Applet 的缩写,是服务端小程序的意思。使用 Java 语言编写的服务 器端程序,可以像生成动态的 WEB 页, Servlet 主要运行在服务器端,并由服务器调用执行, 是一种按照 Servlet 标准来开发的类。
              Servlet 本质上也是 Java 类,但要遵循 Servlet 规范进行编写,没有 main()方法,它的创 建、使用、销毁都由 Servlet 容器进行管理(如 Tomcat)。(言外之意:写自己的类,不用写 main 方法,别人自动调用)
 

1. 实现步骤

   1)、 创建动态 web 项目------->2)、 新建类------->3)、 实现 Servlet 规范------->4)、 重写 service 方法------>5)、 配置 web.xml------->6)、 发布项目并启动服务------>7)、 启动项目-------->8)、 访问并查看结果.

package com.shsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Servlet01 extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("Servlet01....");
		
		response.getWriter().write("<h1>Hello Servlet!</h1>");
	}
	
}

           XML中的配置

<servlet>
  	<servlet-name>servlet01</servlet-name>
  	<servlet-class>com.shsxt.servlet.Servlet01</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>servlet01</servlet-name>
  	<url-pattern>/st01</url-pattern>
  </servlet-mapping>
    
  <servlet>
  	<servlet-name>servlet02</servlet-name>
  	<servlet-class>com.shsxt.servlet.Servlet02</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>servlet02</servlet-name>
  	<url-pattern>/st02</url-pattern>
  </servlet-mapping>
    
  <servlet>
  	<servlet-name>servlet03</servlet-name>
  	<servlet-class>com.shsxt.servlet.Servlet03</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>servlet03</servlet-name>
  	<url-pattern>/st03</url-pattern>
  </servlet-mapping>

2. 工作原理

a.执行过程      

     客户端发出请求 根据 web.xml 文件的配置,找到对应的 读取中的值 找到对应的 找到该 class 并加载执行该 class,返回结果 由 Web 服务器将结果响应给客户端.

3. Servlet 的生命周期

 a.实例和初始化时机

                     当请求到达容器时,容器查找该 servlet 对象是否存在,如果不存在,则会创建实例并 进行初始化。

 b.就绪/调用/服务阶段

                有请求到达容器,容器调用 servlet 对象的 service()方法,处理请求的方法在整个声明周 期中可以被多次调用;HttpServlet 的 service()方法,会依据请求方式来调用 doGet()或者 doPost()方法。但是, 这两个 do 方法默认情况下,会抛出异常,需要子类去 override。

 c.销毁时机

                   当容器关闭时(应用程序停止时),会将程序中的 Servlet 实例进行销毁。上述的生命周期可以通过 Servlet 中的生命周期方法来观察。

  e.在 Servlet 中有三个生命周 期方法,不由用户手动调用,而是在特定的时机有容器自动调用,观察这三个生命周期方法 即可观察到 Servlet 的生命周期。

  1、 Web Client 向 Servlet 容器(Tomcat)发出 Http 请求
             2、 Servlet 容器接收 Web Client 的请求
             3、 Servlet 容器创建一个 HttpRequest 对象,将 Web Client 请求的信息封装到这个对象 中
             4、 Servlet 容器创建一个 HttpResponse 对象
             5、 Servlet 容器调用 HttpServlet 对象的 service 方法,把 HttpRequest 对象与 HttpResponse 对象作为参数,传给 HttpServlet 对象
             6、 HttpServlet 调用 HttpRequest 对象的有关方法,获取 Http 请求信息
             7、 HttpServlet 调用 HttpResponse 对象的有关方法,生成响应数据
             8、 Servlet 容器把 HttpServlet 的响应结果传给 Web Client

 

4. Servlet 的配置

Servlet 除了配置基本的访问信息,还可以配置初始化参数,自启动等,并
且一个 Servlet 可以配置多个访问路径(),还可以使用通配符“*”。

 

a.基本配置

           

b.初始化参数

            

c.自启动

            

servlet-name: Servlet 对象的名称
           servlet-class:创建 Servlet 对象所要调用的类
           param-name:参数名称
           param-value:参数值
           load-on-startup: Servlet 容器启动时加载 Servlet 对象的顺序
           servlet-mapping/servlet-name:要与 servlet 中的 servlet-name 配置节内容对应
           url-pattern:客户访问的 Servlet 的相对 URL 路径

                 说明: url-pattern 可以配多个(一个 servlet 可以通过多个 url-pattern 访问)当多个 servlet 配置成了同一个 url-pattern,报错java.lang.reflect.InvocationTargetExceptionion 通配符 “*”只能放在最前面或最后面,不能放中间且不能单独存在(以/分割的,不能和单词组成整体)。 越精确越优先。常规配置即可。
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_38982845/article/details/82120804