- 浏览: 646379 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (213)
- JAVA (53)
- Tomcat (14)
- EXTJS专栏 (2)
- 数据库 (23)
- JavaScript (13)
- jQuery (11)
- 需求分析 (2)
- css (1)
- 手机 (1)
- php (7)
- 生活 (1)
- ssh (11)
- JFReeChart (2)
- Delphi (1)
- junit (0)
- liunx (10)
- 项目管理 (11)
- 文件下载 (1)
- Eclipse (2)
- jsp (2)
- 外挂、游戏 (1)
- 面试题 (8)
- 性能测试 (2)
- apache (1)
- MyBatis (1)
- Webservice (2)
- ant (1)
- IDEA (2)
- log4j (1)
- 小程序 (1)
最新评论
-
hll127:
请问service这个方法里为什么要while(true)啊? ...
jsp页面静态化例子 -
tarena1:
Spring 源码解读 推荐流程 -
konglx:
springaop_springmvc 写道可以参考最新的文档 ...
Web项目添加Maven支持步骤 -
springaop_springmvc:
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...
Web项目添加Maven支持步骤 -
9976:
很好,谢谢
Spring 源码解读 推荐流程
package com.htmlstatic; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; public class ToHtml extends HttpServlet { private static final String CONTENT_TYPE = "text/html; charset=GBK"; //$NON-NLS-1$ private static ServletContext sc = null; private HttpServletRequest request = null; private HttpServletResponse response = null; private static String staticHtmlRefreshTime = "1";//刷新间隔时间 private static String path = "D:\\tomcat5.5\\webapps\\diesel_gdc";//文件生成路径 private static String url = "/index.jsp";//需要静态化的页面 // Initialize global variables public void init() throws ServletException { } // Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); service(request, response); } // Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void destroy() { } public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); long SPACING = 0; if (staticHtmlRefreshTime == null) { SPACING = 1000 * 60 * 10; } else { SPACING = 1000 * 60 * Long.parseLong(staticHtmlRefreshTime); } sc = getServletContext(); this.request = request; this.response = response; String[] urls = url.split(","); List names = new ArrayList(); for (int i = 0; i < urls.length; i++) { String tmp = urls[i].replaceAll(".jsp", ".html"); names.add(tmp); } while (true) { System.err.println("静态化开始"); myService(urls, names); System.err.println("静态化结束"); try { Thread.currentThread().sleep(SPACING); } catch (Exception e) { e.printStackTrace(); } } } public synchronized void myService(String[] urls, List names) { String name = ""; for (int i = 0; i < urls.length; i++) { FileOutputStream fos = null; try { name = path + names.get(i).toString().replaceAll(".html", ".html"); RequestDispatcher rd = sc.getRequestDispatcher("/" + urls[i]); final ByteArrayOutputStream os = new ByteArrayOutputStream(); final ServletOutputStream stream = new ServletOutputStream() { public void write(byte[] data, int offset, int length) { os.write(data, offset, length); } public void write(int b) throws IOException { os.write(b); } }; final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os)); HttpServletResponse rep = new HttpServletResponseWrapper(response) { public ServletOutputStream getOutputStream() { return stream; } public PrintWriter getWriter() { return pw; } }; rd.include(request, rep); pw.flush(); System.out.println("name=="+name); fos = new FileOutputStream(name); // 把jsp输出的内容写到xxx.htm os.writeTo(fos); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { fos.close(); } catch (Exception e) { } } } } private void writeFile(String fileName, String content) { OutputStreamWriter writer = null; try { File f = new File(path + "\\" + fileName); if (!f.exists()) { f.createNewFile(); } writer = new OutputStreamWriter(new FileOutputStream(f), "GBK"); writer.write(content); writer.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } } }
web.xml配置:
<servlet> <servlet-name>tohtml</servlet-name> <servlet-class>com.htmlstatic.ToHtml</servlet-class> </servlet> <servlet-mapping> <servlet-name>tohtml</servlet-name> <url-pattern>*.tohtml</url-pattern> </servlet-mapping>
评论
3 楼
hll127
2016-07-15
请问service这个方法里为什么要while(true)啊?
2 楼
wsliupan
2014-07-01
例子中有中文乱码,请在
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
改成final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os ,"UTF-16"));
就不会乱码了
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
改成final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os ,"UTF-16"));
就不会乱码了
1 楼
橄榄绿
2010-06-22
你好。受教了!我也写了一个。但是不知道为什么发到网上生成的时候就显示乱码,在本机里测试没问题。有时间能帮我看看吗?
发表评论
-
tomcat7下对HTTPS的部署配置
2018-11-09 15:33 7491、申请CA证书,可以在腾讯云或者阿里云申请到免费的CA ... -
IDEA切换 svn 问题
2017-11-27 09:21 4910今天项目,本来以为就几分钟的事没想到,还出现报错了,错误日记 ... -
log4j cfx 接口请求、返回信息 日志文件分离
2017-06-28 15:04 2101log4j.rootLogger=info,stdout, ... -
junit 启动报错:java.lang.NoClassDefFoundError
2013-04-17 19:31 1603junit 启动报错:java.lang.NoClassDe ... -
Java中抽象类和接口的区别
2013-04-16 12:12 989小结 1.abstract class 在 Java ... -
web.xml中servlet, bean, filter, listenr 加载顺序汇总
2013-03-28 16:17 1512web.xml中servlet, bean, filter, ... -
深入Java虚拟机JVM类加载初始化学习笔记
2013-03-26 20:39 12061. Classloader的作用,概括来说就是将编译后的c ... -
http代理出错Proxy Error
2013-03-22 09:15 1609最近项目突然访问几下次报: Proxy Error ... -
通过javamelody监控web应用的性能指标
2013-03-04 12:00 17381、问题背景 为了提升应用的性能我们可能需要做很多分析和 ... -
javamelody监控
2013-03-04 11:50 1481. 将 javamelody-1.42.0.war 文件部署 ... -
myeclipse安装svn插件的肯定可行的方法
2012-12-18 21:26 9191、下载最新的SVN包:http://subclipse.ti ... -
WordTemplate 使用
2012-03-27 11:28 1195http://wiki.softartisans.com/di ... -
asyn4j 异步方法调用框架
2012-03-14 14:19 1923例子: 1.调用普通方法 主方法 ... -
asyn4j -- 异步方法调用框架
2012-03-14 14:15 01.3更新 优化代码 新增任务持久与恢复功能 ... -
JasperReport
2011-09-01 13:45 1241“在JRE 5以上的java环境中,java会自动加载$JAV ... -
解决Linux操作系统下AES解密失败的问题
2011-03-11 16:00 6994现象描述: windows上加解密正常,linu ... -
使用set+list进行过滤重复并排序
2011-02-28 11:30 1796有时要把有重复的数据用set去掉重复元素,但用set后又把元素 ... -
ssh 事务
2011-01-12 23:03 1149ssh在做事务提交时,不能直接用Sql语句进行insert i ... -
struts2与 json
2011-01-10 09:17 1199需要注意的是,如果用JSON插件把返回结果定为JSON。而JS ... -
struts2返回json数据问题
2011-01-06 20:58 1269最近同事反映struts2返回数据不了json数据,特意测试了 ...
相关推荐
实现JSP页面静态化的一种常见方法是利用JSP内置对象`out`,它是`JspWriter`的实例,用于将数据回写到客户端。我们可以通过创建自定义类,继承`JspWriter`并重写其输出方法,将数据写入到服务器上的一个本地文件,而...
在"我们公司项目中页面静态化例子"这个场景中,采用了过滤器(Filter)技术来实现这一目标。过滤器是Java Servlet技术的一部分,它可以在请求到达目标资源之前或之后对请求和响应进行拦截处理。在页面静态化的过程中...
页面静态化是一种优化网站性能的技术,它通过将动态生成的网页转换为静态HTML文件来减少服务器负担和提高...在“StaticTest”这个例子中,我们可以深入研究其代码和实现方式,以了解如何在自己的项目中实现页面静态化。
总结来说,这个例子展示了如何结合Struts1.2和Freemarker2.3.8实现登录成功页面的静态化,通过静态化可以提高网站性能,减轻服务器负担,提升用户体验。在实际开发中,开发者可以根据项目需求灵活运用这些技术和策略...
- 在JSP页面中,我们需要确保URLRewriteFilter在处理请求时被调用。这通常在web.xml中完成,通过添加一个Servlet过滤器配置: ```xml <filter-name>UrlRewriteFilter <filter-class>org.tuckey.web.filters....
jsp生成静态页面 生成静态页面 完全可以运行的例子!!!!
在上述描述中,我们看到一个具体实现动态页面静态化的例子,主要涉及以下几点: 1. **静态页面模板**: 创建了一个名为`HtmlTemp.htm`的HTML模板页面,其中包含一些占位符,如`{Title}`、`{AddUserName}`、`{...
JSP到HTML的转换过程,通常称为“页面静态化”,能够提高网站的性能和用户体验。 在JSP中,可以通过几种方式实现静态页的生成: 1. **使用JSP的`<jsp:include>`标签:** 这个标签可以包含一个静态的HTML文件,这样...
在实现这个功能时,开发者首先需要在服务器端创建一个JSP页面,该页面将负责获取图片资源并传递给客户端。这些图片通常存储在一个特定的目录,例如"Webimagscroll",这可能就是压缩包中包含的图片文件夹。在JSP中,...
这种方法的优点在于,原有的JSP页面无需改动,只需通过URL调用这个Servlet,动态页面就会被转换为静态页面。例如,访问`http://localhost/test/toHtml?file_name=index`,将会生成一个名为`index.htm`的静态页面。 ...
本教程将通过几个简单的例子,介绍如何在静态页面和服务器端渲染页面中应用 Element UI。 1. **Element UI 组件介绍** - **Table**:Element UI 的表格组件提供了丰富的功能,包括数据加载、排序、筛选、多选等,...
在服务阶段,每次请求都会创建一个新的JSP页面实例。 8. **JSP指令**:如`page`、`include`和`taglib`指令,分别用于配置页面属性、动态包含页面和引入自定义标签库。 9. **JSP动作标签**:比如`jsp:include`、`...
在这个“jsp图片特效处理例子”中,我们将探讨如何利用JSP来实现图片的各种特效处理,如图片的上传、显示、缩放、旋转以及滤镜效果等。以下是一些相关的知识点: 1. **JSP基本语法**:JSP由静态HTML和动态Java代码...
该方法负责将传入的日期按照指定的格式进行格式化,并将结果输出到JSP页面中。 ##### 3. 在JSP页面中使用自定义标签 最后,在JSP页面中使用定义好的标签: ```jsp <title>Format Date Example ${today}" ...
以下是一个简单的JSP页面音乐播放的例子: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <title>JSP音乐播放示例 ${pageContext.request.contextPath}/music.mp3" type="audio/mpeg"> ...
4. **编写JSP页面**:JSP页面主要包含三类元素:脚本元素(Scripting Elements)、指令元素(Directives)和动作元素(Actions)。例如,`<% %>`用于插入Java代码,`<jsp:action>`用于执行JavaServer Pages动作。 5...
**JSP页面与JSP标记**是Web开发中的核心概念,它们构成了动态网页的基础。本章将深入探讨JSP语法,包括HTML语法、JSP页面结构、变量与方法的声明,以及Java程序片、Java表达式、JSP指令和动作标记的使用。 ### 2.1 ...
一个简单的JSP页面通常包含以下部分: ```jsp ; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> 我的第一个JSP页面 欢迎来到JSP世界! 这里可以写Java代码 out.println("当前时间是: " + new Date...
在这个例子中,可能通过反射实现了类似的功能,即通过控制器(Servlet)处理请求,调用模型(业务逻辑),然后更新视图(JSP页面)。这种架构有助于分离关注点,提高代码的可维护性和测试性。 5. **其他文件**:`...
5. **SEO优化**:静态化的URL对于SEO非常重要,因为搜索引擎更容易理解和索引具有明确意义的URL。通过`urlrewrite`,你可以创建友好的URL,比如`/category/product-name.html`,而不是`/product?id=123`,从而提高...