zoukankan      html  css  js  c++  java
  • Servlet

    http://www.ibm.com/developerworks/cn/java/j-lo-servlet/

    http://www.importnew.com/14621.html

    Listener

    常用在开启应用时初始化应用或者关闭应用时清理应用。可以在应用里注册一个监听器(listener)来显示应用什么时候开启或者关闭。因此,通过监听这些事件,Servlet可以在一些事件发生时执行相应的动作。

    为了创建一个基于容器事件执行动作的监听器,你必须创建一个实现 ServletContextListener 接口的类。这个类必须实现的方法有 contextInitialized() 和 contextDestroyed()。这两个方法都需要 ServletContextEvent 作为参数,并且在每次初始化或者关闭Servlet容器时都会被自动调用。

    为了在容器注册监听器,你可以使用下面其中一个方法:

    1) 利用 @WebListener 注解。
    2) 在web.xml应用部署文件里注册监听器。
    3) 使用 ServletContext 里定义的 addListener() 方法

    请注意,ServletContextListener 不是Servlet API里唯一的监听器。这里还有一些其他的监听器,比如

    javax.servlet.ServletRequestListener
    javax.servlet.ServletRequestAttrbiteListener
    javax.servlet.ServletContextListener
    javax.servlet.ServletContextAttributeListener
    javax.servlet.HttpSessionListener
    javax.servlet.HttpSessionAttributeListener

    根据你要监听的事件选择他们来实现你的监听器类。比如,每当创建或销毁一个用户session时,HttpSessionListener 就会发出通知。

    Servlet初始化参数

    现在的大多数应用都需要设置一些在应用/控制器(controller)启动时可以传递的配置参数(configuration parameters)。Servlet同样可以接受初始化参数,并在处理第一个请求前来使用它们来构建配置参数。

    显然,你也可以在Servlet里硬编码配置值。但是这样做的话,在Servlet发生改动时你需要再次重新编译整个应用。没有人喜欢这样做。

     <servlet>
            <servlet-name>MyServlet</servlet-name>
            <servlet-class>MyServlet</servlet-class>
            <init-param>
                <param-name>szc</param-name>
                <param-value>hello SZC</param-value>
            </init-param>
        </servlet>
    

      

    设置后,你就可以在代码里调用 getServletConfig.getInitializationParameter() 并传递参数名给该方法来使用参数。就像下面展示的代码一样:

    String value = getServletConfig().getInitParameter("szc");

    使用RequestDispatcher.forward()转发请求到另一个Servlet

    有时候,你的应用需要把一个Servlet要处理的请求转让给另外的Servlet来处理并完成任务。而且,转让请求时不能重定向客户端的URL。即浏览器地址栏上的URL不会改变。

    RequestDispatcher rd = getServletContext().getRequestDispatcher("/MyServlet");
            rd.forward(req, resp);

    使用HttpServletResponse.sendRedirect()重定向请求到另一个Servlet

    尽管有时候,你不想在Servlet发送重定向时通知用户,就像我们在上面那段看到的一样。但是在某些情况下,我们确实想要通知用户。当应用内的特定URL被访问时,你想把浏览器的URL重定向到另外一个

    httpServletResponse.sendRedirect("/TestServlet/MyServlet");

    但是,注意这两种方式的url不同,后者得加上tomcat 的path

  • 相关阅读:
    Python OpenCV 常用操作
    Conda Cheatsheet | 速查表
    Loadrunner解决启动浏览器后页面显示空白
    26个ASP.NET常用性能优化方法
    C# Foreach用法
    体验ASP.NET MVC3 表单令牌功能!
    基于.Net(C#开发)平台的三层框架架构软件的设计与实现
    去掉浏览器中a标签的虚线
    Microsoft Dynamics CRM 4.0 序列号
    编写 Cookie
  • 原文地址:https://www.cnblogs.com/SamuelSun/p/4730073.html
Copyright © 2011-2022 走看看