- 浏览: 318437 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
完善自我:
支持一下!
揭秘IT人才特点:中美印日四国程序员比较 -
悲剧了:
好文,看玩thinking in java的提到的异常处理,看 ...
高效的Java异常处理框架(转) -
yin_bp:
开源框架bbossgroups页支持组件异步方法调用哦,详情请 ...
Spring 3中异步方法调用 -
flyjava:
sun的悲哀
Apache怒了,威胁说要离开JCP
具体实现:
利用 Filter 的过滤功能把 *.jsp 过滤出来,判断是否存在对应的 .html 文件,如果不存在对应的 .html 文件,则将其内容读出写入指定的 .html 文件,再跳转到对应的 .html 即可。如果存在对应的 .html 文件,则直接跳转到对应的 .html 即可。
代码:
JspFilter.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class JspFilter implements Filter {
public void destroy() {
// TODO 自动生成方法存根
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest hreq = (HttpServletRequest) request;
HttpServletResponse hresp = (HttpServletResponse) response;
String name = hreq.getRequestURL().substring(
hreq.getRequestURL().lastIndexOf( "/" ) + 1,
hreq.getRequestURL().lastIndexOf( "." ));
if (hreq.getRequestURL().indexOf( ".jsp" ) != -1 && ( null == hreq.getParameter( "type" ) || hreq.getParameter( "type" ).equals( "" ))) {
hresp.sendRedirect(hreq.getContextPath()+ "/conversion ?name=" +hreq.getRequestURL());
return ;
}
chain.doFilter(request, response);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO 自动生成方法存根
}
}
ConversionServlet.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ConversionServlet extends HttpServlet {
public ConversionServlet () {
super ();
}
public void destroy() {
super .destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
//---- 获取请求的URL
String reqTarget = request.getParameter( "name" );
//---- 指定对应JSP 的HTML 名称
String name = reqTarget.substring(reqTarget.lastIndexOf( "/" ) + 1,
reqTarget.lastIndexOf( "." ));
//--- 判断是否存在对应的HTML 文件
File file = new File(request.getRealPath( "/" ) + name + ".html" );
if (!file.exists()) { //-------- 如果不存在对应的HTML 文件
try {
file.createNewFile(); //-------- 创建HTML 文件
//------- 将JSP 的内容写入对应的HTML 文件内
InputStream in;
StringBuffer sb = new StringBuffer( "" );
//---- 注意这里,不能直接访问请求的URL ,如果直接访问的话,会陷入死循环
URL url = new java.net.URL(reqTarget.toString()+ "?type=11" );
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestProperty( "User-Agent" , "Mozilla/4.0" );
connection.connect();
in = connection.getInputStream();
java.io.BufferedReader breader = new BufferedReader(
new InputStreamReader(in, "GBK" ));
String currentLine;
FileOutputStream fos = new FileOutputStream(file);
while ((currentLine = breader.readLine()) != null ) {
sb.append(currentLine);
fos.write(currentLine.getBytes());
}
if ( null != breader)
breader.close();
if ( null != fos)
fos.close();
//--------------- 转到与JSP 对应的HTML 页
response.sendRedirect(request.getContextPath()+ "/" +name + ".html" );
} catch (Exception e) {
e.printStackTrace();
}
} else {
//---------- 如果存在指定的HTML ,直接跳转到指定的HTML 页
response.sendRedirect(request.getContextPath()+ "/" +name + ".html" );
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
public void init() throws ServletException {
// Put your code here
}
}
WEB.XML 配置:
<? xml version = " 1.0 " encoding = " UTF-8 " ?>
< web-app version =" 2.4 "
xmlns =" http://java.sun.com/xml/ns/j2ee "
xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation =" http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " >
< filter >
< filter-name >jsp filter </ filter-name >
< filter-class > com.beanutil.JspFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > jspfilter </ filter-name >
< url-pattern > *.jsp </ url-pattern >
</ filter-mapping >
< servlet >
< servlet-name >c onversion </ servlet-name >
< servlet-class > com.beanutil.ConversionServlet </ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name > conversion </ servlet-name >
< url-pattern > /conversion </ url-pattern >
</ servlet-mapping >
</ web-app >
转自:http://www.blogjava.net/wyz191/archive/2007/05/30/120937.html
发表评论
-
Java包导入机制的解析总结
2010-12-01 20:50 1195java中有两种包的导 ... -
提高JSP和SERVLET性能的七大绝招
2010-11-30 10:02 1166本文讲述了调整JSP和servlet的一些非常实用的方法,它可 ... -
使用future实现内置异步API
2010-11-16 15:52 1056当设计并发策略时,要将 "what做什么" ... -
asyn4j—java 异步方法调用框架
2010-11-16 15:36 2092asyn4j 是一个java异步方法调用框架,包括 ... -
关于 Java 性能监控您不知道的 5 件事,第 2 部分
2010-11-15 11:02 767全功能内置分析器,如 JConsole 和 VisualVM ... -
关于 Java 性能监控您不知道的 5 件事,第 1 部分
2010-11-15 10:13 802当应用程序性能受到损 ... -
jsp生成静态页(jsp+servlet+xml)
2010-11-08 17:38 1327package ningxia.bl.admin.conten ... -
深入Java核心 Java中多态的实现机制
2010-10-23 19:22 1218多态性是面向对 ... -
八个改善Java遗留系统的技巧
2010-10-16 10:04 818你没看错,就是这个题目:即使是Java系统也会变成“遗留”系统 ... -
IBM加入OpenJDK,和Oracle一道推动Java发展
2010-10-14 15:14 1661Oracle(新闻发布 )和IBM(新闻发布 )昨天联合宣 ... -
用 Slice 扩展 OpenJPA 应用程序
2010-10-11 09:43 1182简介 Slice 将 OpenJPA 扩展用 ... -
StAX API
2010-09-27 16:08 1256StAX API The StAX API expo ... -
常用 Java Profiling 工具的分析与比较
2010-09-26 17:10 1300简介: 在 Java 程序的 ... -
在Spring基础上实现自己的异常处理框架
2010-09-26 15:03 0应用项目大致的体系结 ... -
高效的Java异常处理框架(转)
2010-09-26 14:53 1545摘要:本文从Java异常最基本的概念、语法开始讲述了Jav ... -
关于 Java Scripting API 您不知道的 5 件事
2010-09-25 16:53 956现在,许多 Java 开发人员都喜欢在 Java 平台中使用脚 ... -
关于 Java Database Connectivity 您不知道的 5 件事
2010-09-25 15:32 802目前,许多开发人员把 ... -
综述:字符串到Java对象转换的工具库(转)
2010-09-20 21:41 1117原文:http://www.infoq.com/cn/news ...
相关推荐
本文实例讲述了动态JSP页生成静态HTML的方法。分享给大家供大家参考。具体如下: 具体实现: 利用Filter的过滤功能把*.jsp过滤出来,判断是否存在对应的.html文件,如果不存在对应的.html文件,则将其内容读出写入...
**JSP生成静态页面**是一种优化网站性能的技术,它通过将动态内容转化为静态HTML文件,减少服务器处理请求的负担,提高网页的加载速度。这种方式在高流量网站中尤其常见,因为静态页面可以被缓存,减少了数据库查询...
4. **自定义Tag Library(标签库):** 创建自定义标签来处理动态内容,并在其他地方用静态HTML替换。 5. **在后端逻辑中生成HTML:** 如果动态内容较少,可以在JSP的后台Java代码中直接生成HTML字符串,然后输出。...
然而,为了提高网站性能,降低服务器负载,并优化搜索引擎优化(SEO),经常需要将动态JSP页面转换为静态HTML页面。这个过程称为静态化,它能够使网页在客户端直接加载,而无需每次请求时都执行服务器端的Java代码。...
JSP动态生成HTML静态页面的核心思路是,当一个动态页面被首次访问或者内容更新时,服务器不直接返回JSP生成的HTML,而是先将其转换为一个静态HTML文件,然后将这个静态文件返回给客户端。后续的相同请求就直接返回这...
### jsp生成静态页面的方法 在Web开发领域中,动态页面技术如JSP(Java Server Pages)被广泛应用于构建复杂的网站应用。然而,在某些场景下,为了提高网站性能、减轻服务器压力或便于SEO优化,将动态生成的内容...
java/jsp生成静态页面html/htm
总结起来,"JSP文件生成静态页面"是一个旨在优化Web应用性能的技术,通过过滤器在请求处理阶段生成HTML并转发给客户端,降低了服务器处理动态请求的负担。这一技术需要对Java Web、Servlet过滤器以及HTML静态化有...
JSP 生成静态 HTML 页面的几种方法 JSP 技术广泛应用于 web 开发领域,其中一个重要的应用场景是生成静态 HTML 页面。静态 HTML 页面相比动态页面具有许多优点,例如加载速度快、搜索引擎友好、减少服务器负载等。...
JSP页面静态化就是将动态JSP页面转化为静态HTML的过程。当用户首次访问动态JSP页面时,服务器会生成对应的HTML页面并保存,后续的相同请求则直接返回该HTML,不再执行JSP的逻辑。这种方式可以显著提升网站性能,尤其...
### 让JSP编程HTML生成静态页面 #### 知识点概述 在现代Web开发中,将动态生成的内容转换为静态HTML页面有时是必要的。这不仅有助于提高网站性能(因为静态页面加载更快),还能增强SEO效果,使得搜索引擎更容易...
- **模板引擎和套格式模板**:如FreeMarker、Velocity等模板引擎,可以将动态数据和HTML模板结合,生成静态HTML文件。这种方式允许动态数据和静态页面结构分离,方便维护。 - **URLRewrite实现URL伪静态化**:...
总之,JSP生成静态页是一种有效的优化策略,尤其适用于那些内容相对固定但访问量大的网站。通过理解其工作原理和实现方法,开发者可以根据具体需求选择合适的静态化策略,以提升用户体验并优化服务器资源的利用。
本压缩包"动态Jsp页面转换成静态Html页面.zip"可能包含了一个工具或教程,用于帮助开发者将动态JSP页面转换为静态HTML页面,以提高网站性能、降低服务器负载或优化SEO。 首先,我们需要理解动态JSP页面的工作原理。...
JSP生成静态页面是提高网站性能的一种常见策略,因为它可以减少服务器处理的负担,加快用户加载速度。下面将详细解释JSP生成静态页面的概念、原理以及实现方法。 1. **静态页面与动态页面的区别** 静态页面是由纯...
把jsp、文件生成Html静态文件 内附有代码 不懂可以留言
**标题:“jsp生成静态页并分页”** 在Web开发中,JSP(JavaServer Pages)是一种常用的动态网页技术,允许开发者将HTML代码与Java代码混合编写,从而实现动态内容的生成。本话题主要探讨如何利用JSP技术来生成静态...
开发者可以设置一个定时任务,定期将常用或重要的JSP页面预先执行并生成静态HTML文件,然后替换原有的JSP文件。这样,用户首次访问时即可直接读取静态文件。 2. **请求时实时转换(On-Demand Transformation)** ...