项目4 图书管理-2 servlet API函数.ppt_第1页
项目4 图书管理-2 servlet API函数.ppt_第2页
项目4 图书管理-2 servlet API函数.ppt_第3页
项目4 图书管理-2 servlet API函数.ppt_第4页
项目4 图书管理-2 servlet API函数.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA WEB应用开发,项目四 图书管理(Servlet),工作任务,任务一 掌握Servlet编程 任务1-1 Servlet概念; 任务1-2 Servlet基本结构; 任务1-3 编写Servlet 任务1-4 配置Servlet 任务1-5 Servlet应用程序 任务1-6 Servlet主要API 任务二 图书分类设计 任务三 图书信息管理设计 任务四 特征图书设计,2,复习,Servlet:运行在服务器端的Java 应用程序(遵守相应 规范的Java类) Servlet的生命周期 创建和初始化-init(),只有一次 处理请求service(),根据请求类别,调用doGet()

2、或doPost()方法处理请求并返回响应,有客户请求,就调用一次 服务终止destroy() 如何开发一个Servlet应用 编写Servlet 引入包主要为3类 继承HttpServlet,重写doGet或doPost方法(获取表单参数、操作选择、创建实体对象和设置属性、调用数据访问层、页面转向) 配置ServletWeb.xml Servlet 名字 Servlet 类的路径 对应访问的URL地址 运行servlet,任务1-6 Servlet主要API,相关知识 Servlet包 Servlet API Servlet相关接口和类 Servlet请求转发 Servlet数据共享,2020

3、/7/31,4,实践任务,主要内容 相关包中接口和类主要方法功能与应用 Servlet表单的处理 Servlet请求转发 共享数据 Servlet异常 Servlet开发中的一些方法和技巧的使用,2020/7/31,5,一、Servlet包中接口和类,Servlet包中接口和类,javax.servlet.Servlet接口 void init(ServletConfit config)throws ServletException只能被调用一次 ServletConfig getServletConfig() 返回传递到servlet的init()方法的ServletConfig对象 voi

4、d service(ServletRequest request, ServletResponse response)throws ServletException,IOException 处理request对象中描述的请求,使用response对象返回请求结果 String getServletInfo() 返回描述servlet的一个字符串 void destory() 当servlet将要卸载时由servlet引擎调用,Servlet包中接口和类,javax.servlet.GenericServlet类(协议无关版本) 为了简化Servlet的编写,提供的抽象类 直接实现 Servle

5、t接口和ServletConfig接口 除了Servlet中方法外,还有 String getInitParameter(String name) 返回具有指定名称的初始化参数值。通过凋用config.getInitParameter(name)实现。 Enumeration getInitParameterNames() 返回此servet已编码的所有初始化参数的1个枚举类型值。调用config.getInitParameterNames()获得列表。如果未提供 初始化参数,则返回1个空的枚举类型值(但不是null) String getServletName() 返回在Web应用发布描述器

6、(web.xml)中指定的servlet的名字。,Servlet包中接口和类,javax.servlet.http.HttpServlet类(HTTP版本) 应用于Web开发,主要应用于HTTP协议的请求与响应,是继承自GenericServlet的抽象类 针对HTTP的请求方法分别提供了7个处理方法 doGet doPost doPut doDelete doOptions doTrace doHead service()方法 Void service(ServletRequest request, ServletResponse response) Void service(HttpSer

7、vletRequest request,HttpServletResponse response),参数分别是: HttpServletRequest request HttpServletResponse response,Servlet包中接口和类,javax.servlet.ServletRequest接口(协议无关版本) 当客户请求时,Servlet容器会创建该对象,封装请求数据 主要处理 找到客户端的主机名和IP地址 检索请求参数 取得和设置属性 取得输入和输出流 javax.servlet.ServletResponse接口(协议无关版本) Servlet容器在创建ServletR

8、equest对象的同时,也创建ServletResponse对象,用来封装响应数据 主要用来处理输出流及其内容类型和长度,getAttribute、setAttribute getCharacteEncoding getParameter getRequestDispatcher,getWriter setContentType getCharacterEncoding,Servlet包中接口和类,javax.servlet.http.HttpServletRequest接口(HTTP版本) 继承自ServletRequest 除了主要处理 读取和写入HTTP头标 取得和设置cookies 取

9、得路径信息 标识HTTP会话 新增方法 javax.servlet.http.HttpServletResponse接口(HTTP版本) 继承自ServletResponse 加入表示状态码、状态信息和响应头标的方法,还负责对URL中写入一Web页面的HTTP会话ID进行解码 新增方法,getCookies getHeader getMethod getSession,sendRedirect sendError addCookie setHeader,练习1 输出HTTP信息,创建一个Web应用-输出HTTP信息 编写OutputInfoServlet 获取HTTP请求头信息的值 获取客户端

10、的IP地址和端口号 获取服务器端的IP地址和端口号 Web.xml配置 Servlet名字 Servlet映射 Servlet初始参数 访问该Servlet,2020/7/31,13,二、Servlet的表单处理,HTML 的表单,注意form的两个属性 method get 参数名及参数值传递到实际的URL地址中,放在?后面,不安全。 post 参数名及参数值不附加到实际的URL地址中 action 如果以“/”开始,是从WebRoot目录开始查 如果前面没有“/”,是从当前工程开始 如果要递交给某个Servlet,要和web.xml中servlet映射路径一致,但一般是Servlet映射路

11、径去掉“/” Servlet中处理表单信息 获取参数 request.getParameter(“参数名”) 获取多个参数getParameterValues,Servlet的中文乱码处理,中文处理 客户端、服务器端、Web应用程序、数据库使用不同编码方式,导致在字符数据在转换时,出现乱码问题 解决方案 以post方法提交的表单数据中有中文 在获取请求参数之前 request.setCharacterEncoding(“GBK”); 在向浏览器发送中文数据之前 response.setContentType(text/html;charset=gb2312); 以get方法提交的表单数据中有中

12、文 自己进行编码转换 String name=request.getParameter(“name”); name=new String(name.getBytes(“ISO-8859-1”),”GBK”) 编写专门工具方法 public String toGBK(String str) return new String(str.getBytes(“ISO-8859-1”),”GBK”); ,提交的数据会附加到URL后,发送到服务器,此时调用request.setCharacterEncoding(“GBK”)无用,练习2 表单中文处理,创建一个Web应用-中文处理 编写一个html页面 输

13、入用户名和密码 递交方式分别用post和get 编写Servlet 重写doPost方法,输出表单中的中文字符 重写doGet方法,输出表单中的中文字符 Web.xml配置,2020/7/31,16,三、Servlet请求转发和重定向,请求转发和请求重定向 利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应 利用HttpServletResponse的sendRedirect()方法可以重定向。 学习掌握 RequestDispatcher接口方法 forward include 得到RequestDispat

14、cher对象 ServletResponse接口中的sendRedirect()方法和forward()方法的区别,RequestDispatcher接口方法,RequestDispatcher对象由Servlet容器来创建,封装一个由路径所标识的服务器资源。 RequestDispatcher接口中定义二种方法用于请求转发 forward(ServletRequest,ServletResponse) 将请求转发给服务器上另外一个Servlet,JSP页面,或者HTML文件 这个方法必须在响应被提交给客户端之前调用,否则抛出异常。 方法调用后在响应中的没有提交的内容被自动消除。 includ

15、e(ServletRequest,ServletResponse) 用于在响应中包含其他资源(Servlet,JSP或HTML文件)内容。 即请求转发后,原先的Servlet还可以继续输出响应信息,转发到的Servlet对请求做出的响应将并入原先Servlet的响应对象中。,forward方法和include方法的区别,forward方法 调用后在响应中的没有提交的内容被自动消除。 请求后的URL路径为目标对象的路径 include方法使原先的Servlet和转发到的Servlet都可以输出响应信息。,获取RequestDispatcher对象,三种方法 利用ServletRequest接口中

16、getRequestDispatcher(String path)方法 利用ServletContext 接口中getRequestDispatcher(String path)方法 利用ServletContext接口中getNamedDispatcher(String servletname)方法 区别 参数的区别 ServletRequest接口中的参数路径不仅可以相对于当前Servlet上下文根,还可以相对与当前Servlet路径 ServletContext接口的中参数路径必须以“/”开始,是相对于当前Servlet上下文(当前工程),练习3 请求转发1,创建一个Web应用-测试请求

17、转发 编写一个login登录页面login.html 输入用户名和密码 表单递交给相应Servlet 处理 编写LoginServlet 获取页面表单参数 编写代码 进行请求转发 登录成功,转向成功页面success.html 登录不成功,转向失败界面failed.html 分别使用 利用ServletRequest接口中getRequestDispatcher(String path)方法 利用ServletContext 接口中getRequestDispatcher(String path)方法 注意路径写法的区别,2020/7/31,21,sendRedirect() 和forward

18、()方法的区别,都是用于请求转发的方法,转发给另外的资源为客户端服务 区别 sendRedirect() ServletResqonse接口中的方法,用于响应重定向 跳转后浏览器地址栏变化 可以请求其他服务器资源 参数可以指定为相对路径(没有以”/”开始)、 绝对路径(以“/”开始)或其它Web应用 传值只能在url中带parameter或者放在session中,无法使用request.setAttribute来传递。 forward() RequestDispatcher接口中的方法,用于请求跳转 跳转后浏览器地址栏不会变化 只能在应用程序内部转发 参数 ServletRequest获取的,

19、参数可以指定为相对路径(没有以”/”开始)、绝对路径(以“/”开始) ServletContext获取的,参数只能指定为绝对路径 传值可以使用三种方法:url中带parameter,session,request.setAttribute, 浏览器访问Servlet1。 Servlet1想让Servlet2为客户端服务。 Servlet1调用sendRedirect()方法, 将客户端的请求重定向到Servlet2。 浏览器访问Servlet2。 Servlet2对客户端的请求做出响应。, 浏览器访问Servlet1。 Servlet1想让Servlet2对客户端的请求 进行响应,于是调用fo

20、rward()方法, 将请求转发给Servlet2进行处理。 Servlet2对请求做出响应。,Servlet中跳转流程,实际上是告诉浏览器Servlet2所在的位置,让浏览器重新访问 Servlet2,会在响应中设置Location响应报头。要注意的是, 这个过程对于用户来说是透明的,浏览器会自动完成新的访问,练习4 请求转发2,创建一个Web应用 编写一个login登录页面login.html 输入用户名和密码 表单递交给相应Servlet 处理 编写LoginServlet 获取页面表单参数 进行请求转发 登录成功,重定向到成功页面success.html 登录不成功,重定向到失败界面f

21、ailed.html 分别使用 sendRedirect() forward() 注意浏览器地址栏显示区别,2020/7/31,24,四、数据共享,通过parameter传递和保存数据 可以来自request、 ServletConfig,以及Web模块的初始化参数(ServletContext) 例如 request共享数据 request.getParameter(name); 通过Attribute传递和保存数据 可以通过request、session和Servletcontext 例如 request.setAttribute(name,name); request.getAttrib

22、ute(name); 对于request的Attribute进行共享数据时,只能是跳转,而不能是重定向,不然的话,接收到的数据将会是一个 null 对于session ,只要session一直存在,数据一直有效 对于Servletcontext ,保存的数据在任何时候都有效,在forward和include时 parameter和Attribute都有效 因为在这两种情况下,request和session ServletContext均存在。 在redirect的情况下 只有session和ServletContext上的Attribute存在,request的parameter和attrib

23、ute均丢失了,数据共享,request, 一个用户可有多个 session, 一个用户一个 servletContext 所有用户共用一个,ServletContext上下文,用来表示Servlet运行的环境的接口。通过它可以: 获得文件的MIME类型 获得资源的URL 利用ServletContext存放一些所有Servlet都能共享的数据 记录错误和信息化消息 一个ServletContext对象表示了一个Web应用程序的上下文 -已知路径的根 例如:Servlet上下文被定位于http:/localhost:8080/project2 以/project2请求路径(称为上下文路径)开始

24、的所有请求被发送到与此ServletContext关联的Web应用程序,ServletContext上下文,获取ServletContext对象 ServletConfig对象的getServletContext()方法 GenericServlet类的getServletContext()方法 ServletContext接口中方法 Object getAttribute(Stringname) void setAttribute(Stringname, Objectobject) Enumeration getAttributeNames() ServletContext getContext(Stringuripath) String getContextPath() String getInitParameter(Stringname) / String getMimeType(Stringfile) RequestDispatcher getRequestDispatcher(Stringpath),练习5 共享属性应用,创建一个Web应用-ServletContext上下文应用 编写一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论