Servlet的生命周及常用对象

上传人:l**** 文档编号:45026598 上传时间:2018-06-14 格式:DOCX 页数:7 大小:28.35KB
返回 下载 相关 举报
Servlet的生命周及常用对象_第1页
第1页 / 共7页
Servlet的生命周及常用对象_第2页
第2页 / 共7页
Servlet的生命周及常用对象_第3页
第3页 / 共7页
Servlet的生命周及常用对象_第4页
第4页 / 共7页
Servlet的生命周及常用对象_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Servlet的生命周及常用对象》由会员分享,可在线阅读,更多相关《Servlet的生命周及常用对象(7页珍藏版)》请在金锄头文库上搜索。

1、第十四天课堂笔记第十四天课堂笔记1. 多线程下的单例设计模式a) 单例: singleton, 只创建一个对象b) 饿汉式单例模式i.类被加载时就创建一个对象;ii.静态成员变量只被加载一次, 所以只创建一个对象iii.优点: 代码简单iv.缺点: 有可能创建不必要的对象package com.bjsxt.web.singleton; public class HungrySingleton private static HungrySingleton instance = new HungrySingleton(); private HungrySingleton() try Thread.

2、sleep(1000); catch (InterruptedException e) e.printStackTrace(); System.out.println(“HungrySingleton.HungrySingleton(饿汉式单例创建了一个对象)“); public static HungrySingleton getInstance() / 饿汉式单例 return instance; c) 懒汉式单例模式i.静态成员变量初识赋值为 null, 类加载时并不会创建对象;ii.通过 double check 机制, 保证只有在第一次调用时才去创建对象, 而且只创建一次;iii.优

3、点: 不会创建多余的对象iv.缺点: 代码稍微复杂package com.bjsxt.web.singleton; public class LazySingleton private static LazySingleton instance = null; private LazySingleton() try Thread.sleep(1000); catch (InterruptedException e) e.printStackTrace(); System.out.println(“LazySingleton.LazySingleton(懒 汉式单例创建了一个对象)“); pub

4、lic static LazySingleton getInstance() if (instance = null) synchronized (LazySingleton.class) if (instance = null) / double check instance = new LazySingleton(); return instance; 2. Servlet 的生命周期a) 载入: 即创建 Servlet 对象, 在第一次请求的时候创建, 只创建一次(懒汉式单例);b) 初始化: 即调用 init 方法, 在第一次请求的时候调用 init, 只执行一次;c) 执行: 即调用

5、 service 方法, 每次请求都会调用 service 方法, 执行若干次;d) 销毁: 在 Servlet 销毁前, 服务器自动调用 destroy 方法3. load-on-startupa) load-on-startup 标签用于配置 Servlet 的加载(实例化和初始化)时间b) 如果不配置或配置后加入一个负整数, 表示该 Servlet 不会在服务器启动(项目部署)时加载, 而是用到的时候才加载c) 如果配置该标签并加入一个正整数, 表示服务器启动时就会加载 Servlet, 同时, 数字越小, 加载顺序越优先4. HttpServletRequest 对象a) HttpSe

6、rvletRequest 是一个接口, 它继承了 ServletRequest接口b) 该对象由 Servlet 容器创建, 并作为参数传递给 Servlet 的service 方法, 用于把客户端的请求信息传递给 Servletc) 获取请求行信息的方法:private void getReqLine(HttpServletRequest req) System.out.println(“请求方式:“ + req.getMethod(); System.out.println(“路径URL:“ + req.getRequestURL(); System.out.println(“路径URI:

7、“ + req.getRequestURI(); System.out.println(“协议版本号:“ + req.getProtocol(); System.out.println(“协议名称:“ + req.getScheme(); System.out.println(“get方式的queryString:“ + req.getQueryString(); d) 获取请求头信息的方法:private void getReqHead(HttpServletRequest req) String referer = req.getHeader(“Referer“); System.out.

8、println(“Referer:“ + referer); Enumeration e = req.getHeaderNames(); while(e.hasMoreElements() String name = (String) e.nextElement(); System.out.println(name + “:“ + req.getHeader(name); e) 获取请求实体的方法:private void getReqEntity(HttpServletRequest req) String uname = req.getParameter(“uname“); String

9、hobs = req.getParameterValues(“hob“);System.out.println(“uname:“ + uname);/ 空字符串 System.out.println(“hob:“ + Arrays.toString(hobs);/ null 注意: 获取多个值的参数时, 使用 getPrameterValues 方法, 获取单个值的参数时, 使用 getPrameter 方法 输入框不填时, 可以提交, 但是后台拿到的是空字符串; 单选按钮, 复选框没选时, 不可以提交, 后台得到的是 nullf) 获取其他信息private void getReqOther

10、(HttpServletRequest req) System.out.println(“服务器端ip地址:“ + req.getLocalAddr();System.out.println(“服务器主机名:“ + req.getLocalName() ;System.out.println(“服务器端口号:“ + req.getLocalPort() ;System.out.println(“客户端ip地址:“ + req.getRemoteAddr();System.out.println(“客户端主机名:“ + req.getRemoteHost();System.out.println

11、(“客户端端口号:“ + req.getRemotePort();System.out.println(“当前项目的上下文路径:“ + req.getContextPath(); 5. HttpServletResponse 对象a) HttpServletResponse 是一个接口, 它继承了ServletResponse 接口b) 该对象由 Servlet 容器创建, 并作为参数传递给 Servlet 的service 方法, 用于帮助 Servlet 向客户端发送响应信息c) 响应行信息一般不需要程序员操作d) 设置响应头和响应实体protected void service(Http

12、ServletRequest req, HttpServletResponse resp) throws ServletException, IOException / 响应行通常不需要程序员操作 / 设置响应头 resp.setHeader(“Content-Type“, “text/html;charset=utf-8“);/ 重名时, setHeader会覆盖 resp.setHeader(“mouse“, “Razer“); resp.setHeader(“mouse“, “Logic“);/ 重名时, addHeader不会覆盖 resp.addHeader(“mouse“, “do

13、uble fly bird“);/ 设置响应实体 resp.getWriter().print(“终于可以写汉字了,哈哈哈“); 6. 中文乱码问题a) 乱码问题的原因: 字符集不统一b) 页面乱码的解决方式:c) post 请求乱码解决方式:/ 修改post请求的编码方式 req.setCharacterEncoding(“utf-8“);d) get 请求的乱码解决方式:i.因为 tomcat7 默认的编码方式为 iso-8859-1, 所以可以先使用 iso-8859-1 进行解码, 再使用 utf-8 进行编码byte b = rname.getBytes(“iso-8859-1“);

14、 rname = new String(b, “utf-8“);ii.修改 tomcat 的配置文件或者e) 响应乱码i.设置响应时的编码方式:resp.setCharacterEncoding(“utf-8“);ii.告知浏览器应该使用什么字符集接收响应内容resp.setHeader(“content-type“, “text/html;charset=utf-8“);或者:resp.setContentType(“text/html;charset=utf-8“);7. ServletConfig 对象a) ServletConfig 是 Servlet 配置对象, 由 Servlet

15、容器创建, 并将其传递给 Servlet 的 init 方法, 用于为 Servlet 传递初始化参数b) 配置信息的定义ConfigServletcom.bjsxt.web.servlet.ConfigServletcomputerLenovomousedouble flyc) 获取初始化参数protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException / 获取ServletConfig对象 ServletConfig config = getServletConfig();/ 获取初始化参数 String computer = config.getInitParameter(“computer“); String mouse = config.getInitParameter(“mouse“);System.out.println(“computer:“ + computer); System.out.println(“mouse:“ + mouse);System.out.println(“获取当前Servlet的名称:“ + config.getServletName();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号