`
isiqi
  • 浏览: 16558266 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多
作者 : lnboy
标题 : jsp实用两例:用filter解决汉字编码及禁止页面缓存 和 用listener实现在线人数统计.
关键字: jsp filter 汉字编码 listener 在线人数 统计
分类 : JSP入门
密级 : 公开

(评分:★★★★ , 回复: 1, 阅读: 926)
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("出错");
returne.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(过滤器) ...

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

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

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

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

    JSP实用教程

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

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

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

    JSP面试题--基础

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

    JSP Servlet 学习笔记源码

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

    springboot+mybatis+druid+jsp+bootstrap实现后台权限管理系统源码.zip

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

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

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

    JSP案例开发-源代码补充内容

    3. **JSP动作标签**:如`&lt;jsp:useBean...&gt;`实例化和使用JavaBean,`&lt;jsp:setProperty...&gt;`设置Bean属性,`&lt;jsp:getProperty...&gt;`获取Bean属性。 4. **EL和JSTL**:EL简化了属性访问,如`${...}`,而JSTL提供了一...

    音乐网站(JSP+SERVLET).zip

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

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

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

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

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

    毕业设计,基于springboot+mybatis+druid+jsp+bootstrap实现后台权限管理系统,内含源码+数据库

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    jsp网络购物系统[适合毕业设计].zip

    通过缓存技术(如Ehcache)、减少不必要的数据库查询、优化JSP页面的结构和代码,以及利用JSP的标签库(Tag Libraries)如JSTL,可以提升系统的性能。 一个完整的JSP网络购物系统会涉及以上多个方面,通过合理的...

    Jsp网上书店设计与实现

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

    Servlet与JSP核心编程第二版2

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

Global site tag (gtag.js) - Google Analytics