资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
第十四天课堂笔记第十四天课堂笔记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.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.优点: 不会创建多余的对象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(懒 汉式单例创建了一个对象)“); public 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) 执行: 即调用 service 方法, 每次请求都会调用 service 方法, 执行若干次;d) 销毁: 在 Servlet 销毁前, 服务器自动调用 destroy 方法3. load-on-startupa) load-on-startup 标签用于配置 Servlet 的加载(实例化和初始化)时间b) 如果不配置或配置后加入一个负整数, 表示该 Servlet 不会在服务器启动(项目部署)时加载, 而是用到的时候才加载c) 如果配置该标签并加入一个正整数, 表示服务器启动时就会加载 Servlet, 同时, 数字越小, 加载顺序越优先4. HttpServletRequest 对象a) HttpServletRequest 是一个接口, 它继承了 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:“ + 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.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 hobs = req.getParameterValues(“hob“);System.out.println(“uname:“ + uname);/ 空字符串 System.out.println(“hob:“ + Arrays.toString(hobs);/ null 注意: 获取多个值的参数时, 使用 getPrameterValues 方法, 获取单个值的参数时, 使用 getPrameter 方法 输入框不填时, 可以提交, 但是后台拿到的是空字符串; 单选按钮, 复选框没选时, 不可以提交, 后台得到的是 nullf) 获取其他信息private void getReqOther(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(“客户端端口号:“ + req.getRemotePort();System.out.println(“当前项目的上下文路径:“ + req.getContextPath(); 5. HttpServletResponse 对象a) HttpServletResponse 是一个接口, 它继承了ServletResponse 接口b) 该对象由 Servlet 容器创建, 并作为参数传递给 Servlet 的service 方法, 用于帮助 Servlet 向客户端发送响应信息c) 响应行信息一般不需要程序员操作d) 设置响应头和响应实体protected void service(HttpServletRequest 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“, “double 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“); 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 容器创建, 并将其传递给 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();
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号