您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > java-web-Servlet技术
2020/3/41JavaWeb开发技术第2章Servlet技术2020/3/4JavaWeb开发技术2第2章Servlet技术本章的主要内容包括:Servlet简介ServletAPIJSP与Servlet结合开发实例Servlet生命周期主要的Servlet类和接口2020/3/4JavaWeb开发技术32.1Servlet简介JavaServlet是和平台无关的服务器端组件,它运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户采用”请求/响应”的模式。Servlet的工作原理如图所示。Web浏览器Web服务器ServletHTTP响应HTTP请求2020/3/4JavaWeb开发技术42.1Servlet简介Servlet可完成如下功能:创建并返回基于客户请求的动态HTML页面创建可嵌入到现有HTML页面中的部分HTML页面(HTML片段)与其他服务器资源(如数据库或基于Java的应用程序)进行通信Servlet的主要功能2020/3/4JavaWeb开发技术52.1.2编译和运行Servlet编写Servlet源文件编译Servlet源程序部署Servlet访问Servlet2020/3/4JavaWeb开发技术62.2ServletAPIServlet的框架是由两个java包组成javax.servlet包:定义了所有的Servlet类都必须实现或扩展的通用接口和类Javax.servlet.http包:定义了采用HTTP协议通信的HttpServlet类2020/3/4JavaWeb开发技术72.2ServletAPIServlet框架的核心是javax.servlet.Servlet接口,所有的Servlet都必须实现这一接口。2020/3/4JavaWeb开发技术82.2ServletAPIjavax.servlet.Servlet接口中有5个方法必须实现。1.voiddestroy():被Servlet容器调用销毁一个Servlet类实例2.ServletConfiggetServletConfig()获得ServletConfig对象,里面包含该Servlet的初始化信息3.StringgetServletInfo():获得Servlet信息,如作者、版本号及版权等4.voidinit(ServeletConfigconfig):被Servlet容器调用初始化一个Servlet类实例5.voidservice(ServeletRequestreq,ServeletResponseres):被Servlet容器调用使得Servlet能接收用户请求并做出响应2020/3/4JavaWeb开发技术92.2ServletAPI。2020/3/4JavaWeb开发技术102.2ServletAPI当用户开发自己的Servlet时,可有下面两种方法:扩展GenericServlet类如果Servlet类扩展了GenericServlet类,则必须实现service()方法。扩展HttpServlet类如果Servlet类扩展了HttpServlet类,通常不必去实现service方法,因为HttpServlet已经实现了这个方法,它首先从HttpServletRequest对象中获取HTTP的请求方式,然后再根据请求方式调用相应的方法。2020/3/4JavaWeb开发技术112.2ServletAPI因为目前网络上大部分的请求/响应是基于HTTP协议的,所以大多数Servlet程序都继承自javax.servlet.http.HttpServlet类。HttpServlet类是GenericServlet类的子类,它仅支持基于HTTP协议的请求/响应。2020/3/4JavaWeb开发技术12HTTP请求处理过程收到一个servlet请求调用public的service()方法把参数分别转换为HttpServletRequest和HttpServletResponse类型这个public的service()方法调用protected的service()方法根据HTTP请求的类型,protected的service()调用doXXX()方法之一例:ComputerFactorandPrimNumber.java2020/3/4JavaWeb开发技术13ServletRequest接口的主要方法方法名描述getAttribute根据参数给定的属性名返回属性值getContentType返回客户端请求数据的MIME类型getInputStream返回以二进制数方式直接读取客户请求数据的输入流getParameter根据给定的参数名返回参数值getRemoteAddr返回远程客户端主机的IP地址getRemoteHost返回远程客户端主机名getRemotePort返回远程客户端主机的端口setAttribute在ServletRequest中设置属性2020/3/4JavaWeb开发技术14ServletResponse接口的主要方法方法名描述getOutputStream返回可以向客户端发送二进制数据的输入流对象ServletOutputStreamgetWriter返回可以向客户端发送字符数据的PrintWriter对象getCharacterEncoding返回Servlet发送的响应数据的字符编码getContentType返回Servlet发送的响应数据的MIME类型setCharacterEncoding设置Servlet发送的响应数据的字符编码setContentType设置Servlet发送的响应数据的MIME类型2020/3/4JavaWeb开发技术152.3HttpServlet简介HttpServlet能够根据客户端发出的HTTP请求,生成相应的HTTP响应结果。当获取客户端发出的请求后,Servlet容器负责创建一个HttpServletRequest对象,并把HTTP请求信息封装到这个对象中。2020/3/4JavaWeb开发技术16HttpServletRequest接口的特有方法方法说明publicabstractStringgetQueryString()返回地址后面的查询字符串publicabstractEnumerationgetHeaders()返回全部请求头信息值的枚举publicabstractStringgetHeader(Stringname)返回指定名字请求头信息值publicabstractEnumerationgetHeaderNames()返回全部请求头名字的枚举publicabstractStringgetMethod()返回请求方式,如GET等publicabstractlonggetDateHeader(Stringname)返回某个请求头的日期型值publicabstractStringgetContextPath()返回这次请求所在的应用上下文publicabstractCookie[]getCookies()返回这次请求传上来的所有CookiepublicabstractintgetIntHeader(name)返回某个请求头的整型值publicabstractStringBuffergetRequestURL()返回这次请求的URL地址publicabstractStringgetServletPath()返回请求的Servlet的路径publicabstractHttpSessiongetSession()返回一个session,若原来没有则新建一个publicabstractPrincipalgetUserPrincipal()返回客户端角色publicabstractbooleanisUserInRole(java.lang.Stringrole)检查客户是否为指定角色2020/3/4JavaWeb开发技术17HttpServletResponse接口的特有方法方法说明publicabstractStringencodeRedirectURL(Stringurl)为sendRedirect()进行重编码publicabstractvoidaddCookie(Cookiecookie)在响应中加入CookiepublicabstractvoidaddHeader(Stringname,Stringvalue)在响应中添加头publicabstractvoidsetHeader(Stringname,Stringvalue)在响应中设置头publicabstractbooleancontainsHeader(Stringname)检查响应中是否含有名字为name的头publicabstractStringencodeURL(Stringurl)URL重写publicabstractvoidaddDateHeader(Stringname,longdate)在响应中添加日期型头publicabstractvoidsendError(intsc)转向错误码对应的出错页publicabstractvoidsendError(intsc,Stringmsg)转向错误码对应的出错页并带有错误信息publicabstractvoidaddIntHeader(Stringname,intvalue)在响应中添加整型头publicabstractvoidsetStatus(intsc)设置状态码2020/3/4JavaWeb开发技术18程序实例:JSP与Servlet结合前面讲过,JSP负责处理页面,而Servlet适宜处理逻辑,所以常用JSP+Servlet来开发应用。这就涉及到JSP和Servlet相互调用、相互传递数据的问题。2020/3/4JavaWeb开发技术19JSP访问Servlet——通过表单通过FORM表单的action属性访问Servlet是最常用的方式,下面例子中,JSP页面login.jsp通过表单向名为LoginServlet.java的Servlet提交用户名和密码,Servlet接受用户输入并显示提交信息。例:login.jsp,LoginServlet.java2020/3/4JavaWeb开发技术20web.xml配置文件?xmlversion=1.0encoding=ISO-8859-1?web-appxmlns=:xsi=:schemaLocation=://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdversion=2.4!--JSPCservletmappingsstart--servletservlet-nameLoginServlet/servlet-nameservlet-classcom.wlh.LoginServlet/servlet-class/servletservlet-mappingservlet-nameLoginServlet/servlet-nameurl-pattern/login/url-pattern/servlet-mapping/web-app其中的servlet和servlet-mapping成对出现,完成一个Servlet的配置,要执行多少个Servlet程序,就需要多少次配置。url-pattern的体内容是客户请求时在地址栏中书写地址的形式。servlet-name的体内容是一个字符串,两处servlet-name
本文标题:java-web-Servlet技术
链接地址:https://www.777doc.com/doc-4128540 .html