Servlet知识点总结_第1页
Servlet知识点总结_第2页
Servlet知识点总结_第3页
Servlet知识点总结_第4页
Servlet知识点总结_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

Servlet 生命周期 1 servlet 容器完成加载 Servlet 类加载和实例化 当 servlet 容器启动时 或者 servlet 容器检测到需要这个 servlet 服务的第一个请求 时 servlet 容器会加载这个 servlet 并生成 servlet 实例 也可以在两者之间的任何时候执行 配 置为 load on start up 的 servlet 是在容器启动时被加载的 2 serlet 初始化 当 servlet 实例化后 容器将调用这个对象的 init 方法进行初始化 初始化的目的是 在这个实例为请求提供服务前完成初始化工作 如建立配置连接 获取配置信息等 servlet 实 例可以使用容器为其提供的 ServletConfig 对象 从 web 应用程序的配置信息中 即 web xml 文件 获取初始化的参数信息 3 服务 Servlet 容器调用 servlet 实例的 service 方法来对请求进行处理 在 service 方法 中 servlet 实例通过 ServletRequest 对象 来获取客户端的相关信息和请求信息 处理完成 后 servlet 实例通过 ServletResponse 对象来设置相应信息 4 销毁 当容器检测到某个 servlet 实例需要在服务中移除时 则容器将调用 servlet 实例的 destroy 方法 以便释放实例所使用的资源 并将数据存储到持久存储设备中 当调用 destroy 方法后 容器将释放此 servlet 实例 该实例随后将由垃圾回收器进行垃圾回收处理 如果再有对此实例的服务请求时 容器将重新创建一个新的 servlet 实例 如何获得请求参数 1 request getParameter name 2 如果一个请求参数有多个值 需要返回一个数组 String size request getParameter name For int i 0 i size length i out print size 0 出了参数 还可以获得其他 1 与请求相关的 cookie Cookie cookies request getCookies 2 与会话相关的 session Session session request getSession 3 请求的 HTTP 方法 String methed request getMethed Request 对象的主要方法 对象的主要方法 setAttribute String name Object 设置名字为 name 的 request 的参数值 getAttribute String name 返回由 name 指定的属性值 getAttributeNames 返回 request 对象所有属性的名字集合 结果是一个枚举的实例 getCookies 返回客户端的所有 Cookie 对象 结果是一个 Cookie 数组 getCharacterEncoding 返回请求中的字符编码方式 getContentLength 返回请求的 Body 的长度 getHeader String name 获得 HTTP 协议定义的文件头信息 getHeaders String name 返回指定名字的 request Header 的所有值 结果是一个枚举 的实例 getHeaderNames 返回所以 request Header 的名字 结果是一个枚举的实例 getInputStream 返回请求的输入流 用于获得请求中的数据 getMethod 获得客户端向服务器端传送数据的方法 getParameter String name 获得客户端传送给服务器端的有 name 指定的参数值 getParameterNames 获得客户端传送给服务器端的所有参数的名字 结果是一个枚 举的实例 getParametervalues String name 获得有 name 指定的参数的所有值 getProtocol 获取客户端向服务器端传送数据所依据的协议名称 getQueryString 获得查询字符串 getRequestURI 获取发出请求字符串的客户端地址 getRemoteAddr 获取客户端的 IP 地址 getRemoteHost 获取客户端的名字 getSession Boolean create 返回和请求相关 Session getServerName 获取服务器的名字 getServletPath 获取客户端所请求的脚本文件的路径 getServerPort 获取服务器的端口号 removeAttribute String name 删除请求中的一个属性 RequestDispacher ciew request getRequestDispacher result jsp view forword request response 请求派发 向客户端输出的方法 response setContentType application jar 设置返回浏览器内容类型 response getOutputStream 初始化一个输出流对象 response getWrite response secdredirect 重定向 response setHead foo bar response addHead foo bar 初始化参数 在 web xml 中设置 servlet 初始化参数 dbinit strutsfinalcase db util DBInit driverClass org gjt mm mysql Driver 解释 容器初始化一个 servlet 时 会为这个 servlet 创建一个唯一的 ServletConfig 容器从 DD 读出 servlet 初始化参数 交给 ServletConfig 然后转递给 servlet 的 init 方法 在 servlet 代码中获得初始化参数的值 getServletConfig getInitParameter param name 上下文初始化参数 name John 在 servlet 代码中获得上下文初始化参数的值 getServletContext getInitParameter name ServletContext 用于在用于在 Web 应用范围内存取共享数据的方法 应用范围内存取共享数据的方法 注 web 应用范围具有以下两层含义 1 表示有 web 应用的生命周期构成的时间段 2 表示在 web 应用的生命周期内所有 web 组件的集合 setAttribute String name java lang Object object 把一个 java 对象和一个属性名绑定 并存放到 ServletContext 中 参数 name 指定属性名 参数 Object 表示共享数据 getAttribute String name 根据参数给定的属性名 返回一个 Object 类型的对象 getAttributeNames 返回一个 Enumeration 对象 该对象包含了所有存放在 ServletContext 中的属性名 removeAttribute String name 根据参数指定的属性名 从 servletContext 对象中删除 匹配的属性 访问当前访问当前 Web 应用的资源应用的资源 getContextpath 返回当前 web 应用的 URL 入口 getInitParameter String name 返回 web 应用方位内的匹配的初始化参数值 在 web xml 中元素中元素表示应用范围内的初始化参数 getInitParameterNames 返回一个 Enumeration 对象 getServletContextName 返回 web 应用的名字 即元素中 元素的值 getRequestDispatcher String path 返回一个用于向其他 web 组件转发请求的 RequestDispatcher 对象 web xml 文件 web xml 文件是用来初始化配置信息 比如 Welcome 页面 servlet servlet mapping filter listener 启动加载级别等 1 指定欢迎页面 例如 index jsp index1 jsp PS 指定了 2 个欢迎页面 显示时按顺序从第一个找起 如果第一个存在 就 显示第一个 后面的不起作用 如果第一个不存在 就找第二个 以此类推 2 命名与定制 URL 我们可以为 Servlet 和 JSP 文件命名并定制 URL 其中定制 URL 是依赖命名的 命名必须在定制 URL 前 下面拿 serlet 来举例 1 为 Servlet 命名 servlet1 org whatisjava TestServlet 2 为 Servlet 定制 URL servlet1 do 3 定制初始化参数 可以定制 servlet JSP Context 的初始化参数 然后可以再 servlet JSP Context 中获取这些参数值 下面用 servlet 来举例 servlet1 org whatisjava TestServlet userName Daniel E mail 125485762 经过上面的配置 在 servlet 中能够调用 getServletConfig getInitParameter param1 获 得参数名对应的值 4 指定错误处理页面 可以通过 异常类型 或 错误码 来指定错误处理页面 404 error404 jsp java lang Exception exception jsp 5 设置过滤器 比如设置一个编码过滤器 过滤所有资源 XXXCharaSetFilter net test CharSetFilter XXXCharaSetFilter 6 设置监听器 net test XXXLisenet 7 设置会话 Session 过期时间 其中时间以分钟为单位 假如设置 60 分钟超时 60 8 设置上下文初始化参数 对于整个 web 应用都适用 foo bar 在 servlet 中获取上下文参数初始化 String s getContex getInitParameter 3 重定向和请求分派的比较 请求分派只能将请求转发给同一个 web 应用中的其他组件 而重定向不 仅可以定向到当前应用程序中的其他资源 也可重定向到其他站点的资源上 重定向的访问过程结束后 浏览器的地址栏显示的 URL 会发生改变 变成重定向的目标 URL 而请求分派的浏览器地址栏保持初始的 URL 请求分派的发起者和被调者之间共享相同的 request 实例和 response 实例 属于同一个 请求 响应 而重定向的发起者和被调用者使用各自的 request 实 例和 response 实例 各自属于独立的 请求 响应 过程 请求分派 RequestDispatcher dis request getRequestDispatcher Servlet2 dis forward request response 重定向 response sendRedirect Servlet2 重定向到指定路径的资源 5get 和 post 比较 1 get 是从服务器上获取数据 post 是向服务器传送数据 2 get 是把参数数据队列加到提交表单的 ACTION 属性所指的 URL 中 值和表单内 各个字段一一对应 在 URL 中可以看到 post 是通过 HTTP post 机制 将表单内各个字 段与其内容放置在 HTML HEADER 内一起传送到 ACTION 属性所指的 URL 地址 用户看 不到这个过程 3 对于 get 方式 服务器端用 Request QueryString 获取变量的值 对于 post 方式 服务器端用 Request Form 获取提交的数据 4 get 传送的数据量较小 不能大于 2KB post 传送的数据量较大 一般被默认为 不受限制 但理论上 IIS4 中最大量为 80KB IIS5 中为 100KB 5 get 安全性非常低 post 安全性较高 但是执行效率却比 Post 方法好 6 response setContentType Application jar 说明要返回给客户一个 jar 文件 7 用 servelt 向客户端输出 1 以字符形式输出 PrintWrite pw response getWrite pw println acvbbb 2 以流的形式输出 ServletOutStream out response getOutputSt out write sssssss 8 监听器 Listener 它是实现了 javax servlet ServletContextListener 接口的服务器端程序 它也是随 web 应用的启动而启动 只初始化一次 随 web 应用的停止而销毁 主要作用是 做一些初始化 的内容添加工作 设置一些基本的内容 比如一些参数或者是一些固定的对象等等 下面利用 监听器对数据库连接池 DataSource 的初始化演示它的使用 1 MyServletContextListener java 2 package dc gz listeners 3 import javax servlet ServletContext 4 import javax servlet ServletContextEvent 5 import javax servlet ServletContextListener 6 import mons dbcp BasicDataSource 7 8 9 Web 应用监听器 10 11 public class MyServletContextListener implements ServletContextListener 12 13 应用监听器的销毁方法 14 public void contextDestroyed ServletContextEvent event 15 ServletContext sc event getServletContext 16 在整个 web 应用销毁之前调用 将所有应用空间所设置的内容清空 17 sc removeAttribute dataSource 18 System out println 销毁工作完成 19 20 21 应用监听器的初始化方法 22 public void contextInitialized ServletContextEvent event 23 通过这个事件可以获取整个应用的空间 24 在整个 web 应用下面启动的时候做一些初始化的内容添加工作 25 ServletContext sc event getServletContext 26 设置一些基本的内容 比如一些参数或者是一些固定的对象 27 创建 DataSource 对象 连接池技术 dbcp 28 BasicDataSource bds new BasicDataSource 29 bds setDriverClassName com mysql jdbc Driver 30 bds setUrl jdbc mysql localhost 3306 hibernate 31 bds setUsername root 32 bds setPassword root 33 bds setMaxActive 10 最大连接数 34 bds setMaxIdle 5 最大管理数 35 bds setMaxWait maxWait 最大等待时间 36 把 DataSource 放入 ServletContext 空间中 37 供整个 web 应用的使用 获取数据库连接 38 sc setAttribute dataSource bds 39 System out println 应用监听器初始化工作完成 40 System out println 已经创建 DataSource 41 42 9 java synchronized 一 当两个并发线程访问同一个对象 object 中的这个 synchronized this 同步代码块时 一个时间内只能有一个线程得到执行 另一个线程必须等待当前线程执行完这个代码块以后才 能执行该代码块 二 然而 当一个线程访问 object 的一个 synchronized this 同步代码块时 另一个线 程仍然可以访问该 object 中的非 synchronized this 同步代码块 三 尤其关键的是 当一个线程访问 object 的一个 synchronized this 同步代码块时 其他线程对 object 中所有其它 synchronized this 同步代码块的访问将被阻塞 四 第三个例子同样适用其它同步代码块 也就是说 当一个线程访问 object 的一个 synchronized this 同步代码块时 它就获得了这个 object 的对象锁 结果 其它线程对该 object 对象所有同步代码部分的访问都被暂时阻塞 五 以上规则对其它对象锁同样适用 10 session 和 cookie 1 session 保存在服务器 客户端不知道其中的信息 cookie 保存在客户端 服务器能够 知道其中的信息 2 session 中保存的是对象 cookie 中保存的是字符串 3 session 不能区分路径 同一个用户在访问一个网站期间 所有的 session 在任何一 个地方都可以访问到 而 cookie 中如果设置了路径参数 那么同一个网站中不同路径下的 cookie 互相是访问不到的 4 session 需要借助 cookie 才能正常工作 如果客户端完全禁止 cookie session 将失效 public void setAttribute String name Object valu

温馨提示

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

评论

0/150

提交评论