- 浏览: 447229 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Luob.:
楼主 你这个问题怎么搞定的
奇异的 Spring WebApplicationContext 自动关闭 -
u013202238:
...
PDF和Java技术(PDFBox) -
u013202238:
...
PDF和Java技术(PDFBox) -
yuan1225:
您好请问 Discuz论坛的系统设置在哪里,登陆后台后没有 ...
Discuz!论坛通行证与JSP网站的整合 -
美妙人生:
,好,太好了,只是还是不太理解!
Discuz!论坛通行证与JSP网站的整合
首先想到的一种办法,是采用java.net的URLConnection把服务器上的jsp抓过来做缓存,不过我觉得这样做太见外了,自己服务器上的东西,为何要用HTTP去访问.于是想另外一个办法,把jsp的out对象的输出控制到自己希望的地方.比如输出到静态文件,又或者保存成全局的字符串变量.这样的话,浏览就不需要执行jsp,只是浏览该html了.仅仅在数据有更新的时候进行一次update操作,把jsp重新输出为html.
我觉得,浏览事件比数据插入或更新发生的次数多的时候.不妨试试这个办法来提高页面访问速度.
整件事情有点像把jsp当作模板,生成静态的html页面.
将如下代码写入web-xml
<filter>
<filter-name>FileCaptureFilter</filter-name>
<filter-class>com.junjing.filter.FileCaptureFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FileCaptureFilter</filter-name>
<url-pattern>/latest.jsp</url-pattern>
</filter-mapping>
latest.jsp是我要cache的页面
java源码代码如下
/** * START File FileCaptureFilter.java */
package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FileCaptureFilter implements Filter
{
private String protDirPath;
public void init(FilterConfig filterConfig)
throws ServletException
{
protDirPath = filterConfig.getServletContext().getRealPath("/");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException, ServletException
{
String fileName = protDirPath + "forum/lastest.html";
PrintWriter out = response.getWriter();
FileCaptureResponseWrapper responseWrapper = new FileCaptureResponseWrapper((HttpServletResponse)response);
chain.doFilter(request, responseWrapper);
// fill responseWrapper up
String html = responseWrapper.toString();
//得到的html页面结果字符串
// responseWrapper.writeFile(fileName);
// dump the contents 写成html文件,也可以保存在内存
//responseWrapper.writeResponse( out );
// back to browser
//responseWrapper.sendRedirect("lastestThread.jsp");
}
public void destroy() {}
}
/** * END File FileCaptureFilter.java */
/** * START File FileCaptureResponseWrapper.java */
package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FileCaptureResponseWrapper
extends HttpServletResponseWrapper
{
private CharArrayWriter output;
public String toString()
{
return output.toString();
}
public FileCaptureResponseWrapper(HttpServletResponse response)
{
super(response);
output = new CharArrayWriter();
}
public PrintWriter getWriter()
{
return new PrintWriter(output);
}
public void writeFile(String fileName)
throws IOException
{
FileWriter fw = new FileWriter(fileName);
fw.write( output.toCharArray() );
fw.close();
}
public void writeResponse(PrintWriter out)
{
out.print( output.toCharArray() );
}
}
/** * END File FileCaptureResponseWrapper.java */附件源代码
不过采用resin服务器的话,以上代码会失效。因为resin没有实现getWriter方法,而是采用getOutputStream取而代之,所以必须修改些代码来迎合resin运行环境:
/** * START File FileCaptureResponseWrapper.java */
package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FileCaptureResponseWrapper
extends HttpServletResponseWrapper
{
private CharArrayWriter output;
public String toString()
{
return output.toString();
}
public FileCaptureResponseWrapper(HttpServletResponse response)
{
super(response);
output = new CharArrayWriter();
}
public PrintWriter getWriter()
{
return new PrintWriter(output);
}
public void writeFile(String fileName)
throws IOException
{
FileWriter fw = new FileWriter(fileName);
fw.write( output.toString());
fw.close();
}
public ServletOutputStream getOutputStream()
throws java.io.IOException
{
return new ServletOutputStream();
}
public void write(int b)
throws IOException
{
output.write(b);
}
public void write(byte b[])
throws IOException
{
output.write(new String(b,"GBK"));
}
public void write(byte b[], int off, int len)
throws IOException
{
output.write(new String(b, off, len));
}
};
}
public void writeResponse(PrintWriter out)
{
out.print(output.toCharArray());
}
}
/** * END File FileCaptureResponseWrapper.java */
发表评论
-
严重鄙视JobInitializationPlugin的不负责行为
2009-06-22 16:14 1941最近把quart集成到项目中,感觉非常好,尤其JobI ... -
在实践中使用Jstat监控gc情况
2009-06-01 18:19 2551http://rdc.taobao.com/blog/qa/? ... -
青菜猫lucene2.2.0全文检索
2008-12-19 00:36 1428我用的是lucene2.2.0, 最近要做一个站内的全文检索 ... -
JDK命令详解
2008-12-13 01:10 1709JDK的命令详解(1)功能 ... -
Java命令参数说明大全
2008-12-13 01:09 1423序言: Java在运行已编译完成的类时,是通过java虚拟机来 ... -
tomcat 下 java.lang.OutOfMemoryError 其解决方法
2008-12-09 14:21 11771、 PermGen space的全称是Permanent ... -
ehcach 配置
2008-12-09 13:11 17601.EhCache是什么 EhCac ... -
Java是如何管理内存
2008-07-15 23:16 1629Java是如何管理 ... -
java内存分配研究
2008-07-15 22:35 3015jvaa内存分配研究 有 ... -
java读取属性文件中文乱码问题及解决
2008-07-10 14:21 6193昨天在弄一个java属性文件的时候,出现中文乱码问题,这个主要 ... -
java mail 在ubuntu 下的问题
2008-07-10 10:31 1839Neptune 发表于 2007-9-3 14:11:04 ... -
java常用正则表达式
2008-06-30 09:25 1710import java.util.regex.Matche ... -
java乱码
2008-05-21 20:33 1659乱码对于使用非英语文 ... -
jar打包详解
2008-03-20 16:06 1738先打开命令提示符(win200 ... -
spring中配置二级缓存
2008-03-19 13:08 45011.首先,在spring的hibernate配置里(我的是ap ... -
给Tomcat,Apache配置gzip压缩
2008-03-18 17:27 3975[网站提速] - 给Tomcat,Apache配置gzip压缩 ... -
hibernate二级缓存攻略
2008-03-17 17:47 1252[高手教程]hibernate二级缓存攻略 发布时间:200 ... -
反相代理的Web缓存
2008-03-12 16:10 2418基于反相代理的Web缓存 ... -
详解JSP 2.0下的动态内容缓存
2008-03-12 15:35 1363在Web应用中,内容缓存 ... -
[java]利用正则表达式验证Email字符串
2008-01-31 15:36 1753代码如下: java 代码 public boo ...
相关推荐
jsp编程的一些小技巧总结,绝对实用。包括JSP编程中常用的js技术。 1.JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4. 两级下拉列表框联动菜单? 5. java中如何把一个目录...
jsp 显示内容缓存技巧 前段时间做自己社区的论坛,在jive 的基础上做一个页面显示所有论坛的帖子,可以称之为总版,模仿forum 类的接口做个superforum 并且实现cachable,不过因为这个页面刷新量比较大,虽然被cache ...
JSP编程技巧集锦 <br>需要者请联系:e_mail:fzlotuscn@yahoo.com.cn QQ:595563946<br><br>目 录 <br>1. JSP编程中常用的js技术 2. 在下拉列表框里选择一个值后跳出新窗口? 3. 在JSP中启动execl? 4...
2. **分离关注点**:将业务逻辑移到JavaBeans,保持JSP页面专注于显示。 3. **使用布局模板**:通过`<jsp:include>`和`<jsp:useBean>`实现页面复用和布局管理。 4. **错误处理**:确保有合适的异常处理机制,避免在...
**JSP分页显示技术详解** 在Web开发中,数据量较大的时候,通常需要采用分页的方式来展示数据,以提高用户体验并减轻服务器负担。JSP(JavaServer Pages)作为Java平台上的动态网页技术,提供了丰富的功能来实现这...
此外,通过JSP显示这些数据,可以使用JSTL的`<c:forEach>`标签遍历列表,生成表格或列表视图。 七、异常处理与错误页面 表示层类应包含处理异常的机制,确保在出现错误时能优雅地展示错误信息,而不是显示不友好的...
缓存静态内容;使用session管理用户状态时,注意清理无用的session。 这些小技巧涵盖了JSP开发中的常见问题和解决方案,通过学习和实践这些技巧,你可以更有效地编写和维护JSP应用程序,提高开发效率,同时提升用户...
**JSP分页显示**是Web开发中常见的...通过以上内容,我们可以了解到JSP分页显示的基本原理和实现方法。在实际项目中,我们需要根据具体需求和性能要求,灵活运用这些技术和策略,为用户提供高效、流畅的数据浏览体验。
10. **优化JSP缓存**:通过设置合适的缓存策略,可以减少服务器对JSP页面的重新编译,提高响应速度。 11. **使用自定义标签库**:创建和使用自定义标签库可以使代码更模块化,提高代码复用性,并且让页面更易读。 ...
使用`<jsp:include page="header.jsp" flush="true" />`可以缓存静态内容,提高页面加载速度。同时,合理使用session和cookie,避免不必要的网络传输。 ### 8. **国际化与本地化** 通过`<fmt:message>`标签和资源包...
本文将围绕“jsp网页设计40种常见的网页技巧”这一主题,结合JavaScript的应用,来深入探讨一些实用的技术点。 1. **响应式设计**:确保你的JSP页面能在不同设备上自适应显示,利用CSS3的媒体查询实现。 2. **模板...
在讨论JSP页面中图片居中的问题时,首先需要掌握一些基础的CSS布局知识,包括display属性的使用、垂直居中的方法、margin属性的自动居中技巧以及W3C标准对页面渲染的影响。 当涉及到在div中居中一张图片时,CSS是...
对于初学者,可以通过分析和修改这个源代码来学习JSP开发、数据库交互、MVC模式应用以及Web应用的部署和调试技巧。 综上所述,"jsp新闻发布系统源代码"是一个完整的项目实例,它涵盖了JSP开发中的多种技术和实践,...
- 业务逻辑应放在JavaBean或Servlet中,JSP仅负责显示数据,遵循MVC模式。 - 使用Model2架构,提高代码的可维护性和可扩展性。 7. **错误处理和日志记录** - 使用`<error-page>`配置处理特定HTTP错误代码的页面...
3. **动态表格展示**:使用JSP和JSTL显示动态生成的数据表格,体现JSP的动态内容生成能力。 4. **邮件发送功能**:结合JavaMail API,利用JSP发送电子邮件。 **六、最佳实践与进阶技巧** 1. **MVC设计模式**:了解...
可以通过使用缓存、节流或防抖函数等技巧来优化。 6. 兼容性处理:不同的浏览器可能对某些JavaScript特性支持不一,因此需要考虑兼容性问题,确保在各种环境下都能正常工作。 通过"HighlightWord"这个文件,我们...
JSP技术的核心在于它的“页面组件”,这些组件在服务器端运行,并能够生成HTML、XML或其他格式的文档,然后发送到客户端进行显示。 ### JSP基本概念 1. **JSP页面结构**:一个JSP页面可以包含HTML、CSS、...
2. **Servlet控制逻辑,JSP显示视图**:推荐采用MVC(Model-View-Controller)架构,Servlet处理业务逻辑,JSP负责展示数据。 ### 四、JSP实战 1. **简单实例**:创建一个Hello, World! JSP页面,了解JSP运行机制...
JSP分页技巧不仅涉及对变量和SQL查询的合理设计,还需要关注性能优化,例如缓存机制的引入、数据库索引的优化等,以确保在处理大量数据时仍能保持良好的响应速度。此外,随着技术的发展,现代Web框架如Spring Boot...
**JSP实现BBS论坛** 是一种常见的Web应用程序开发任务,尤其在软件工程课程设计和毕业设计中常见。它涉及到多种技术的综合运用,...通过分析这些文件,可以进一步学习和理解JSP实现BBS论坛的具体实现细节和编程技巧。