关于JAVAweb的一些东西

1、Servlet
    1.Servlet访问URL映射配置
        <servlet>
            <servlet-name>ServletDemo1</servlet-name>
            <servlet-class>gacl.servlet.study.ServletDemo1</servlet-class>
        </servlet>

        <servlet-mapping>
            <servlet-name>ServletDemo1</servlet-name>
            <url-pattern>/servlet/ServletDemo1</url-pattern>
        </servlet-mapping>
    2.如果在<servlet>元素中配置了一个<load-on-startup>元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。
    3.Servlet的线程安全问题
        *使用全局变量会存在线程安全问题
        1.synchronized 会使任务排队
        2.SingleThreadModel  引擎将以单线程模式来调用其service方法。
    4.ServletConfig讲解
        1.配置Servlet初始化参数(通过ServletConfig获取Servlet的初始化参数)
            <servlet>
                <servlet-name>ServletConfigDemo1</servlet-name>
                <servlet-class>gacl.servlet.study.ServletConfigDemo1</servlet-class>
                <!--配置ServletConfigDemo1的初始化参数 -->
                <init-param>
                    <param-name>name</param-name>
                    <param-value>gacl</param-value>
                </init-param>
            </servlet>
        2.ServletContext对象:WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
        3.ServletContext的应用
            1.多个Servlet通过ServletContext对象实现数据共享
            2.获取WEB应用的初始化参数(web.xml配置)
                <context-param>
                    <param-name>url</param-name>
                    <param-value>jdbc:mysql://localhost:3306/test</param-value>
                </context-param>
                Servlet的方法调用
                    ServletContext context = this.getServletContext();
            3.用servletContext实现请求转发
                ServletContext context = this.getServletContext();//获取ServletContext对象
                RequestDispatcher rd = context.getRequestDispatcher("/servlet/ServletContextDemo5");//获取请求转发对象(RequestDispatcher)
                rd.forward(request, response);//调用forward方法实现请求转发
            4.利用ServletContext对象读取资源文件
                1.response.setContentType("text/html;charset=UTF-8");目的是控制浏览器用UTF-8进行解码;
2、Filter简介
    1.Servlet提供了一个Filter接口,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter;
    2.Filter链
        在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。
    3.Filter的部署
        1.注册Filter
            <filter>
                <description>FilterDemo02过滤器</description>
                <filter-name>FilterDemo02</filter-name>
                <filter-class>me.gacl.web.filter.FilterDemo02</filter-class>
                <!--配置FilterDemo02过滤器的初始化参数-->
                <init-param>
                    <description>配置FilterDemo02过滤器的初始化参数</description>
                    <param-name>name</param-name>
                    <param-value>gacl</param-value>
                </init-param>
                <init-param>
                    <description>配置FilterDemo02过滤器的初始化参数</description>
                    <param-name>like</param-name>
                    <param-value>java</param-value>
                </init-param>
            </filter>
        2、映射Filter
            <!--映射过滤器-->
            <filter-mapping>
                <filter-name>FilterDemo02</filter-name>
                <!--“/*”表示拦截所有的请求 -->
                <url-pattern>/*</url-pattern>
                <dispatcher>REQUEST</dispatcher>
                <dispatcher>FORWARD</dispatcher>
            </filter-mapping>
            <dispatcher> 子元素可以设置的值及其意义:
            REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,
                    那么该过滤器就不会被调用。
            INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
            FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
            ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

3、listener        
    1.JavaWeb中的监听器,监听ServletContext,HttpSession和ServletRequest这三个域对象
    2.监听ServletContext域对象的创建和销毁(ServletContextListener )
        1.当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。
        当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。
        **ServletContext域对象创建和销毁时机:
        创建:服务器启动针对每一个Web应用创建ServletContext
        销毁:服务器关闭前先关闭代表每一个web应用的ServletContext
        2.在web.xml文件中注册监听器
            <listener>
                <description>ServletContextListener监听器</description>
                <!--实现了ServletContextListener接口的监听器类 -->
                <listener-class>me.gacl.web.listener.MyServletContextListener</listener-class>
            </listener>
    3.监听HttpSession域对象的创建和销毁(HttpSessionListener )
        1.创建一个Session时,激发sessionCreated (HttpSessionEvent se) 方法
        销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se) 方法。     
          
        2.在web.xml文件中注册监听器
            <!--注册针对HttpSession对象进行监听的监听器-->
            <listener>
                <description>HttpSessionListener监听器</description>
                <listener-class>me.gacl.web.listener.MyHttpSessionListener</listener-class>
            </listener>
            <!-- 配置HttpSession对象的销毁时机 -->
            <session-config>
                <!--配置HttpSession对象的1分钟之后销毁 -->
                <session-timeout>1</session-timeout>
            </session-config>
    4.监听ServletRequest域对象的创建和销毁(ServletRequestListener )
        1.Request对象被创建时,监听器的requestInitialized(ServletRequestEvent sre)方法将会被调用
        Request对象被销毁时,监听器的requestDestroyed(ServletRequestEvent sre)方法将会被调用
         ***ServletRequest域对象创建和销毁时机:
            创建:用户每一次访问都会创建request对象
            销毁:当前访问结束,request对象就会销毁
        2.在web.xml文件中注册监听器
            <listener>
                <description>ServletRequestListener监听器</description>
                <listener-class>me.gacl.web.listener.MyServletRequestListener</listener-class>
            </listener>        
    5.虚拟路径的发布
        <Context path="/world" docBase ="D:\hello" reloadable="true"/>
        reloadable:一般设置为true后,tomcat不需要重启启动,自动热加载        
            
            

猜你喜欢

转载自www.cnblogs.com/wangjianly/p/10339327.html