`
junli0411
  • 浏览: 139814 次
  • 来自: ...
社区版块
存档分类
最新评论

jsp实用两例:用filter解决汉字编码及禁止页面缓存 和 用listener实现在线人数统计

阅读更多
1.用filter解决汉字编码及禁止页面缓存 (不用再在每个页面里去加那几行代码了):
package beanservlettest;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class servfilter extends HttpServlet implements Filter {
 private FilterConfig filterConfig;
 //Handle the passed-in FilterConfig
 public void init(FilterConfig filterConfig) {
  this.filterConfig = filterConfig;
 }
 //Process the request/response pair
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {
  try {
     request.setCharacterEncoding("GB2312");//设置编码
     ((HttpServletResponse)response).setHeader("Pragma","No-cache");
     ((HttpServletResponse)response).setHeader("Cache-Control","no-cache");
     ((HttpServletResponse)response).setHeader("Expires","0");//禁止缓存
   //自己添加的代码就这上面四行,其它的都是Jbuilder自动生成的:)
   filterChain.doFilter(request, response);
  }
  catch(ServletException sx) {
   filterConfig.getServletContext().log(sx.getMessage());
  }
  catch(IOException iox) {
   filterConfig.getServletContext().log(iox.getMessage());
  }
 }
 //Clean up resources
 public void destroy() {
 }
}

下面是在web.xml里的配置:
(我的是Jbuilder自动生成的)
 <filter>
  <filter-name>servfilter</filter-name>
  <filter-class>beanservlettest.servfilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>servfilter</filter-name>
  <url-pattern>/*</url-pattern>   ///这里表示对整个网站都有效
 </filter-mapping>


2.用listener实现在线人数统计.

package beanservlettest;//除了其中三行代码,其余均由Jbuilder自动生成

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class sessioncount extends HttpServlet implements ServletContextListener, ServletContextAttributeListener, HttpSessionListener, HttpSessionAttributeListener {
 private static int activeSessions = 0;
 public void contextInitialized(ServletContextEvent sce) {
 
 }

 public void contextDestroyed(ServletContextEvent sce) {
 
 }
  public void attributeAdded(ServletContextAttributeEvent scab) {
 
 }
  public void attributeRemoved(ServletContextAttributeEvent scab) {

 }
  public void attributeReplaced(ServletContextAttributeEvent scab) {

 }
  public void sessionCreated(HttpSessionEvent se) {
  activeSessions++;//每创建一个新的session就 加1
 }
  public void sessionDestroyed(HttpSessionEvent se) {
  if(activeSessions > 0) //每销毁一个新的session就 减1
  activeSessions--;
  }
 public void attributeAdded(HttpSessionBindingEvent se) {

 }
 public void attributeRemoved(HttpSessionBindingEvent se) {
  }

 public void attributeReplaced(HttpSessionBindingEvent se) {
 }
 public static int getActiveSessions() {
 return activeSessions;
}

}


web.xml里的配置如下:

 <listener>
  <listener-class>beanservlettest.sessioncount</listener-class>
 </listener>

jsp测试页面:

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="beanservlettest.sessioncount" %>

<html>
<head>
<title>
sc
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
当前在线人数有<%=sessioncount.getActiveSessions()%>人。
</body>
</html>
<a href= "logout.jsp">注销</a>


网页连接:

http://expert.csdn.net/Expert/topic/1788/1788525.xml?temp=.2403833
http://www.chinaunix.net/bbsjh/14/397.html


2003-7-23 12:44:00  
查看评语 ?  

2003-7-23 16:45:15  刚才找到了其它程序的一个错误,总算解决了。在xslt文件里:
把<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

写成了:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
//这是当时从 http://expert.csdn.net/expert/Xsl/2.xsl里copy的,
//我 晕:(

IE6里能够正常解析,
而java的JAXP却老是出错:

"javax.xml.transform.TransformerException: stylesheet 要求属性:version"
幸好 我突然想到找另外个xsl文件来对照了一下。

把这句话一修改,程序马上执行就成功了。

程序代码:
import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

第一种:
/*
try{
   File xmlFile = new File("C:\\xmltest\\tiezi.xml");
   File xsltFile = new File("C:\\xmltest\\tiezi.xsl");
   javax.xml.transform.Source xmlSource =
     new javax.xml.transform.stream.StreamSource(xmlFile);
   javax.xml.transform.Source xsltSource =
     new javax.xml.transform.stream.StreamSource(xsltFile);
   javax.xml.transform.Result result =
     new javax.xml.transform.stream.StreamResult(System.out);

   //创建一个TransformerFactory 实例
   javax.xml.transform.TransformerFactory transFact =
     javax.xml.transform.TransformerFactory.newInstance();
   javax.xml.transform.Transformer trans =
     transFact.newTransformer(xsltSource);
   trans.transform(xmlSource, result);

   return "转换成功了!!!";
  }
 catch(Exception e){
  System.out.println("出错");
  return e.toString()+"出错了:(";
 }
*/
第二种:
/* try {
  TransformerFactory transformerFactory =
             TransformerFactory.newInstance();

    StreamSource source = new StreamSource("C:\\xmltest\\tiezi.xml");
    StreamResult result = new StreamResult("C:\\xmltest\\result.xml");
    StreamSource style = new StreamSource("C:\\xmltest\\tiezi.xsl");

    Transformer transformer =
           transformerFactory.newTransformer(style);

    transformer.transform(source, result);
return "OK";
   } catch (Exception e) {
       e.printStackTrace();
       return "Failed";
   }
*/  

分享到:
评论

相关推荐

    Web应用与开发作业

    实现一个禁止缓存的过滤器。 要求和提示: (1)禁止浏览器缓存所有动态页面; (2)有3个http响应头字段可以禁止浏览器缓存当前页面,它们在Servlet中的示例代码如下。 response.setDateHeader("Expires",-1); ...

    Filter和Listener

    在Java Web开发中,Filter(过滤器)和Listener(监听器)是两个重要的概念,它们在Web应用程序的生命周期管理和请求处理流程中扮演着关键角色。理解它们的区别和应用场景对于构建高效、灵活的Web应用至关重要。 ##...

    JAVA jsp统计在线人数

    在Java JSP(JavaServer Pages)环境中,统计在线人数是一项常见的需求,这通常涉及到服务器端的会话管理、数据持久化以及实时性处理。这里我们将深入探讨如何利用JSP技术来实现这一功能。 首先,我们需要理解JSP的...

    JavaWeb两大组件FILTER&LISTENER

    在JavaWeb开发中,"FILTER(过滤器)"和"LISTENER(监听器)"是两个重要的组件,它们极大地增强了应用程序的功能和灵活性。本案例将深入探讨这两个组件的原理、用法及其在实际项目中的应用。 一、FILTER(过滤器) ...

    JSP实现一个网站流量统计器

    本教程将深入探讨如何使用Java Server Pages (JSP) 实现一个网站流量统计器。这个统计器设计巧妙,无需与现有的数据层进行深度整合,因此在部署时非常灵活,只需简单添加就能实现对网站访问量的有效监控。下面我们将...

    listener和filter 监听器和过滤器的介绍以及简单使用(csdn)————程序.pdf

    1. **过滤器定义**:过滤器是实现了javax.servlet.Filter接口的Java类,它可以在请求到达目标资源(如Servlet、JSP)之前和之后执行操作,如权限验证、字符编码转换、日志记录等。 2. **过滤器链**:多个过滤器可以...

    JSP实用教程

    2. **Filter和Listener**:在JSP应用中,过滤器(Filter)和监听器(Listener)能增强功能,如登录检查、性能监控和会话管理。 3. **JSP与Spring框架整合**:Spring MVC框架提供了更强大的MVC支持,与JSP配合使用,...

    JSP Servlet 学习笔记源码

    本学习笔记源码提供了全面的学习资源,涵盖了这两个技术的基础到高级应用,旨在帮助开发者深入理解并熟练掌握JSP和Servlet。 1. **JSP基础**: JSP是一种服务器端的脚本语言,它将HTML、CSS、JavaScript与Java代码...

    JSP面试题--基础

    - **后续请求**:JSP 编译后的 Servlet 将被缓存,后续请求直接使用缓存的 Servlet 处理。 #### 16. Servlet 的线程安全性问题 Servlet 默认不是线程安全的,因为它们可能在多线程环境下共享数据。为了解决这个...

    JSP与Servlet程序设计实践教程.pdf

    通过上述知识点的介绍,我们可以看出《JSP与Servlet程序设计实践教程》主要围绕着JSP和Servlet这两种核心技术展开,不仅覆盖了基本概念和技术要点,还深入探讨了它们在实际项目中的应用技巧及注意事项。这对于学习...

    jsp生成静态页面,全面生成。

    这可以通过监听器(Listener)或过滤器(Filter)实现。例如,当一个JSP被请求后,可以捕获这个请求,生成HTML并保存在指定目录。 4. **重定向请求**:后续用户再次请求相同页面时,服务器可以直接返回已生成的HTML...

    Servlet与JSP核心编程第二版源代码

    4. **过滤器(Filter)**:通过实现`Filter`接口,可以拦截请求和响应,进行预处理和后处理,例如字符编码转换、安全过滤等。 5. **监听器(Listener)**:通过实现各种监听器接口,如`ServletContextListener`、`...

    《JSP网络开发入门与实践》1-19章(课本上的代码)

    14. **JSP与Servlet的过滤器和监听器**:学习如何使用Filter和Listener接口来拦截请求、响应,以及监听会话和应用事件。 15. **Web容器和部署**:了解Tomcat等Web服务器的工作原理,以及如何部署和调试JSP应用。 ...

    Servlet与JSP核心编程第二版4

    ### Servlet与JSP核心编程知识点解析 #### 一、Servlet基础概念 - **Servlet定义**:...通过深入学习这些技术,开发者能够更好地理解和掌握Servlet和JSP的基础知识及高级应用,从而开发出高效稳定的Web应用程序。

    Servlet与JSP核心编程第二版2

    - **JSP**:第一次访问时会被编译成Servlet并缓存,后续访问直接使用编译后的Servlet,因此在多次访问时效率更高。 #### 四、Servlet与JSP的配合使用 - **MVC设计模式**:Servlet作为控制器(Controller),负责...

    Jsp网上书店设计与实现

    **JSP网上书店设计与实现** 本篇将详细介绍如何利用JSP技术来设计并实现一个功能完备的网上书店系统。JSP(Java Server Pages)是一种动态网页开发技术,它允许开发者将HTML、CSS和Java代码混合在一起,为用户提供...

    JSP综合案例:图书管理系统

    它包括一系列技术,如JSP、Servlet、JavaBean、Filter、Listener等。在这个案例中,JavaWeb技术栈提供了构建Web应用所需的全部基础设施。 5. **图书管理系统架构**: 这个系统通常包含以下几个主要模块: - 用户...

    jsp高级编程

    web.xml是Web应用的配置文件,用于配置Servlet、Filter、Listener等,是理解和掌握JSP应用的关键。 以上内容涵盖了JSP高级编程中的核心概念和技术,通过深入学习并实践这些知识点,开发者能够构建更高效、更易于...

    jsp/servlet中过滤器和监听器的区别

    在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种重要的技术,它们用于构建动态Web应用程序。在这些技术中,过滤器(Filter)和监听器(Listener)是两个关键的概念,它们在处理请求、响应以及管理应用...

    音乐网站(JSP+SERVLET).zip

    【音乐网站(JSP+SERVLET)】是一个基于Java技术构建的在线音乐平台项目,它主要利用了JSP(JavaServer Pages)和Servlet这两种核心技术来实现动态网页和服务器端的处理逻辑。在这个项目中,JSP用于展示用户界面,而...

Global site tag (gtag.js) - Google Analytics