您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > Servlet的PPT
Servlet本节主要目标Servlet的定义与作用Servlet的开发、部署、运行、映射Servlet的生命周期Servlet的常用对象Servlet的会话跟踪技术Servlet的过滤器与监听器什么是ServletServlet是提供基于(HTTP)协议的请求/响应服务的java应用程序,可以生成动态的WEB页面.Servlet本质就是cgi,动态产生网页程序的技术Servlet的作用读取客户程序发送来的显式数据(表单数据)读取客户程序发送来的隐式数据(请求报头)生成相应的结果发送显式的数据给客户程序(HTML)发送隐式的数据给客户程序(状态代码和响应报头)Servlet的体系结构在J2EE中跟Servlet相关的一个包是javax.servlet,其中最基本的Servlet被声明为一个接口javax.servlet.Servlet,这是Servlet最高层次的一个抽象,它是和网络协议无关的。同样在javax.servlet中,实现了一个类javax.servlet.GenericServlet,这个类实现了Servlet接口,也是和协议无关的。而这个类是构建其他和协议相关的Servlet子类型的通用的父类(如HttpServlet)Servlet的体系结构Servlet所适用的网络协议可以是多种多样的,比如HTTP,FTP,SMTP,TELNET等,但是就目前而言,只有HTTP服务已经形成了标准的Java组件。对应的软件包有两个javax.servlet.http和javax.servlet.jsp,分别对应Servlet和JSP编程。通常所说的Servlet编程主要就是指针对HTTP的Servlet编程,用到的就是javax.servlet.http包中的类(典型的就是HttpServlet类),实际上JavaServlet编程的概念要更广一些。Servlet的包层次结构ServletGenericServletHttpServlet用户自定义的ServletServlet:与协议无关GenericServlet:与协议无关,是其它协议有关Servlet的父类。HttpServlet用户自定义的ServletServlet的运行过程Servlet的运行过程请求客户端响应Servlet运行于服务器上Servlet的开发importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassClientServletextendsHttpServlet{protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{response.setContentType(“text/html;charset=GBK”);PrintWriterout=response.getWriter();out.println(“htmlbody您好!/body/html”);}}需要导入的包用于处理GET请求的方法创建设置文本格式和PrintWriter对象的方法以将数据发送给客户端Servlet的部署web.xml文件中配置Servletservletservlet-nameclientservlet/servlet-nameservlet-classchapter2.ClientServlet/servlet-class/servletservlet-mappingservlet-nameclientservlet/servlet-nameurl-pattern/clientservlet/url-pattern/servlet-mapping注:一个Servlet可以对应多个Servlet-Mapping的映射Servlet运行端口号/Web工程名称/Servlet的映射URLServlet的生命周期调用service()方法服务器加载Servlet服务器创建Servlet类的实例调用Servlet实例的init()方法收到请求service()方法处理请求并将输出结果返回客户端Servlet等待下一个请求或由服务器卸载Servlet在服务器调用destroy()方法后被卸载Servlet的生命周期Servlet容器创建Servlet的一个实例Servlet的生命周期就是指创建Servlet实例之后其存在的时间以及何时消失生命周期的3个方法为:init()service()destroy()Servlet的生命周期生命周期的各个阶段为:实例化Servlet容器创建Servlet的实例初始化该容器调用init()方法服务如果请求Servlet,则容器调用service()方法销毁实例之前调用destroy()方法销毁不可用销毁实例并标记为垃圾收集init()方法服务器构造Servlet实例后调用执行Servlet初始化–创建或加载Servlet在处理请求时使用的对象可以覆盖init()方法,添加其他初始化内容service()方法service()方法一般不去覆盖它;service()方法用于分析用户的请求,根据用户的请求类型;调用不同的处理方法;如:doPost(),doGet()等通常重写的是doPost()或doGet方法destroy()方法卸载Servlet时,调用destroy()方法服务器在完成所有服务调用之后,或者在经过服务器特定的秒数之后调用destroy()方法容器关闭的时候调用destory方法生命周期所引起的问题Servlet中成员变量的使用Servlet的实例化在请求时才被实例化?Servlet中Destory方法的调用Servlet系统常用类javax.servlet包的接口为ServletConfig接口在初始化的过程中由Servlet容器使用ServletContext接口定义Servlet用于获取来自其容器的信息的方法ServletRequest接口向服务器请求信息ServletResponse接口响应客户端请求Servlet系统常用类javax.servlet包的类为ServletInputStream类用于从客户端读取二进制数据ServletOutputStream类用于将二进制数据发送到客户端Servlet系统常用类javax.servlet包的类为HttpServletRequest接口提供HTTP请求信息HttpServletResponse接口提供HTTP响应ServletConfig对象ServletConfig对象的常用方法getServletName()getInitParameter()getInitParameterNames()ServletContext对象ServletContext对象的常用方法getContextPath()getInitParameter()getRealPath()getResourceAsStream()注意与ServletConfig中的获取参数方法的区别ServletContext对象中操作作用域的方法Set/Get/RemoveAttribute()HttpServletRequest对象Request对象常用的方法操作获取服务端的信息获取客户端的信息获取路径的一些方法获取表单信息的方法获取请求转发对象的方法获取Session和Cookie的方法POST请求与GET请求的区别Get请求与Post请求的特点:Get请求以地址栏中查询串形式向服务端传数据Post请求将数据封装入请求报头中向服务端传数据何时使用Get请求数据量较小(不能大于2k)要传数据不涉及隐私(如:密码)何时使用Post请求数据量较大数据涉及个人隐私(如:密码)POST/GET请求的乱码解决出现乱码的原因:客户端编码与服务端编码不一致。解决方法:让客户端与服务端的编码一致。POST乱码解决request.setCharaceterEncoding(GBK);[硬编码]重新对获取的值进行编码[软编码]Stringusername=newString(username.getBytes(ISO-8859-1),GBK);使用过滤器解决编码问题GET乱码解决由于在Tomcat5.0以上,Tomcat将GET与POST的请求分开做处理。因此request.setCharacterEncoding(GBK)对GET提交的中文不起作用。server.xml中加入的端口号配置部分加入。URIEncoding=GBK重新对获取的值进行编码[软编码]Stringusername=newString(username.getBytes(ISO-8859-1),GBK);Response对象的使用Response对象常用方法response.setCharacterEncoding()//设置响应编码response.setContentType()//设置响应输出类型response.getWriter();//获取响应的输出流。response.addCookie()//往客户端写入Cookie对象。response.getOutputStream();//获取往客户端写二进制流(文件下载)response.setHeader(,);//设置头部消息,清缓存。response.sendRedirect(location);//页面地址的重定向。流对象ServletInputStream和ServletOutputStream是用于在Servlet中开启输入流和输出流中使用两个对象一般用于文件的上传和下载功能实现Web组件的关系Web组件之间的关系请求转发请求包含重定向重定向重定向HttpServletResponse:sendRedirect(Stringurl);重定向相当于在客户端浏览器地址栏中输入新地址,发送新请求;也就是说重定向发生在客户端。地址栏发生变化;两个web组件间不共享request。重写向服务端重定向Response.sendRedirect();客户端重定向Window.location.href/window.location.replace()问题:重定向后如何传递数据请求转发请求转发RequestDispatcher:forword(HttpServletRequest,HttpServletResponse);请求转发发生在服务器端;一个web组件(如:servlet)接收到一个请求后,自身不做处理,而是转发后另一个web组件(如:servlet)处理;在服务端完成;客户端地址栏地址不发生变化;两个web组件间共享request。请求转发与重定相比:请求转发相当于只是一个请求;效率更高。请求转发请求转发默认从工程的上下文目录算起。路径前面要加/。表示使用绝对路径。使用请求转发,不管转发多少次请求,都共享request中的数据。dispatcher.forward(request,response);把request,response传递到下一个Servlet中。请求包含请求包含默认从工程的上下文目录算起。路径前面要加/。表示使用绝对路径。请求包含发生在服务端上面。使用请求包含,不管包含多少次请求,都共享request中的数据。使用场合:网页的头部与尾部的版权声明:做一个Servlet,用时包含这个Servlet。组件使用场合请求转发使用场合重定向使用场合作用域中的生命周期常用的作用域Request作
本文标题:Servlet的PPT
链接地址:https://www.777doc.com/doc-4545814 .html