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";
}
*/
分享到:
相关推荐
实现一个禁止缓存的过滤器。 要求和提示: (1)禁止浏览器缓存所有动态页面; (2)有3个http响应头字段可以禁止浏览器缓存当前页面,它们在Servlet中的示例代码如下。 response.setDateHeader("Expires",-1); ...
在Java Web开发中,Filter(过滤器)和Listener(监听器)是两个重要的概念,它们在Web应用程序的生命周期管理和请求处理流程中扮演着关键角色。理解它们的区别和应用场景对于构建高效、灵活的Web应用至关重要。 ##...
在Java JSP(JavaServer Pages)环境中,统计在线人数是一项常见的需求,这通常涉及到服务器端的会话管理、数据持久化以及实时性处理。这里我们将深入探讨如何利用JSP技术来实现这一功能。 首先,我们需要理解JSP的...
在JavaWeb开发中,"FILTER(过滤器)"和"LISTENER(监听器)"是两个重要的组件,它们极大地增强了应用程序的功能和灵活性。本案例将深入探讨这两个组件的原理、用法及其在实际项目中的应用。 一、FILTER(过滤器) ...
本教程将深入探讨如何使用Java Server Pages (JSP) 实现一个网站流量统计器。这个统计器设计巧妙,无需与现有的数据层进行深度整合,因此在部署时非常灵活,只需简单添加就能实现对网站访问量的有效监控。下面我们将...
1. **过滤器定义**:过滤器是实现了javax.servlet.Filter接口的Java类,它可以在请求到达目标资源(如Servlet、JSP)之前和之后执行操作,如权限验证、字符编码转换、日志记录等。 2. **过滤器链**:多个过滤器可以...
2. **Filter和Listener**:在JSP应用中,过滤器(Filter)和监听器(Listener)能增强功能,如登录检查、性能监控和会话管理。 3. **JSP与Spring框架整合**:Spring MVC框架提供了更强大的MVC支持,与JSP配合使用,...
本学习笔记源码提供了全面的学习资源,涵盖了这两个技术的基础到高级应用,旨在帮助开发者深入理解并熟练掌握JSP和Servlet。 1. **JSP基础**: JSP是一种服务器端的脚本语言,它将HTML、CSS、JavaScript与Java代码...
- **后续请求**:JSP 编译后的 Servlet 将被缓存,后续请求直接使用缓存的 Servlet 处理。 #### 16. Servlet 的线程安全性问题 Servlet 默认不是线程安全的,因为它们可能在多线程环境下共享数据。为了解决这个...
通过上述知识点的介绍,我们可以看出《JSP与Servlet程序设计实践教程》主要围绕着JSP和Servlet这两种核心技术展开,不仅覆盖了基本概念和技术要点,还深入探讨了它们在实际项目中的应用技巧及注意事项。这对于学习...
这可以通过监听器(Listener)或过滤器(Filter)实现。例如,当一个JSP被请求后,可以捕获这个请求,生成HTML并保存在指定目录。 4. **重定向请求**:后续用户再次请求相同页面时,服务器可以直接返回已生成的HTML...
4. **过滤器(Filter)**:通过实现`Filter`接口,可以拦截请求和响应,进行预处理和后处理,例如字符编码转换、安全过滤等。 5. **监听器(Listener)**:通过实现各种监听器接口,如`ServletContextListener`、`...
14. **JSP与Servlet的过滤器和监听器**:学习如何使用Filter和Listener接口来拦截请求、响应,以及监听会话和应用事件。 15. **Web容器和部署**:了解Tomcat等Web服务器的工作原理,以及如何部署和调试JSP应用。 ...
### Servlet与JSP核心编程知识点解析 #### 一、Servlet基础概念 - **Servlet定义**:...通过深入学习这些技术,开发者能够更好地理解和掌握Servlet和JSP的基础知识及高级应用,从而开发出高效稳定的Web应用程序。
- **JSP**:第一次访问时会被编译成Servlet并缓存,后续访问直接使用编译后的Servlet,因此在多次访问时效率更高。 #### 四、Servlet与JSP的配合使用 - **MVC设计模式**:Servlet作为控制器(Controller),负责...
**JSP网上书店设计与实现** 本篇将详细介绍如何利用JSP技术来设计并实现一个功能完备的网上书店系统。JSP(Java Server Pages)是一种动态网页开发技术,它允许开发者将HTML、CSS和Java代码混合在一起,为用户提供...
它包括一系列技术,如JSP、Servlet、JavaBean、Filter、Listener等。在这个案例中,JavaWeb技术栈提供了构建Web应用所需的全部基础设施。 5. **图书管理系统架构**: 这个系统通常包含以下几个主要模块: - 用户...
web.xml是Web应用的配置文件,用于配置Servlet、Filter、Listener等,是理解和掌握JSP应用的关键。 以上内容涵盖了JSP高级编程中的核心概念和技术,通过深入学习并实践这些知识点,开发者能够构建更高效、更易于...
在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种重要的技术,它们用于构建动态Web应用程序。在这些技术中,过滤器(Filter)和监听器(Listener)是两个关键的概念,它们在处理请求、响应以及管理应用...
【音乐网站(JSP+SERVLET)】是一个基于Java技术构建的在线音乐平台项目,它主要利用了JSP(JavaServer Pages)和Servlet这两种核心技术来实现动态网页和服务器端的处理逻辑。在这个项目中,JSP用于展示用户界面,而...