javawebday19(Servlet细节和获取ServletContext的四种方法)
2017-11-01 19:29
295 查看
/* *Servlet细节 * 不要在Servlet中创建成员 创建局部变量即可 * 可以创建无状态成员 * 可以创建有状态的成员 但状态必须为只读的 *3、有状态和无状态对象 * 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。 *在不同方法调用间不保留任何状态。其实就是有数据成员的对象。 * 无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象。不能保存数据,是不变类,是线程安全的。 *具体来说就是只有方法没有数据成员的对象,或者有数据成员但是数据成员是可读的对象。 *Servlet与线程安全 * 因为一个类型的Servlet只有一个实例对象 那么就有可能会出现一个Servlet同时处理多个请求 *那么Servlet是否是线程安全的? 不是线程安全的 因此Servlet的工作效率很高 但也存在线程安全问题 * 所以不应该在Servlet中直接创建成员变量 因为可能会存在一个线程对这个成员变量进行写操作 *另一个线程 对这个成员变量进行读操作 * *让服务器在启动时就创建Servlet * 默认情况下 服务器会在某个Servlet第一次收到请求时创建它 也可以在web.xml中对Servlet进行配置 使服务器启动时就创建Servlet *在web.xml中的<servlet> 中加入<load-on-startup>0</load-on-startup> 配置要求非负整数 * *<url-pattern> *<url-pattern>是<servlet-mapping>的子元素 用来指定Servlet的访问路径 即url 它必须是以/开头 * 可以在<servlet-mapping>中给出多个<url-pattern> * <servlet-mapping> * <servlet-name>AServlet</servlet-name> * <url-pattern>/AServlet</url-pattern> * <url-pattern>/BServlet</url-pattern> * </servlet-mapping> * 说明一个Servlet绑定了两个URL无论访问/AServlet或/BServlet 访问的都是AServlet * * 还可以在<url-pattern>中使用通配符 所谓通配符就是*星号可以匹配任何URL前缀或后缀 使用通配符可以命名一个Servlet绑定一组URL 例如 * <url-pattern>/servlet/*</url-pattern> /servlet/a 、/servlet/b 都匹配/servlet/* 路径匹配 * <url-pattern>*.do</url-pattern> /abc/a/g.do 、/a.do 都匹配*.do 扩展名匹配 * <url-pattern>/*</url-pattern>匹配所有URL 全匹配 *通配符要么为前缀 要么为后缀 不能在URL中间位置 也不能只有通配符 而且一个URL中最多只能出现一个通配符 * /*.do错误 因为在中间 * 通配符是一种模糊匹配URL的方式 如果存在更具体的<url-pattern>那么访问路径回去匹配具体的<url-pattern> * *web.xml 文件的继承 *在${CATALINA_HOME}\conf\web.xml 中的内容相当于写到了每个项目的web.xml中 是所有web.xml的父文件 *每个完整的javaweb应用中都需要有web.xml但我们不知道所有的web.xml文件都有一个共同的父文件 在tomcat的conf/web.xml路径 * <servlet-name>default</servlet-name> 优先级最低 如果一个请求没有人处理 那么他来处理 显示404 * <url-pattern>/</url-pattern> *MIME类型用来标识网络上资源的媒体类型 *在应用的web.xml中如果没有对<welcome-file-list>进行覆盖 那么默认主页为index.html index.htm index.jsp * *ServletContext *一个项目只有一个ServletContext对象 *可以在N多个Servlet中来获取这个唯一的对象 使用它可以给多个Servlet传递数据 *天地同寿 对象在Tomcat启动时就创建 在Tomcat关闭时才会死去 * *ServletContext概述 * 服务器会为每个应用创建一个ServletContext对象 * ServletContext对象的创建是在服务器启动时完成的 * ServletContext对象的销毁是在服务器关闭时完成的 * ServletContext对象的作用是在整个Web应用的动态资源之间共享数据 例如在AServlet中向ServletContext对象中保存一个值 *然后在BServlet中就可以获取这个值 就是共享数据 * *获取ServletContext *ServletConfig#getServletContext() *GenericServlet#getServletContext() *HttpSession#getServletContext() *ServletContextEvent#getServletContext() * *在Servlet中获取ServletContext对象 * 在void init(ServletConfig config)中 ServletContext context = config.getServletContext(); *ServletConfig类的getServletContext()方法可以用来获取ServletContext对象 *在GenericServlet或getServletContext中获取ServletContext对象 * GenericServlet类有ServletContext()方法 所以可以直接用this.getServletContext()来获取 */
相关文章推荐
- ServletContextListener,各种获取servletContext对象的方法
- servlet都有一个servletConfig对象;四个config对象可以调用的方法;ServletContext对象之获取web项目信息;设置全局初始化参数的配置
- 获取ServletContext方法
- Servlet的Web应用---三种方法获取表单的各种属性(源码)
- vc++中获取鼠标的坐标值于状态栏中的四种方法
- request获取上下文路径、URL、URI、Servlet路径等方法
- Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】
- 获取运行时类的Class的四种方法。
- 四种获取Class对象的方法 Java反射机制
- Servlet获取web.xml中的参数方法
- Java获取系统时间的四种方法
- ServletContext对象(4)、web项目中路径使用、ServletConfig,ServletContext方法总结
- getServletContext和getServletConfig都有getInitParameter的方法 区别
- 不同框架实现的WebService的服务端获取HttpServletRequest的方法
- HttpServletRequest常用获取URL的方法
- ServletContext获取多个servlet公共参数
- Applet与Servlet通讯的四种方法及其比较
- Servlet(4)ServletContext接口 (获取web.xml中所有Servlet共有的信息)
- Servlet--ServletContext作用一(获取项目运行路径和文件)
- 在Servlet使用getServletContext()获取ServletContext对象出现java.lang.NullPointerException(空指针)异常的解决办法