版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Servlet目标开发环境配置Servlet包的体系结构Servlet容器(引擎)javax.servlet包常用的接口、类、异常javax.servlet.http包常用的接口、类Servlet的生命周期及方法使用Servlet的步骤HttpServlet其他方法GET与POST请求处理表单POST请求、处理表单GET请求HttpServletRequest对象的方法、HttpServletResponse对象的方法包含文件域元素的表单会话跟踪Servlet中的成员变量的使用开发环境配置(IDE)集成开发环境的配置MyEclipse10.0 + tomcat7.0(windows(32、64
2、)、linux安装版.exe)Servlet 简介1Servlet基于Java 编程语言开发的服务器端程序运行在 Web 服务器中可生成动态的 Web 页面对客户端的请求做出响应Web浏览器Web服务器HTTP 请求HTTP 响应ServletServlet 简介2Servlet的优点:持久性:Servlet 只须由 Web 服务器加载一次,即可维护请求之间的服务运行速度快:由于只加载一次,所以提供了更佳的性能跨平台:由于是用 Java 编写,所以 Servlet 可跨平台可扩展性:Java 的所有优点都可以在 Servlet 中体现 安全性:访问 Servlet 的唯一途径是通过服务器 通用
3、性:Servlet 可以与各种客户端一起使用Servlet 包的体系结构Servlet 使用以下两个包中的类和接口:javax.servlet包含了可以支持通用、跨协议的 Servlet 类javax.servlet.http包含了特定于 HTTP 的功能。每个 Servlet 都必须实现 javax.servlet.Servlet 接口。大部份 Servelt 通过扩展以下其中一个特殊类来实现这一接口:javax.servlet.GenericServlet 或 javax.servlet.HttpServlet。跨协议 Servlet 应该继承 GenericServlet。Http Se
4、rvlet 就继承 HttpServlet,HttpServlet 继承了 GenericServlet,并扩展了特定于 HTTP 的功能用户自定义的 ServletGenericServletHttpServletServletServlet包的层次结构Servlet 容器(引擎)Web 服务器包含了 Servlet 容器Context 容器是用来管理 Servlet一个 Context 容器对应一个 Web 工程Web服务器与Servlet容器Servlet容器工作原理javax.servlet 包常用的接口、类、异常包常用接口接口说明ServletRequest此接口用于将请求传送给 S
5、ervlet。在收到请求时,Servlet 引擎会将关键的请求信息封装在实现 ServletRequest 接口的对象中,传递至 Servlet 的 service() 方法ServletResponse此接口提供服务器对客户端请求的响应对象的表示。Servlet 引擎会将实现 ServletResponse 接口的对象传递给 Servlet 的 service() 方法。接着 Servlet 就可以使用此对象对客户端的请求做出响应RequestDispatcher此接口定义一个用于接收客户端的请求,并将其它发送至任何资源的对象。此接口还可以用于封装 Servlet。RequestDispat
6、cher 对象用作资源的封装器,通过路径或名称指定。资源可以是服务器上的 Servlet、HTML文件、JSP文件Servlet这是每个 Servlet 都必须实现的接口,它定义必须由 Servlet 实现的方法ServletConfig此接口定义 Servlet 配置对象。此对象由 Servlet 引擎用于将任何住处传递给 Servlet,以便可初始化 ServletServletContext此接口定义了一组方法,Servlet 使用这些方法与 Servlet引擎进行通信SingleThreadModel此接口确保每次 Servlet 只能处理一次请求常用类及异常类说明GenericSer
7、vlet这是大部份非 HTTP Servlet 扩展的类。此类定义通用、跨协议的 ServletServletInputStream这是提供输入流用于读取来至客户端请求的二进制类型的类。此类包括方法 readLine(),以此有效实现每次读取一行数据ServletOutputStream此类的运行方式与 ServletInputStream 相同,但此类提供输出流,用于将二进制流数据发送给客户端ServletException此异常是常规异常,由 Servlet 在执行过程中遇到困难时抛出UnavailableException此异常定义的是,由 Servlet 抛出以表示 Servlet 永
8、久或临时不可用的异常javax.servlet.http包常用的接口、类常用接口接口说明HttpServletRequest此接口扩展 ServletRequest 接口,并支持 ServletRequest 接口的所有方法。HttpServletRequest 定义用于描述 HTTP 请求的方法。实现 HttpServletRequest 接口的对象被传递给 Servlet 的 service() 方法或任何 do() 方法HttpServletResponse此接口提供服务器对客户端请求的响应对象的表示。Servlet 引擎会将实现 ServletResponse 接口的对象传递给 Ser
9、vlet 的 service() 方法。接着 Servlet 就可以使用此对象对客户端的请求做出响应RequestDispatcher此接口扩展 ServletResponse,并支持 ServletResponse 接口的所有方法。HttpServletResponse 接口提供服务器对客户端请求的响应对象的表示。Servlet 可以使用实现 Servlet 引擎传递的 HttpServletResponse 接口的对象。此对象将被传递至 Servlet 的 service()方法HttpSession此接口提供一种方法,用于在对 Web 站点的请求或访问超过一个页面时标识用户HttpSes
10、sionBindingListener在对象绑定至会话上或解除会话绑定时,此接口将通知对象常用类类说明Cookie可以创建 Cookie,Cookie 存储少量由 Servlet 发送至客户端的信息。客户端可在稍后要访问以前访问过的网页时使用已存储的信息HttpServlet是最常用于扩展 Servlet 的类,这是因为很多 Servlet 应用程序都按 HTTP 协议运行。此类支持 HTTP 功能以及 Servlet 类的方法,它是个抽象类。它接收客户端的请求,并向客户端发送响应HttpServletBindingListener在对象绑定至会话上或解除会话绑定时,此类会将对象传递给实现 H
11、ttpSessionBindingListener 接口的会话Servlet 的生命周期服务器加载 Servlet服务器创建Servlet类的实例 调用 Servlet 实例的init() 方法 收到请求调用 service() 方法service() 方法处理请求并将输出结果返回客户端 Servlet 等待下一个请求或由服务器卸载Servlet 在服务器调用destroy() 方法后被卸载 Servlet 生命周期中的方法Servlet 服务器 (容器、引擎)负责管理 Servlet 的生命周期Servlet 生命周期涉及的方法init()service() doPost(),doGet()
12、destroy()init() 方法将 Servlet 加载至服务器时,服务器都会调用 Servlet 的 init() 方法init() 方法在 Servlet 处理第一个请求之前调用,此方法用于执行 Servlet 初始化ServletConfig 对象该对象向 Servlet 提供其它初始化参数信息。该对象还有对 ServletContext 对象的引用,Servlet 可以使用 ServletContext 对象获取其环境信息重写 init() 方法时必须遵循下列规则如果发生初始化错误,致使 Servlet 不能处理客户端请求,则抛出 UnavailableException请勿调用
13、System.exit()service() 方法Servlet 的 service() 方法Servlet 接收客户端的请求后,处理请求的方法service() 方法接收两个对象ServletRequest:用于封装客户端至服务器的请求信息ServletResponse:用于封装 Servlet 返回给客户端的响应信息HttpServlet 的 service() 方法HttpServlet 接收客户端的请求后,处理请求的方法service() 方法接收两个对象HttpServletRequest:用于封装客户端至服务器的请求信息HttpServletResponse:用于封装 Servle
14、t 返回给客户端的响应信息HttpServlet 类的 service() 方法可再细分为:doGet()、doPost()、doDelete()、doHead()、doOptions()、doPut()、doTrace()。其中,doGet()、doPost()是两个常用于处理服务器的请求,并生成响应的方法,一般我们重写这两个方法,而不重写 service() 方法destroy() 方法卸载 Servlet 时,服务器将调用 destroy() 方法在 destroy() 方法中,Servlet 应该释放任何已获得的资源;还可以在 destroy() 方法中使 Servlet 有机会写出未
15、保存的高速缓存信息或任何在下次调用 init() 方法时应该读取的持久性信息服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后调用 destroy() 方法使用 Servlet 的步骤1、自定义一个类,并继承 HttpServlet2、重写 HttpServlet 的 init()、doGet()、doPost()、destroy() 方法3、在 WebRoot/WEB-INF/web.xml 文件中配置 Servlet格式:例如:4、访问 Servlet: 应用程序上下文根的路径/Servlet的URL路径例如: Servlet名称 Servlet类的完整路径(包名+类名) 在se
16、rvlet标签中定义的Servlet名称 Servlet的URL路径(该路径是相对于web应用程序上下文根的路径) LoginServlet com.great.servlet.LoginServlet LoginServlet /LoginServletHttpServlet 其他方法方法描述getInitParameterNames()获取 Servlet 在 web.xml 中配置的所有初始化参数名称的枚举(Enumeration)getInitParameter(paramName)根据参数名称,获取对应的参数值(String)getServletConfig()获取 Servlet
17、配置对象(ServletConfig)getServletContext()获取 Servlet 上下文环境对象,即 Servlet 环境(ServletContext)getServletInfo()获取Servlet描述信息GET 与 POST 请求虽然请求的种类较多,Servlet也提供了对应的处理方法,但在目前的应用中,主要是用 GET 与 POST 请求GET 请求主要是如:打开IE浏览器直接在地址栏输入 Servlet 的访问地址时产生的请求。表单也可以以 GET 方式提交产生 GET 请求POST 请求主要是由用户提交表单(且表单是以 POST 方式提交)时产生的请求处理表单 P
18、OST 请求表单是 HTML 中使用最广泛的传递信息的手段,也是用户与系统交互主要方式,撑握 Servlet 与表单的交互,就在客户端与服务器之间架起了一座桥梁。首先我们来处理以 POST 提交表单的请求(即 POST 请求):HTML中请单元素如:,其中 method 用于设置表单提交方式;action 用于指定表单提交给谁处理登录表单页面doPost表单以 POST 方式提交,即 POST 请求。那么 Servlet 将调用 doPost() 方法来处理请求调用 doPost() 时系统会传入两个参数HttpServletRequest 对象封装请求中数据(HTTP头部)及客户端信息(如:
19、客户机的 IP 地址等) HttpServletResponse 客户端响应(如输出显示数据)HttpServletRequest 对象的方法方法描述getRemoteAddr()获取客户端 IP 地址getScheme()获取请求协议名getRemoteHost()获取客户端 IP 地址getRemotePort ()获取客户端端口getRemoteUser()获取客户端用户getContextPath()获取上文路径名setCharacterEncoding(CharacterEncoding)设置 HttpRequest 对象的数据字符集。CharacterEncoding:字符集编码,
20、用于解决中文乱码的问题getCharacterEncoding()获取 HttpRequest 对象的数据字符集getParameter(paramName)获取用户在表单中输入的数据。其表单元素名在表单中只对应一个输入。 如果表单元素名对应多个表单中元素,用此方法则只能获取第一个输入。paramName:参数名getParameterValues(param)获取用户在表单输入的数据(如:爱好等)。在参数具有多个值时使用,此方法返回指定参数的值数组 (如:写字 阅读)getQueryString()获取 URL 携带的参数字符串getReader()返回 BufferedReadergetI
21、nputStream()返回 ServletInputStreamgetRequestDispatcher(path)此方法返回 RequestDispatcher 对象。path参数用来指定资源的 URL。可以请调用此 RequestDispatcher 对象的 forward 方法进行重定向 (运用 forward 方法只能重定向到同一个 Web 应用程序中的一个资源)。HttpServletResponse 对象的方法方法描述getWriter()返回Writer对象,用于将文本数据返回给用户getOutputStream()返回ServletOutputStream对象,用于返回二进制
22、数据setCharacterEncoding(characterEncoding)设置发送响应的字符编码。characterEncoding 参数用来指定字符编码getCharacterEncoding()获取发送响应的字符编码setContentType(type)设置响应的内容类型。type 参数用来指定内容类型sendRedirect(location)重定向到指定的资源页面(注:sendRedirect方法可以让你重定向到任何URL)。location 参数用来指定资源的 URL处理表单 GET 请求表单以 GET 方式提交,form 设置如: GET 请求由 Servlet 中的 d
23、oGet() 方法处理,处理方式方法和 doPost() 完全相同一个 Servlet 可同时处理 POST、GET 请求,则实现 doPost() 或 doGet() 后,在 doGet() 中直接调用 doPost (),或在 doPost() 中直接调 doGet()处理其它 GET 请求除表单可以发送 GET 请求外,在 IE 地址栏直接输入 Servlet 地址发送请求是最常见的 GET 请求在地址栏输入地址发送 GET 请求,也可以传数据到服务端。 在上面表单以 GET 方式提交发送请求时大家应该已经看到,这时的数据是以查询串的形式发送。如: ?参数名1=值1&参数名2=值2&参数
24、名3=值3request. getQueryString();/可获取整个查询串; 获取参数名对应的数据用:request.getParameter(“参数名”); request.getParameterValues(“参数名”);例如:在 IE 中输入: GET、POST 请求小结GET 请求与 POST 请求的特点:GET 请求以地址栏中查询串形式向服务端传数据POST 请求将数据封装入请求包包体中向服务端传数据何时使用 GET 请求数据量较小(不能大于2k)要传数据不涉及隐私(如:密码)何时使用 POST 请求数据量较大(如:上传文件)数据涉及个人隐私(如:密码)包含文件域元素的表单包
25、含文件域元素的表单可实现文件上传等实用功能表单form设置如: ,其中,method 必需是POST, 且加属性 enctype=“multipart/form-data”对于文件域表单 Servlet 无法通过元素名获取值,getParameter(paramName)、getParameterValues()都无法使用可通过 request.getInputStream() 获取流,再分析流来取出相应数据,但分析流很复杂,一般我们引入第三方包来分析处理包含文件域元素的表单示例使用 commons 包中的 jar 文件来实现文件上传步骤:1、在项目是导入以下包commons-fileuplo
26、ad-1.2.1.jarcommons-io-1.3.2.jar2、表单form设置如: 3、在 RegisterUserServlet 中,使用 DiskFileItemFactory、ServletFileUpload、FileItem 等类来处理表单数据和文件上传会话跟踪会话跟踪是保存用户和服务器之间会话状态及信息的方案客户端必须提供一个唯一标识以便服务器可识别它客户端必须提供某些信息以便服务器可用于正确处理请求使其他服务器端应用程序可以跟踪用户会话跟踪的管理机制可使用 session.maxresidents 属性对内存中可以存在的会话数量进行限制在超过上述限制时,会话跟踪器会将近来最
27、不常用的会话交换出去,以文件形式保存在磁盘上会话无效在 session.invalidationinterval 属性中设置,不受会话交换的影响服务器关闭时,内存中的会话即被写入 session.swapdirectory 属性中指定的磁盘。一旦启动服务器,写入磁盘的会话就变得有效会话跟踪技术用户认证:在 Web 服务器只允许那些使用用户名和口令进行登录的客户端访问某些资源时,就需要使用用户认证隐藏表单字段:添加到 HTML 表单中,但不在客户端的浏览器中显示的字段URL重写:在 URL 中附加信息持久Cookie:是 Web 服务器发送至浏览器,以后可从该浏览器上读回少量信息Session会
28、话跟踪-CookieCookie是 Web 服务器发送至浏览器,以后可从该浏览器上读回少量信息。浏览器收到 Cookie 后,在每次访问服务器上的页面时都会将其它发送回服务器。Cookie 的值可以方便地标识客户端Servlet 中创建和发送 CookieCookie 对象:通过 new Cookie(name, value) 构造对象Cookie 对象的方法setDomain:设置要访问哪个域名才能获取到Cookie,以“.”开始setMaxAge:设置Cookie的失效时间,设置为 -1,则表示关闭浏览器后,cookie立即失效setPath:设置要访问哪个路径才能获取到CookieaddCookie(Cookie):通过 HttpServletResponse 对象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新三基三严考试题题库(附答案)
- 2026农业农产品行业市场现状供需分析及投资评估规划分析研究报告
- 2025新时事热点政治题库及答案(满分必刷)
- 2025新中级会计职称考试经济法考试题及答案
- 2026届内蒙古巴彦淖尔五原县联考中考英语考前最后一卷含答案
- 河北省保定市竞秀区2026届中考英语最后冲刺模拟试卷含答案
- 2026届天津市大港油田重点达标名校中考语文模拟试题含解析
- 2026届江苏省苏州市葛江中学中考历史对点突破模拟试卷含解析
- 2026年计算机网络技术的实习报告3000字
- 农田水利设施隐患排查评估整治技术指南(2025年版)
- TD/T 1036-2013 土地复垦质量控制标准(正式版)
- 《变电站二次系统数字化设计编码规范》
- 公交司机环境监测远端交互系统设计
- 小学五年级《美术》上册知识点汇总
- 中国儿童原发性免疫性血小板减少症诊断与治疗改编指南(2021版)
- 2023年新高考II卷数学高考试卷(原卷+答案)
- 电子支付与网络银行课件
- 京东集团员工手册-京东
- 消防工程移交培训资料及签到表
- 自来水企业危险源辨识清单
- 光化学合成在药物合成中的应用
评论
0/150
提交评论