第七周周报

河软CSDN乐知学院

学员周学习总结

姓名

**

周次

7

方向

Java

本周学习知识点:

Tomcat配置Web站点

HTTP

Servlet入门

本周学习收获:

Tomcat配置Web站点

WEB应用的相关知识

安装 Tomcat

Tomcat 的启动与停止

配置WEB站点的虚拟目录

配置虚拟主机

Web应用程序简介

应用程序:指允许用户执行特定任务的软件程序,主要分为桌面应用程序和Web应用程序两种类型。

桌面应用程序(DesktopApplication):一般是指采用客户机/服务器结构(Client/Server)的应用程序。

C/S模式将应用与服务分离,系统具有稳定性和灵活性

C/S模式配备的是点对点的结构模式,适用于局域网,有可靠的安全性

由于客户端实现与服务器端的直接连接,没有中间环节,因此响应速度快

在C/S模式中,作为客户机的计算机都要安装客户机程序,一旦软件系统升级,每台客户机都要安装客户机程序,系统升级和维护较为复杂

Web应用程序(Web Application)

Web应用程序一般是指采用浏览器和服务器结构(Browser/Server,简称B/S结构)的应用程序。

Web应用程序由Web服务器和Web客户端组成。

Web服务器:Web服务器上装有某个应用程序,这个Web服务器应用程序负责接收客户请求进行处理,向客户返回结果

Web客户端:允许用户请求服务器上的某个资源,并且向客户端返回结果。Web应用程序的客户端一般是指Web浏览器。Web浏览器就是一个软件,它知道怎么与服务器通信,它还有一个重要任务,就是解释HTML代码,把Web页面呈现给用户

B/S模式的优点:

(1)易于维护:基于B/S模型的系统当需要升级或维护时,只需修改服务器程序即可。

(2)易于实现。B/S模型的表现层可以用制作网页的html来实现,浏览器和网页设计技术已经相当成熟。而且用Java技术开发的Web系统可以安装在任意一种服务器系统平台上,也就是常说的具有跨平台性。

(3)使用方便,无论客户在什么地方,只要服务器正在运行,客户就能通过网络进行连接,实现对数据的访问和操作。

URL:Uniform Resource Locator(统一资源定位符)

例如,http://www.it315.org:80/java/index.html

主要的WEB服务器软件

IIS、Apache 、Tomcat

WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。

Internet上供外界访问的Web资源分为:

静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。

动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

静态web资源开发技术

Html

常用动态web资源开发技术:

JSP/Servlet、ASP、PHP等

在Java中,动态web资源开发技术统称为Javaweb,我们课程的重点也是教大家如何使用Java技术开发动态的web资源,即动态web页面。

认识web.xml文件的作用:

通过web.xml文件把某个web资源配成网站首页。

部署描述符文件

<WEB应用程序>/WEB-INF/web.xml

<Tomcat主目录>/conf/web.xml

目录的默认网页文件

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

在一个tomcat服务器中可以放置多个网站,所谓配置虚似主机,就是在tomcat服务器中配置一个网站。

如需在WEB服务器中配置一个网站,需使用Host元素进行配置,例:

<Hostname=”site1” appBase=”c:\app”></Host>

配置的主机(网站)要想被外部访问,必须在DNS服务器或windows系统中注册。

配置多个网站。

缺省虚似主机。

HTTP

HTTP简介

l 客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。

l WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。

l HTTP是hypertext transferprotocol(超文本传输协议)的简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。

l HTTP协议的版本

HTTP/1.0、HTTP/1.1

l HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。深入理解HTTP协议,对管理和维护复杂的WEB站点、开发具有特殊用途的WEB服务器程序具有直接影响。

HTTP 1.0的会话方式

l 四个步骤:

建立连接

发送请求

回送响应

关闭连接

l 浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。

l 浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。

HTTP 协议

浏览器访问多图网页的过程

l 一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。

HTTP请求消息

l 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:

l 一个请求行、若干消息头、以及实体内容,如下所示:

请求头

消息头

空行

请求数据

l 请求消息的结构:

一个请求行、若干消息头、以及实体内容,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空行隔开。

l 举例:

GET /books/java.html HTTP/1.1

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: localhost

Referer: http://localhost/links.asp

User-Agent: Mozilla/4.0

Accept-Encoding: gzip, deflate

请求行:

l 请求行中的GET称之为请求方式,请求方式有:

POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

• 常用的有: GET、 POST

• 用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

l 不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:

• 如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:

• GET /mail/1.html?name=abc&password=xyz HTTP/1.1

• GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。

• 如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

消息头:

l 用于HTTP请求中的常用头

Accept: text/html,image/*

Accept-Charset: ISO-8859-1

Accept-Encoding: gzip,compress

Accept-Language: en-us,zh-cn

Host: www.it315.org:80

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

Referer: http://www.it315.org/index.jsp

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

• Cookie

Connection: close/Keep-Alive

Date: Tue, 11 Jul 2000 18:23:51 GMT

HTTP响应

l 一个HTTP响应代表服务器向客户端回送的数据,它包括:

一个状态行、若干消息头、以及实体内容 。

状态行

消息头

空行

响应数据

l 举例:

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Thu, 13 Jul 2000 05:46:53 GMT

Content-Length: 2291

Content-Type: text/html

Cache-control: private

<HTML>

<BODY>

……

状态行:

l 状态行

格式: HTTP版本号 状态码 原因叙述<CRLF>

举例:HTTP/1.1 200 OK

典型情况

l 200(正常)

表示一切正常,返回的是正常请求结果。

l 302/307(临时重定向)

指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。

l 304(未修改)

表示客户机缓存的版本是最新的,客户机应该继续使用它。

l 403(禁止)

服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致。

l 404(找不到)

服务器上不存在客户机所请求的资源。

l 500(内部服务器错误)

服务器端的CGI、ASP、JSP等程序发生错误。

Servlet入门

Servlet的应用

1.Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面。它担当Web浏览器或其他http客户程序发出请求、与http服务器上的数据库或应用程序之间交互的中间层。

2.主要内容:Web应用程序开发过程、Servlet的运行原理、Servlet的生命周期等。

Java Web应用程序的开发过程

1. 开发Java Web应用程序的大致流程

– 设计目录结构:根据具体业务需要,遵照规范的目录结构设计好Web应用程序的目录结构。

– 编写Web应用程序代码:编写业务逻辑所需的Java代码。

– 编写部署描述文件:把Servlet、初始化参数等定义到部署描述文件web.xml中。

– 编译代码:把编写好的Java源代码编译成字节码。

– 将Web应用程序打包:把整个Web应用程序打成War包,以方便部署。

– 部署Web应用程序:把打好的War包部署到Web服务器上。

2. 执行Web应用程序:启动Web服务器,利用客户端浏览器进行访问测试。

注意:在具体的开发过程中,一般都会使用IDE工具,使用IDE工具进行Web应用程序开发时,只需要开发人员完成前三个步骤,其他步骤IDE工具可以自动完成。

Servlet运行原理

1.当Web服务器接收到一个HTTP请求时,它会先判断请求内容——如果是静态网页数据,Web服务器将会自行处理,然后产生响应信息;如果牵涉到动态数据,Web服务器会将请求转交给Servlet容器。此时Servlet容器会找到对应的处理该请求的Servlet实例来处理,结果会送回Web服务器,再由Web服务器传回用户端。

2.针对同一个Servlet,Servlet容器会在第一次收到http请求时建立一个Servlet实例,然后启动一个线程。第二次收到http请求时,Servlet容器无须建立相同的Servlet实例,而是启动第二个线程来服务客户端请求。所以多线程方式不但可以提高Web应用程序的执行效率,也可以降低Web服务器的系统负担。

Servlet的生命周期

不存在Servlet实例—容器装载Servlet—创建Servlet实例—初始化Servlet调用init方法—调用Servlet方法对应ServletServlet方法—结束Servlet调用destroy方法

Servlet接口实现类:

1、HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。

2、HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。

Servlet的一些细节(1)

1、:由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成。

2、<servlet>元素用于注册Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。

3、一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和Servlet的对外访问路径。

Servlet的一些细节(2):

1、同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。

2、在Servlet映射到的URL中也可以使用*通配符,但是只能有两种固定的格式:一种格式是“*.扩展名”,另一种格式是以正斜杠(/)开头并以“/*”结尾。

Servlet的一些细节(3):

对于如下的一些映射关系:

Servlet1 映射到 /abc/*

Servlet2 映射到 /*

Servlet3 映射到 /abc

Servlet4 映射到 *.do

Servlet的一些细节(4):

1、Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。

2、针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。

3、在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

Servlet的一些细节(5):

1、如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。

2、用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据。

Servlet的一些细节(6):

1、如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。

2、凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。

3、在<tomcat的安装目录>\conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。

4、当访问Tomcat服务器中的某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet。

线程安全:

1、当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的service方法,因此service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。

2、如果某个Servlet实现了SingleThreadModel接口,那么Servlet引擎将以单线程模式来调用其service方法。

3、SingleThreadModel接口中没有定义任何方法,只要在Servlet类的定义中增加实现SingleThreadModel接口的声明即可。

4、对于实现了SingleThreadModel接口的Servlet,Servlet引擎仍然支持对该Servlet的多线程并发访问,其采用的方式是产生多个Servlet实例对象,并发的每个线程分别调用一个独立的Servlet实例对象。

5、实现SingleThreadModel接口并不能真正解决Servlet的线程安全问题,因为Servlet引擎会创建多个Servlet实例对象,而真正意义上解决多线程安全问题是指一个Servlet实例对象被多个线程同时调用的问题。事实上,在Servlet API 2.4中,已经将SingleThreadModel标记为Deprecated(过时的)。

ServletConfig对象:

1、在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。

2、当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

3、阅读ServletConfigAPI,并举例说明该对象的作用:

获得字符集编码

获得数据库连接信息

获得配置文件

学习总结:

Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet不过现在使用的很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。

对授课教师意见建议:

希望老师能带领我们学习java web实战开发项目,让我们能更好的体会学习。

你可能感兴趣的:(第七周周报)