




已阅读5页,还剩121页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Servlet技术 课程内容 Servlet技术的概念 发展及其特点Servlet的生命周期Servlet的技术实现Servlet的部署 概念回顾 Applet java小程序Scriptlet JSP脚本小程序Servlet 服务器端小程序 xxxLET 什么是CGI CGI CommonGatewayInterface通用网关接口主要用来处理网页提交的数据 比如form提交的数据 CGI程序通常不是专门为网页编程设计的 比如C C VB java等都可以编写CGI程序 是早期为了解决动态网页编程而采取的一种开发方法 CGI程序原理 CGI程序可以是任何可执行程序 比如 exe dll class等 通常通过form标记的action来调用 比如action mycgi exe 当操作者提交输入数据后 点击submit按钮 输入的数据保存在服务器的内存变量中 stdin CGI程序也被调用执行 并获取内存变量 QUERY STRING 并对字符串进行解码 就是分解出输入的数据 剔除其他无用的字符 处理完数据后 输出 stdout html格式的字符串到环境变量 比如使用println来输出字符串 xxx 就可以将处理结果返回给浏览器了 CGI特点 大多数开发语言都可以实现 只不过难易程度不同 c语言麻烦一些 java简单一些 不是嵌入到网页中的代码 与javascript和JSP不同 不能直接操作html标记 这一点与javascript不同 可以直接在网页中调用 这一点与javabean和tag不同 他们需要配置和声明 输出数据必须是规范的 网页 也就是符合html规范格式 比如至少要以开头 CGI 网页和数据库的关系示例 DATABASE web服务器 CGI 浏览器网页 提交数据信息 SQL SELECT FROMABC 分析网页内容 调用CGI程序myCGI class 获取网页提交的数据 分析处理 执行JDBC 返回处理结果 什么是Servlet技术 Servlet是一种CGI程序 使用java语言开发 Servlet技术是使用JavaServlet应用程序设计接口 API 及相关类和方法的Java程序 JavaServletAPI定义Servlet和Java服务器之间的一个标准接口 这使得Servlet具有了跨服务器平台的特性 Servlet通过创建一个框架来扩展服务器的功能 以提供在Web上进行请求和响应服务 当客户端发送请求至服务器时 服务器可以将请求信息转发给Servlet 并使用Servlet建立起返回给客户端的响应 当启动Web服务器或客户端第一次向服务器提出请求时 可以自动装入Servlet 装入后 Servlet将继续运行直到其它客户机发出请求 Servlet给出响应为止 Servlet的主要功能 创建并返回一个包含基于客户端请求性质的动态内容的完整的HTML页面 创建可嵌入到现有HTML页面中的一部分HTML页面 HTML片段 与其它服务器资源 包括数据库和基于Java的应用程序 进行通信 使用多个客户端处理连接 接收多个客户端的输入 并将结果广播到多个客户端上 例如 Servlet可以为多参与者的游戏服务器服务 对特殊的处理采用MIME类型过滤数据 例如图像转换或者Word文档转换等 将定制的处理提供给所有服务器的标准例行程序 例如 Servlet可以修改如何认证用户等 Servlet技术的特点 采用Servlet技术 服务器可以完全授权对本地资源的访问 如数据库 并且Servlet自身将会控制外部用户的访问数量及访问性质 Servlet可以是其它服务的客户端程序 例如 它们可以用于分布式的应用系统中 可以从本地硬盘 或者通过网络远程硬盘激活Servlet Servlet可被链接 chain 即一个Servlet可以调用另一个或一系列Servlet 采用ServletTag技术 可以在Web页面中动态调用Servlet ServletAPI与协议无关 Servlet的调用方式 无论传统CGI还是SERVLET WEB服务与用户主要的交互手段是 1 超级链接2 form表单提交 响应 之后 是servlet代码内部进行的各种数据处理 Servlet的生命周期 Servlet部署在容器中 它的生命周期由容器管理 Servlet的生命周期始于将它装入Web服务器的内存时 并在终止或重新装入Servlet时结束 Servlet的生命周期可以归纳为以下几个阶段 装载Servlet 这项操作一般是动态执行的 有些服务器提供了响应的管理功能 可以在启动的时候就装载Servlet并能够初始化特定的Servlet 创建一个Servlet实例 调用Servlet的init 方法 一个客户端的请求到达服务器 创建一个请求对象 创建一个响应对象 激活Servlet的Service 方法 并传递请求和响应对象 Service 方法获得关于请求对象的信息 处理请求 访问其它资源 获得需要的信息 Service 方法使用响应对象的方法 将响应传回服务器 最终到达客户端 对于更多的客户端请求 服务器创建新的请求和响应对象 仍然激活此Servlet的Service 方法 将两个对象作为参数传递给它 当服务器不再需要Servlet或当服务器关闭时 服务器将会调用Servlet的destroy 方法来销毁Servlet 生命周期示意图 Servlet的服务流程 在上述阶段中 对外提供服务是最重要的阶段 Service 方法是真正处理业务的方法 所以也是我们最值得关心的方法 下面我们通过图表来演示Servlet是如何为客户提供服务的 如图所示 Servlet技术实现 Servlet接口Servlet接口是ServletAPI的主要抽象接口 它是所有Servlet必须直接或者间接实现的接口 ServletAPI中有两个类实现了Servlet接口 他们分别是GenericServlet和HttpServlet Servlet接口定义了以下的方法 init ServeltConfigConfig 方法 用于初始化Servlet getServletConfig 方法 该方法返回一个ServletConfig对象 该对象包含Servlet的初始化和启动参数 该返回对象ServletConfig与传递给init 方法的参量一致 Service 方法 该方法由Servlet容器调用以允许Servlet对请求进行响应 该方法只有在init 方法运行成功后才会被调用 getServletInfo 方法 该方法返回Servlet的信息 返回的字符串必须是纯文本 不能包含任何标记语言 如 HTML XML等等 destroy 方法 销毁Servlet 抽象类GenericServlet GenericServlet提供了对Servlet接口的具体实现 它是一个抽象类 它的service 方法是一个抽象方法 GenericServlet的派生类必须直接或者间接实现这个方法 一个Servlet可以直接扩展GenericServlet类 通常使用指定协议的子类 如HttpServlet 来编程 GenericServlet类使编写Servlet变得更加容易 GenericServlet类定义了以下的方法 destory 方法 销毁Servlet getInitParameter 方法 该方法返回一个包含初始化变量值的字符串 如果变量不存在则返回null 该方法从Servlet的ServletConfig变量获得命名变量的值 getInitParameterNames 方法 该方法返回一个包含所有初始化变量的枚举函数 如果没有初始化变量 则返回一个空枚举函数 getServletConfig 方法 返回一个Servlet的ServletConfig对象 getServletInfo 方法 该方法来源于Servlet接口 重写该方法以产生有意义的信息 init ServletConfigconfig 方法 该方法来源于Servlet接口 重写该方法 必须调用super init config 方法 init 方法 该方法重载Servlet init ServletConfigconfig 方法而无需调用super init config 而ServletConfig对象依然可以通过调用getServletConfig 方法获得 log java lang Stringmsg 方法 该方法把指定的信息写入到一个日志文件中 log java lang Stringmessage java lang Throwablet 方法 该方法把解释性的内容和抛出的例外信息写入到一个日志文件 Service 方法 该方法必须由Servlet容器调用以允许Servlet对请求作出响应 HttpServlet HttpServlet类是针对使用Http协议的Web服务器的Servlet类 HttpServlet类通过实现Servlet接口 提供Http协议的功能 HttpServlet的子类必须实现以下方法中的一个 doGet 方法 由服务器调用 通过Service 方法 以允许一个Servlet去处理一个GET请求 doPost 方法 由服务器调用 通过Service 方法 以允许一个Servlet去处理一个POST请求 doPut 方法 由服务器调用 通过Service 方法 以允许一个Servlet去处理一个PUT请求 doDelete 方法 由服务器调用 通过service 方法 以允许一个Servlet去处理一个DELETE请求 DELETE操作允许客户从服务器中删除一个文档或网页 init 方法和destory 方法 管理Servlet占用的资源 getServletInfo 方法 获得Servlet自身的信息 Servlet具体实现 下面 我们来开发具体的Servlet 我们分别使用实现Servlet接口和继承HttpServlet抽象类的方法 实现Servlet 1 通过实现Servlet接口实现Servlet技术 2 继承HttpServlet抽象类实现Servlet技术 1 通过实现Servlet接口实现 1 通过实现Servlet接口实现Servlet技术 仍然是实现一个 HelloWorld 程序 使用Servlet接口如何实现 HelloWorld 的输出 程序参考代码如下所示 采用Servlet接口的方法 importjavax servlet Servlet importjavax servlet ServletConfig importjavax servlet ServletException importjavax servlet ServletRequest importjavax servlet ServletResponse importjava io IOException importjava io publicclassHelloWorldServletimplementsServlet privatestaticfinalStringCONTENT TYPE text html charset GBK publicvoiddestroy publicServletConfiggetServletConfig returnnull publicStringgetServletInfo returnnull publicvoidinit ServletConfigparm1 throwsServletException publicvoidservice ServletRequestparm1 ServletResponseparm2 throwsServletException IOException parm2 setContentType CONTENT TYPE PrintWriterout parm2 getWriter out println out println HelloWorldServlet out println out println 实现Servlet接口 out println HelloWorld out println out println out close 编译程序 生成 class文件 然后配置web xml文件 就可以运行程序了 在浏览器地址栏中输入 http localhost 8080 Hello 后 点击回车 程序运行效果如图所示 2 继承HttpServlet抽象类实现Servlet技术 在上例中 我们是通过Servlet接口来实现Servlet 下面我们以继承HttpServlet抽象类来实现Servlet 参考代码如下 packageservlet importjavax servlet importjavax servlet http importjava io importjava util publicclassHelloWorldServlet2extendsHttpServlet privatestaticfinalStringCONTENT TYPE text html charset GBK publicvoidinit throwsServletException publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException response setContentType CONTENT TYPE PrintWriterout response getWriter out println 2 继承HttpServlet抽象类实现Servlet技术 out println HelloWorldServlet2 out println out println 继承HttpServlet out println HelloWorld out println 你好 世界 out println out println out close publicvoiddoPost HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException doGet request response publicvoiddestroy 在浏览器地址栏中里输入 http localhost 8080 HelloWorld 后 点击回车 查看程序运行结果 程序运行结果如图所示 原理分析 在例子中 我们采用的是继承HttpServlet抽象类来实现Servlet技术 在实际的开发过程中 我们最常用的就是继承HttpServlet类实现Servlet HttpServlet实现了基于Http协议Servlet的大部分功能 在此例中 用到doGet 方法和doPost 方法来处理HttpGet请求和HttpPost请求 在上面两个例子中 我们都是首先设置响应的MIME类型和编码方式 然后获得输出流对象 这个输出流对象用out表示 这个out对象和JSP中内建out对象是一样的 通过它可以把输出发送到客户端 对象模型关系 URL与Servlet 通过浏览器访问servlet的时候 或者采用超级链接 或者通过action来调用无论哪一种 都涉及到URL 只有符合URL才能被浏览器认同并正确访问而默认的直接访问servlet类名的方法存在以下弊端 名称容易混乱 不好记忆 无法根据需要灵活设置 名称都是固定死的 当有多个servlet并发的时候 无法协调和控制调用关系及次序 需要在规范的URL和servlet之间 确定一种调用关系 以便能够按照URL方式访问servlet Servlet的部署 Web xml中实现了URL与servlet的对应处理web xml的配置我们结合例8 1和例8 2来说明如何配置web xml 以Tomcat5 0服务器为例进行讲解 在web xml描述中 首先声明Servlet 指定这个Servlet的类名和名称 然后为这个Servlet创建URI映射 我们通过这个映射来访问Servlet 示例 WelcometoTomcatWelcometoTomcatHelloWorldServletHelloWorldServletHelloWorldServlet Hello 解释 以上代码中在 中指定了Servlet的名称 在 中指定具体的Servlet类 在前面的例子中 我们没有对程序进行package操作 所以指定类的时候直接指定为HelloWorldServlet 如果进行了package的操作 则在指定名称时一定要书写为 包名 类名 的形式 在 中指定Servlet的URI映射 配置好web xml后 将HelloWorldServlet class文件拷贝到WEB INF文件夹下的classes文件夹中 然后启动服务器 在浏览器中输入 http localhost 8080 Hello 点击回车即可 示例 在同一个web xml文件中 可以指定多个Servlet 只是要注意为Servlet做URI映射时 不要给不同的Servlet做同一个URI映射 HelloWorldServletHelloWorldServletHelloWorldServlet HelloHelloWorldServlet2servlet HelloWorldServlet2HelloWorldServlet2 HelloWorld 本章总结 Servlet技术的概念 发展及其特点Servlet的生命周期Servlet的技术实现Servlet的部署 动手实践 登录页面 Servlet编写登录页面 登录页面 目标编写一个login jsp页面 实现用户信息提交功能 编写一个Servlet实现对用户提交信息的处理功能 在login jsp页面中 输入用户的提交信息 填写完成后 点击 提交 按钮 调用服务器的Servlet 对提交的信息进行处理 并向客户端返回处理结果 程序运行效果如图所示 基本思路 1 编写一个带有表单的JSP页面 也可以是一个静态网页 html文件 2 编写一个Serlvet接收JSP页面提交的信息 通过servlet来处理表单提交的内容 登录表单部分 用户名 密码 Servlet程序 GetInfo java packageservlet importjavax servlet importjavax servlet http importjava io importjava util publicclassGetInfoextendsHttpServlet privatestaticfinalStringCONTENT TYPE text html charset GBK doGet publicvoidinit throwsServletException publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException response setContentType CONTENT TYPE PrintWriterout response getWriter 得到提交信息Stringname request getParameter username Stringpwd request getParameter pwd 返回信息 out println out println HelloWorldServlet2 out println out println 你的用户名是 name out println 你的密码是 pwd out println out println out close doPost publicvoiddoPost HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException doGet request response publicvoiddestroy Web xml配置 GetInfoservlet GetInfoGetInfo GetInfo Servlet常用接口 课程内容 Servlet的常用接口 ServleConfigServletRequestHttpServlteRequestServletContext等 ServletConfig 获取配置信息 ServletConfig接口是一个由Servlet容器使用的Servlet配置对象 在Servlet初始化时向它传递信息 ServletConfig接口有以下几个主要方法 getServletName 方法 该方法返回一个Servlet实例的名称 该名称由服务器管理员提供 getServletContext 方法 该方法返回一个ServletContext对象的引用 getInitParameter 方法 该方法返回一个由参数 Stringname 决定的初始化变量的值 如果该变量不存在 返回null getInitParameterNames 方法 该方法返回一个存储所有初始化变量的枚举函数 如果Servlet没有初始化变量 返回一个空枚举函数 示例 下面的代码描述了一个Servlet的xml文件的配置 HelloWorldservlet HelloWorldServletcharsetgb2312在 HelloWorldServlet java 中如果有getInitParameter charset 那么将返回一个 gb2312 的字符串 ServletException ServletException定义了一个通用异常类 Servlet运行错误时将抛出异常 它包含几个构造方法和一个获得异常原因的方法 ServletException常用方法有 ServletException 构建一个新的Servlet异常 ServletException Stringmessage 构建一个拥有指定信息的新的Servlet异常 ServletException Stringmessage ThrowablerootCause 构建一个新的Servlet异常 Servlet需要时抛出 包含妨碍正常操作 包括描述信息 的根异常信息 ServletException ThrowablerootCause 构建一个新的Servlet异常 Servlet需要时抛出 包含妨碍正常操作的根异常信息 getRootCause 该方法返回引起Servlet异常的原因 抛出异常 publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException PrintWriterout response getWriter out println out println HelloWorldServlet out println out println 继承HttpServlet out println HelloWorld out println 你好 世界 out println out println out close publicvoiddoPost HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException doGet request response ServletRequest ServletRequest接口封装了客户端请求的细节 它与协议无关 并指定一个HTTP的子接口 ServletRequest主要功能有 找出客户端的主机名和IP地址 检索请求参数 取得和设置属性 取得输入 输出流 ServletRequest类的常用方法 getAttribute Stringname 返回具有指定名称的请求属性 如果不存在则返回null 属性可由Servlet引擎设置或使用setAttribute 显式加入 getAttributeName 返回请求中所有属性名的枚举 如果不存在属性 则返回一个空的枚举 getCharacteEncoding 返回请求所用的字符编码 getInputStream throwsIOException 返回与请求相关的 二进制 输入流 可以调用getInputStream 或getReader 方法 getParameter Stringname 返回指定输入参数 如果不存在 返回null getParameterName 返回请求中所有参数名的一个可能为空的枚举 getParameterValues Stringname 返回指定输入参数名的取值数组 如果取值不存在则返回null 它在参数具有多个取值的情况下十分有用 ServletRequest类的常用方法 getServerName 返回处理请求的服务器的主机名 getServerPort 返回接收主机正在侦听的端口号 getRemoteAddr 返回客户端主机的数字型IP地址 getRemoteHost 如果知道 返回客户端主机名 setAttribute Stringname Objectobj 以指定名称保存请求中指定对象的引用 removeAttribute Stringname 从请求中删除指定属性 getRequestDispatcher Stringname 返回指定源名称RequsetDispatcher对象 示例 publicclassHelloimplementsServletRequest publicStringgetRemoteAddr Stringaddr this getRemoteAddr returnaddr publicStringgetRemoteHost Stringhost this getRemoteHost returnhost publicStringgetServerName Stringname this getServerName returnname publicintgetServerPort inta this getServerPort returna HttpServletRequest HttpServletRequest接口中最常用的方法就是获得请求的参数 这个请求中的参数值是客户端表单中的数据 JSP中的内建对象request就是一个HttpServletRequest实例 HttpServletRequest主要功能 读取和写入HTTP头标 取得和设置cookies 取得路径信息 标识HTTP会话 HttpServletRequest接口的常用方法 getContextPath 返回指定Servlet上下文 web应用 的URL的前缀 getCookies 返回与请求相关Cookie的一个数组 getHeader Stringname 返回指定的HTTP头标值 如果其由请求给出 则名字应对大小写不敏感 getHeaderNames 返回请求给出的所有HTTP头标名称的枚举值 getHeaders Stringname 返回请求给出的指定类型的所有HTTP头标的名称的枚举值 它对具有多取值的头标非常有用 getMethod 返回HTTP请求方法 例如GET POST等 getParameter Stringname 获得请求中名为name的参数的值 如果请求中没有这个参数 将返回null getSession booleancreate 返回当前HTTP会话 如果不存在 则创建一个新的会话 create参数为true isRequestedSessionIdValid 如果客户端返回的会话ID仍然有效 则返回true 示例 publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException response setContentType CONTENT TYPE PrintWriterout response getWriter Stringpath request getContextPath Stringmethod request getMethod Stringinfo request getPathInfo out println path path out println method method out println info info out close ServletResponse ServletResponse将一个Servlet生成的结果传送到发出请求的客户端 ServletResponse操作主要是作为输出流及其内容类型和长度的包容器 它由Servlet引擎创建 ServletResponse接口常用方法有以下几种 getCharacterEncoding 返回响应程序使用字符解码的名字 除非显式设置 否则为ISO 8859 1 getLocale 返回响应使用的现场 除非用setLocale 修改 否则缺省为服务器现场 getOutputStream throwsIOException 返回用于将返回的二进制输出写入客户端的流 此方法和getWrite 方法二者只能调用其一 getWriter throwsIOException 返回用于将返回的文本输出写入客户端的一个字符写入器 此方法和getOutputStream 二者只能调用其一 isCommitted 如果状态和响应头标已经被发回客户端 则返回true 在响应被确认后发送响应头标将毫无作用 setContentType Stringtype 设置内容类型 在HTTPServlet中设置Content Type头标 setLocale Localelocale 设置响应使用现场 在HTTPServlet中 将对Content Type头标取值产生影响 示例 publicclassMyServletResponseimplementsServletResponse publicintgetBufferSize returnthis getBufferSize publicStringgetCharacterEncoding returnthis getCharacterEncoding publicLocalegetLocale returnthis getLocale publicServletOutputStreamgetOutputStream throwsIOException returnthis getOutputStream publicPrintWritergetWriter throwsIOException returnthis getWriter publicbooleanisCommitted returnthis isCommitted HttpServletResponse HttpServletResponse代表了对客户端的Http的响应 它提供了表示状态码 状态信息和响应头标的方法 同时还负责对URL中写入一个Web页面的HTTP会话ID进行解码 JSP中的内建对象response是一个HttpServletResponse实例 HttpServletResponse接口常用方法 addCookie Cookiecookie 将一个Set Cookie头标加入到响应 setHeader Stringname Stringvalue 设置具有指定名字和取值的一个响应头标 encodeRedirectURL Stringurl 如果客户端不知道接受cookie 则向URL加入会话ID 第一种形式只对在sendRedirect 中使用的URL进行调用 其它被编码的URL应被传递到encodeURL 中 encodeURL Stringurl 使用URL和一个SessionID重写这个URL sendError intstatus 设置响应状态码为指定值 可选的状态信息 HttpServleetResponse定义了一个完整的整数常量集合表示有效的状态值 sendRedirect Stringlocation 把响应发送到另一页面或者Servlet进行处理 getWriter 该方法取得PrintWriter对象 来输出字符数据 getOutputStream 该方法获得ServletOutputStream输出流 setContentType 该方法设置响应的MIME类型 setCharacterEncoding Stringcharset 设置响应的字符编码类型 示例 publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException StringCONTENT TYPE text html charset GBK 设置响应的MIME类型response setContentType CONTENT TYPE 获得输出流对象PrintWriterout response getWriter out println HelloWorld out println 你好 世界 out close 跳转到login jsp页面response sendRedirect login jsp ServletContext ServletContext与Servlet上下文有关 是Servlet引擎提供用来服务于Web应用的接口 Servlet上下文具有名称 它属于Web应用的名字 唯一映射到文件系统的一个目录 一个Servlet可以通过ServletConfig对象的getServletContext 方法得到Servlet上下文的引用 如果Servlet直接或间接调用子类GenericServlet 则可以使用getServletContext 方法 Web应用中Servlet可以使用Servlet上下文得到 在调用期间保存和检索属性的功能 并与其他Servlet共享这些属性读取Web应用中文件内容和其它静态资源的功能互相发送请求的方式记录错误和信息化消息的功能 ServletContext接口的常用方法 getAttribute Stringname 返回Servlet上下文中具有指定名字的对象 或使用已指定名捆绑一个对象 从Web应用的标准观点看 这样的对象是全局对象 因为它们可以被同一Servlet在另一时刻访问 或上下文中任意其它Servlet的访问 setAttribute Stringname Objectobj 设置Servlet上下文中具有指定名字的对象 getAttributeNames 返回保存在Servlet上下文中所有属性名字的枚举 getContext Stringuripath 返回映射到另一URL的Servlet上下文 在同一服务器中URL必须是以 开头的绝对路径 getRealPath Stringpath 给定一个URI 返回文件系统中URI对应的绝对路径 如果不能进行映射 返回null getResource Stringpath 返回相对于Servlet上下文或读取URL的输入流的指定绝对路径相对应的URL 如果资源不存在则返回null getServerInfo 返回Servlet引擎的名称和版本号 log Stringmessage Throwablet 将一个消息写入Servlet注册 如果给出Throwable参数 则包含栈轨迹 removeAttribute Stringname 从Servlet上下文中删除指定属性 示例 importjava io IOException importjavax servlet importjavax servlet http publicclassLoggingServletextendsHttpServlet privateServletContextcontext publicvoidinit ServletConfigconfig throwsServletException super init config context getServletContext context log Inithasbeeninvoked publicvoiddoGet HttpServletRequestreq HttpServletResponseres throwsIOException ServletOutputStreamout res getOutputStream context log doGethasnowbeeninvoked res setContentType text html out println LoggingServlet out println Visitthe logsandopenthexxfiletoseethelogentries out println HttpSession HttpSession接口被Servlet引擎用来实现Http客户端和Http会话两者之间的关联 HttpSession接口类似于哈希表的接口它提供了setAttribute 和getAttribute 方法存储和检索对象 HttpSession提供了一个会话ID关键字 一个参与会话行为的客户端在同一会话的请求中存储和返回它 Servlet引擎查找适当的会话对象 并使之对当前请求可用 JSP中的Session对象是HttpSession接口的实例 它用来保存用户信息 以便跟踪用户的操作状态 HttpSession接口的常用方法 getAttribute Stringname 将会话中一个对象保存为指定名字 返回或删除前面保存的此名称对象 setAttribute Stringname Objectvalue 使用指定名称 向session绑定一个对象 removeAttribute Stringname 从Session中删除指定名称绑定的对象 getAttributeName 返回捆绑到当前会话的所有属性名的枚举值 getLastAccessedTime 返回客户端最后一次发生与这个Session有关的请求的时间 如果这个Session是Servlet新建立的 返回 1 getId 返回会话ID Servlet引擎设置的一个唯一关键字 getMaxInactiveInterval 如果没有与客户端发生交互 设置和返回会话存活的最大秒数 setMaxInactiveInterval intseconds 设置一个秒数 这个秒数表示客户端在不在发出请求时 Session被Servlet引擎维持的最长时间 invalidate 使会话被终止 释放其中任意对象 isNew 返回一个布尔值以判断这个Session是不是新的 如果客户端仍未加入到会话 返回true 当会话首次被创建 会话ID被传入客户端 但客户端仍未进行包含此会话ID的第二次请示时 返回true 示例 publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException StringCONTENT TYPE text html charset GBK response setContentType CONTENT TYPE PrintWriterout response getWriter HttpSessionsession request getSession 向session绑定一个对象session setAttribute username admin 设置Session被Servlet引擎维持最长时间为60秒session setMaxInactiveInterval 60 获取session绑定的对象Stringusername String session getAttribute username 返回Session被Servlet引擎维持的时间inta session getMaxInactiveInterval 取得Session的标识符Stringid session getId out println username username out println MaxInactiveInterval a out println id id out close RequestDispatcher RequestDispatcher接口定义一个对象 该对象负责在服务器端接收来自客户端的请求并向他们发送资源 例如一个Servlet HTML文件 或者是JSP文件 Servlet容器创建RequestDispatcher对象 用来包装一个给定位置或名字的服务器资源 该接口被设计于包装Servlets 但一个Servlet容器可以创建该对象以保证任何类型的资源 RequestDispatcher接口有两个方法 forward 方法 include 方法 forward 方法 该方法提交一个请求到服务器的某个资源 如 Servlet JSP文件 或HTML文件 该方法允许一个Servlet对一个请求作初步处理 而另一个资源将产生响应 由于一个RequestDispatcher对象是通过getRequestDispatcher 方法获得 ServletRequest对象拥有自己的路径元素和变量以匹配目标资源路径 forward 方法应该在响应被提交到客户端之前被唤起 在响应主体输出被刷新之前 如果响应已经被提交 该方法抛出IllegalStateException异常 在forward 之前 响应未被提交的输出会被自动清理掉 请求和响应的两个参数必须是与传递给Servlet的service 方法相同的对象 或者是由ServletRequestWrapper ServletResponseWrapper的子类 封装的 对象 示例 publicvoiddoGet HttpServletRequestrequest HttpServletResponseresponse throwsServletException IOException StringCONTENT TYPE text html
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国焙烤食品糖制品市场消费趋势调查与投资效益研究报告
- 2025年3月29日全国事业单位联考D类《职测》真题及答案
- 离婚协议签署后反悔处理与财产分割纠纷解决合同
- 通信基站租赁合同补充协议模板(含通信服务)
- 互联网金融平台合规经营连带责任担保协议
- 儿童环保纤维服装研发、生产与环保宣传合同
- 医疗机构物业保洁及24小时值班安全保障合同
- 专业机构认证的二手别墅交易合同模板
- 儿童服饰门面房及品牌经营许可权转让协议
- 国际商事合同通则在跨境环保合作合同中的责任分配
- 2025年时事政治考试100题及答案
- 农业产业强镇建设资金申请项目可行性研究及风险评估报告
- 秋形势与政策正确认识中国经济热点问题-教案2025版本
- 药品注册审评员考核试题及答案
- GB/T 7251.10-2025低压成套开关设备和控制设备第10部分:规定成套设备的指南
- 森林防灭火知识培训材料课件
- 成本管控的课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025年政府采购评审专家考试题库含答案
- CT检查的课件教学课件
- 年产50万吨钙系列产品项目可行性研究报告
评论
0/150
提交评论