ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:413.80KB ,
资源ID:9297502      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9297502.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(13Servlet.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

13Servlet.docx

1、13Servlet Servlet基础1.1. Web应用的演变1.1.1. 单机程序软件简单分为单机程序和网络程序。发展到今时今日仍有大量的不依赖网络的单机程序被我们使用,如记事本、Excel、PPT、ZIP压缩等软件都是大家熟知的装机必备软件。1.1.2. 网络程序最早的网络程序是基于主机+终端模式的,也就是整个应用中只有一台大型主机,各个操作地点都是使用一条专线与主机相连,终端不提供任何运算和界面,类似于Unix形式,所有的运算和处理都由主机来完成。主机一般处理能力非常强大,并且稳定,主要机型都是由IBM这样的大公司提供。但主机的高昂的价格以及扩展难、维护费用高等弊端并不是一般企业所能承

2、受,所以除银行、航空订票、证券等大企业在使用以外,大多数企业开始转投CS架构的程序,即客户端服务器架构。 1.1.3. 网络程序-CS架构CS架构的发展过程经历了两层CS架构,三层CS架构以及多层CS架构的演变。两层的CS架构是由客户端和后面的数据库组成的。数据库用于存放数据,并且使用数据库编程语言编写业务逻辑,客户端则使用VB、VC、Delphi这样的可视化编程方便的语言来开发客户端的输入输出界面。三层的CS架构指的是客户端+应用服务器+数据库,即将混合在数据库端的业务逻辑从中分离出来,放入到应用服务器中,数据库只负责数据的管理、存储及检索。客户端负责界面。这样的程序结构虽然在一定程度上降低

3、了对数据库编程的依赖,并且能够适应大型的应用程序,但数据通信模块的增加却提升了开发的难度以及整体架构的复杂度。1.1.4. 网络程序-BS架构为了降低三层CS架构中与通信有关的复杂度,BS架构开始成为了网络程序中一大重要的架构类型。BS架构即Browser + Web Server + DB。由于三层CS架构中,自定义协议提升了整体的复杂度,那么就将自定义协议变成标准的HTTP协议。于是客户端使用HTTP协议进行数据打包拆包的程序即各厂商依据标准开发的浏览器,Web服务器也是基于HTTP协议由一些厂商提供,如IIS,Apache等。这样基于浏览器和服务器的架构中,由于协议已被限定,所以与通信有

4、关的数据打包拆包的过程都不用我们开发人员来编写程序,只需要考虑将HTTP协议解析出来的数据进行业务处理,以及将什么样的结果提供给响应即可。也就是开发过程中只需要考虑7,8,9这三个步骤即可。于是大大降低了网络程序的开发难度,所以这种架构得到了大量的应用。 CS和BS的区别CSClient Server客户端需要单独开发单独安装BSBrowser Server由浏览器充当客户端,不需要单独开发及安装1.2. 什么是Servlet1.2.1. 扩展Web服务器功能Servlet是sun推出的用来在服务器端处理HTTP协议的组件.Servlet技术是使用Java语言开发的一套组件规范,不再像CGI技

5、术那样需要分配单独的进程来处理请求,而是单独分配一个线程来处理,于是大大提升了处理效率。并且Java语言是跨平台的语言,也提升了Web服务器扩展程序的可移植性,已经取代了CGI技术,成为BS架构中的主流技术。所有后续的BS架构中的主流框架本质上都是基于Servlet来实现的。1.2.2. 组件规范组件规范是依靠一套API来实现的,也就是说开发中只要基于Sun公司提供的这套API,按照一定的规则来编写程序,那么就可以实现针对Web服务器的功能扩展。但是组件只是对部分功能的一个实现,不能单独运行,必须放在一定的环境中才能运行。而这个针对各个组件进行管理、创建、销毁的运行环境即容器。1.2.3. S

6、ervlet组件运行原理Servlet作为补充Web服务器功能的组件,需要依赖于Servlet容器才能运行在浏览器中输入请求地址后,浏览器会依据IP地址及端口号找到对应的Web服务器,如果请求的是静态资源,Web服务器直接提供响应;如果请求的是动态资源,Web服务器的通信模块会将该请求传递给Servlet容器的通信模块,Servlet容器负责创建Servlet实例,并将请求中的数据解析出来传递给Servlet。在Servlet处理完数据之后,响应结果也是由容器的通信模块负责返回给Web服务器。后续的Servlet的销毁及管理都由容器来负责。能够充当Servlet容器这个角色的有很多软件,如To

7、mcat、Weblogic、JBoss等。而这些Servlet容器不仅仅具备了管理Servlet组件的功能,也具备了Web服务器的一些功能,所以很多时候只要安装一个Tomcat软件就同时具备了Web服务器及Servlet容器的双重功能。1.3. 如何开发一个Servlet1.3.1. 安装TomcatServlet是Web服务器功能的补充,要想能够运行必须依赖Servlet容器的管理才可以,为了进行下一步的Servlet的具体开发,则需要先准备用于运行Servlet的环境,在学习过程中我们选择的是主流的Tomcat作为Web服务器及Servlet容器。下面,简单介绍下Tomcat的安装步骤:步

8、骤一:下载并解压安装文件在浏览器中输入 tomcat.apache.org,在Download菜单中选择Tomcat7.0后会得到如图- 4 所示的下载链接。选择Core下面符合当前操作系统的版本后下载,下载后的文件为压缩文件,解压到硬盘即可。假定Tomcat解压后的路径为 c:javatomcat7.0步骤二:配置环境变量选择“我的电脑”右键 (“属性”( “高级系统设置” ( “环境变量” 用于新建及修改一些环境变量,以保证系统记录解压的Tomcat软件的位置。点击系统变量下的“新建”按钮,创建“变量名”为 CATALINA_HOME , “变量值“ 为 c:javatomcat7.0的环

9、境变量后点击确定按钮, 选中系统变量中的“Path“后点击编辑,在原有内容的最前面添加 “ %CATALINA_HOME%bin; ” 后点击确定按钮。注意:修改值的时候光标放在最前面,并且要用分号将路径与原有Path的值分开。 若安装jdk时已配置了CLASS_PATH变量,则选中系统变量中的“CLASS_PATH“后点击编辑,在原有内容的最前面添加 “ %CATALINA_HOME%libservlet-api.jar; ” 后点击确定按钮。注意:修改值的时候光标放在最前面,并且要用分号将路径与原有CLASS_PATH的值分开。至此,环境变量配置完毕。步骤三:启动Tomcat为了检测环境变

10、量是否配置成功,以及Tomcat是否能够成功启动,首先进入命令行,windows系统下可以使用 “cmd“命令进入。在命令行窗口下输入“startup”命令, 打开浏览器,输入 “ http:/localhost:8080 ”地址至此,看到该页面即代表Tomcat启动成功。步骤四:关闭Tomcat在命令提示符下输入“shutdown”命令后,Tomcat的命令提示符窗口会关闭,在浏览器中再次输入http:/localhost:8080,代表关闭Tomcat1.3.2. 开发Servlet的步骤步骤一:编写一个实现Servlet接口或继承HttpServlet的Java类在硬盘上新建一个文件名为

11、“HelloServlet.java”的源文件,并编写代码如下:01.package web;12.public class HelloServlet extends HttpServlet 13. protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException14. resp.setContentType(text/html);15. PrintWriter out = resp.getWriter();16. out.write(Hello

12、 Servlet);17. out.close();18. 19.步骤二:使用javac命令编译源文件为字节码文件在命令行提示符下,进入到HelloServlet.java文件所在的位置,输入如下命令:01.javac HelloServlet.java cp c:javatomcat7.0libservlet-api.jar在没有报错的情况下会在java源文件的同级目录内出现HelloServlet.class的文件,代表编译成功。步骤三:将编译完的组件打包将组建打包,并新建web.xml文件,内容如下:01.02.web-app version=2.5 03. xmlns= 04. xml

13、ns:xsi=http:/www.w3.org/2001/XMLSchema-instance 05. xsi:schemaLocation= 06. 07. 08. helloServlet09. web.HelloServlet10. 11. 12. helloServlet13. /sayHi14. 15.步骤四:部署将整个firstweb文件夹拷贝到c:javatomcat7.0webapps步骤五:启动Tomcat,并访问Servlet在命令提示符下输入“startup”命令启动Tomcat,启动成功后,打开浏览器,在地址栏中输入 “ http:/localhost:8080/fir

14、stweb/sayHi “回车,得到第一个Web应用程序的运行结果。1.4. 常见错误及解决方法1.4.1. 404错误产生原因及解决方法404产生的原因为Web服务器(容器)根据请求地址找不到对应资源,以下情况都会出现404的错误提示:1.输入的地址有误(应用名大小写不正确,名称拼写不正确) 2.在web.xml文件中和中的两个不一致 3.没有将工程部署到Tomcat的webapps下面 4.Web工程部署时的结构没有遵循Servlet的规范 具体的解决办法就是根据上面提到的4种情况,逐条进行检查。1.4.2. 容器如何找到service()方法当在浏览器中输入 http:/localhos

15、t:8080/firstweb/sayHi 这个地址后,容器是如何找到 HelloServlet.class这个文件并执行的呢?首先容器会根据firstweb这个应用名找到位于webapps下面对应的文件夹,然后根据地址中的“/sayHi”到web.xml文件中寻找与之匹配的节点,找到匹配的节点后会找到与该节点紧邻的节点,获取名称并在此寻找与该名称相等的节点,找到相等的节点后,搜寻该节点下面紧邻的节点,于是获取到了与该地址相对应的类名,借助于ClassLoader加载该类文件,创建对象并调用service()方法,客户端即看到了与该地址匹配的运行结果。1.4.3. 405错误产生原因及解决方法

16、405这个错误的产生原因是容器找不到service方法来处理请求。以下情况容器都将视为没有找到service()方法1.service方法名写错,字母顺序不对或大小写错误 2.service方法参数类型与标准不一致,或参数顺序与标准不一致。一定是先HttpServletRequest,然后是HttpServletResponse类型 3.service方法异常、返回值类型与标准不一致,一定是抛出ServletException、IOException。返回值类型是void。 解决405错误的方法即检查service方法是否存在,签名(方法名、参数、返回值、异常类型)是否与覆盖的父类中的方法一致

17、。1.4.4. 500错误产生原因及解决方法500的错误原因是请求的Servlet在执行service方法的过程中出现了错误,程序不能继续运行了。以下情况容器都将视为500的一种情况,而返回给客户端这个错误说明。1.Servlet没有继承HttpServlet或实现Servlet接口 2.web.xml文件中的写错,与真正的包名类名不符 3.service方法中的代码运行时抛出异常 解决500的方法为依据上面三种情况依次进行检测,逐条排除。1.5. HTTP协议1.5.1. 什么是HTTP协议HTTP协议是HyperText Transfer Protocol的缩写,即超文本传输协议。是由w3

18、c(万维网联盟)制定的一种应用层协议,用来定义浏览器与web服务器之间如何通信以及通信的数据格式。因为BS架构中的通信模块就是以HTTP这个协议作为标准协议的,所以对该协议有所了解可以更好的编写程序。1.5.2. HTTP协议是如何通信的HTTP协议的通信过程可以分为以下四个步骤:1.浏览器根据IP地址和端口号与服务器建立连接 2.向Web服务器发送请求数据包 3.Web服务器接收请求数据包后,发送相应的响应数据包 4.浏览器接收响应数据后关闭连接 在这个过程中,一次请求对应一次连接,当浏览器再次发请求给服务器时,Web服务器并不知道这就是上次发请求的客户端,这也是HTTP协议的一个特点-无状

19、态协议。这种需要时建立连接,使用结束后立即断开连接的方式使得Web服务器可以利用有限的连接为尽可能多的客户提供服务。也正是具备了这样的特点,才使得BS结构能够承载企业级应用的大量访问。1.5.3. HTTP协议中的数据格式在HTTP协议控制的数据走向中,既包括客户端发送给服务器端的请求数据也包括服务器端返回给客户端的响应信息,而具有一定规范的数据格式是保证通信标准的第一要素。借助于一些浏览器的插件或者浏览器本身内嵌的功能模块,可以实现对请求数据、响应数据的抓取,熟练掌握这些数据的主要部分,可以有利于理解BS模型中的一些处理问题的方式。通常情况下的请求数据包及响应数据包结 1.5.4. 请求数据

20、包组成请求数据包包含三个部分:1.请求行,包括请求方式,请求资源路径,以及协议版本 2.消息头是由若干的键值对组成,主要用于传递给Web服务器一些信息。如,浏览器版本、接受资源的类型等 3.在消息头的下面会跟着一个空白行,这样就可以区分出消息头与实体内容这两个部分。而在请求数据包中,大部分情况实体内容为空,只有当请求方式为POST时,实体内容才有要提交的表单数据 1.5.5. 响应数据包组成响应数据包也包含三个部分:1.状态行,包括协议类型、版本、状态码、状态描述 2.消息头(若干),也是多组键值对组成的信息说明。如返回的Content-Type消息头可以告诉浏览器返回的结果数据类型和字符集

21、3.实体内容,位于消息头下面的一个空白行之后。空白行意在通知浏览器消息头的结束以及结果内容的开始,浏览器就从这里开始数据的逐行解析1.6. Servlet如何处理HTTP协议1.6.1. 如何控制通信数据HTTP协议在Web容器这端主要表现为通信数据的到达以及响应数据的返回。于是Web容器将这两部分数据解释为两个对象,一个是与请求数据对应的HttpServletRequest对象,一个是与响应数据对应的HttpServletResponse对象。对于Servlet来讲,主要的业务逻辑过程就是从请求对象中获取数据,经过加工后将结果附着在响应对象中发送回客户端。1.6.2. HttpServlet

22、Request对象借助于HttpServletRequest对象可以实现很多操作,如读取请求行、消息头信息,取得路径信息等。使用如下代码可以实现相关功能。01.package web;14.public class RequestServlet extends HttpServlet 16. protected void service(HttpServletRequest req, HttpServletResponse resp)17. throws ServletException, IOException 18. Enumeration e = req.getHeaderNames (

23、);19. while (e.hasMoreElements ()20. String headerName = e.nextElement ().toString ();21. System.out.println (headerName+:+req.getHeader (headerName);22. 23. System.out.println (req.getMethod ();24. System.out.println (req.getProtocol ();25. System.out.println (req.getRequestURI ();26. System.out.pr

24、intln (req.getRequestURL ();27. System.out.println (req.getServletPath ();28. 29.1.6.3. HttpServletResponse对象HttpServletResponse对象最主要的作用即设置给浏览器的响应内容及浏览器的解码方式,此外设置cookie及重定向也都是响应对象的功能。这些功能对应的代码实现如下所示。01.package web;12.public class ResponseServlet extends HttpServlet 14. protected void service(HttpSer

25、vletRequest req, HttpServletResponse resp)15. throws ServletException, IOException 16. resp.setContentType(text/html;charset=gbk);17. resp.setStatus(404); 18. 19. 20. 注意:1)很多事情不需要我们处理通信的步骤由浏览器和服务器自动实现请求数据中的请求行,消息头由浏览器自动填写响应数据中的状态行,消息头通常由服务器自动填写2.少量事情需要我们处理请求数据中的实体内容由我们提供响应数据中的实体内容由我们提供通过request处理请求数

26、据,通过response处理响应数据 注册案例: Servlet核心(I)1.1. 请求方式 1.1.1. 请求方式的种类请求数据包中的请求行的第一个参数就是请求方式,是客户端向Web服务器发送请求时的意向说明,以此告知服务器该如何处理及解析提交的这些数据,而客户端提交的数据也会因为采用的提交方式不同来处理。区分请求种类也会为浏览器采用不同的缓存方式处理后续请求提供一个依据,从而提升响应速度。所以对于编程人员来讲,使用正确的请求方式是Web应用的一个重要方面。1.1.2. GET请求方式的特点使用GET提交数据时,form中的数据将编码到URL中。在使用上,当且仅当请求幂等时使用GET。重复访

27、问时使用GET方法请求的页面,浏览器会使用缓存处理后续请求。GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。 GET传送的数据量较小,不能大于2KB。 GET安全性非常低 跟是一样的,也就是说,action页面后边带的参数列表会被忽视;而跟是不一样的。 如下情况中浏览器会发送GET类型的请求:在地址栏输入一个地址 点击页面中的链接 表单的默认提交方式 1.1.3. POST请求方式的特点POST方式提交的数据是在HTTP协议的Hearder中进行传输的。在使用上,当请求会改变服务器数据或状态时(更新数据,上传文件)应该使用PO

28、ST。从使用经验上有如下总结:POST是将表单内各个字段与其内容放置在实体内容中内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 POST传送的数据量较大,一般被默认为不受限制 POST安全性较高 将表单的Method属性设置为POST时,浏览器会发送POST请求。1.2. Servlet如何运行1.2.1. Servlet运行的步骤Servlet作为Web服务器的补充功能在运行时需要受到Servlet容器的管理,其运行的流程如下:1.浏览器依据IP建立与容器的连接 2.浏览器将请求数据打包 3.容器解析请求数据包,封装request和response对象 4.容器依据请求资

29、源路径找到Servlet创建对象 5.容器将request和response对象作为参数传入service方法,并调用 6.容器将响应数据打包发给浏览器 7.浏览器取出结果,生成页面 1.3. Servlet如何输出中文1.3.1. 为什么返回的页面会有乱码Java语言在内存当中保存的每一个字符使用的都是Unicode字符集。一个中文字在内存中使用2个字节来表示。编码:将Unicode字符集对应的字节数组转换成某种本地字符集(比如UTF-8,GBK)对应的字节数组的过程叫做编码解码:将某种本地字符集对应的字节数组转换成Unicode字符集对应的字节数组的过程。如果想输出就涉及到编码问题。编码和解码使用的字符集不一致就产生了乱码问题。out.println(“”)这行代码是编码过程。现在这个out要输出的内容使用的是Unicode字符集,于是转换为默认的iso-8859-1。之所以使用这个格式是因为tomcat默认是英文的。所以调用out.println时,容器采用默认情况下的ISO-8859-1字符集去编码带有中文的输出内容时就产生了乱码。1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1