您的位置:首页 > 其它

第七周周报

2012-11-06 19:54 134 查看
河软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方法对应Servlet的Servlet方法—结束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实战开发项目,让我们能更好的体会学习。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: