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

原文地址:https://www.cnblogs.com/SamuelSun/p/4730073.html