- 浏览: 74136 次
- 性别:
- 来自: 大连
最新评论
-
Heart.X.Raid:
//非递归后序遍历二叉树
void aftorder_t ...
树的遍历 -
zhangjunji111:
airlink 写道建议你再加个0来循环。
我的测试结果是10 ...
Spring的获取Bean的性能测试。 -
airlink:
建议你再加个0来循环。我的测试结果是10倍以上的差距。spri ...
Spring的获取Bean的性能测试。 -
rmn190:
结果中哪一个是C++的,哪一个Java的呢? 楼主最好用一个t ...
简单的c++排序跟java的性能比较。仅仅学习。 -
moshalanye:
每个对象都有一个隐含锁静态对象属于Class对象,非晶态对象属 ...
Java里面的同步跟oracle的锁的联想
jsp:
index.jsp 首页,显示产品信息查询的连接。
product.jsp 显示产品列表。
detail.jsp 显示每个产品的详细信息。
java
Product .java 构造model数据,用户页面显示。
ProductDao.java 也是为了构造数据。直接用个列表生成数据
EncodingFilter.java 为了显示中文。
ToHtml.java 一个Servlet主要是为了根据link里面的file_name 参数生成html文件的。参考下面的连接。
http://blog.csdn.net/zoucui/archive/2009/03/26/4027378.aspx
JspToHtmlFilter.java 对请求的Jsp做过滤,如果是在配置的范围内,就直接转向静态文件(前提,静态文件存在)
HtmlUtil.java 用户配置哪些jsp页面需要转换成html。用Servlet的ServletPath匹配。
CallHtml.java 用户客户端请求配置好的jsp连接,让服务端的servlet去执行文件的转换。
index.jsp文件如下:
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page pageEncoding="gb2312"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head/>
<body>
<br>
<a href="<%=request.getContextPath()%>/product.jsp">产看产品信息</a>
</body>
<html>
product.jsp :
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page pageEncoding="gb2312"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%@page import="com.liuxt.jsphtml.util.*" %>
<%request.setAttribute("productList",ProductDao.getInstance().getProductList()); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head/>
<body>
<br>产品信息如下:
<table border="1">
<th>产品ID</th><th>产品名称</th>
<c:forEach items="${productList}" var="product">
<tr>
<td><a href="<%=request.getContextPath()%>/detail.jsp?id=<c:out value='${product.id}'/>"><c:out value="${product.id}" /></a></td>
<td><c:out value="${product.name}" /></td>
</tr>
</c:forEach>
</table>
</body>
<html>
detail.jsp
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@ page pageEncoding="gb2312"%>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<%@page import="com.liuxt.jsphtml.util.*" %>
<%
String productId=request.getParameter("id");
Product p=ProductDao.getInstance().getProduct(productId);
request.setAttribute("product",p);
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<head/>
<body>
<br>产品信息如下:
<br>产品ID
<br><c:out value="${product.id}"/>
<br>产品名称
<br><c:out value="${product.name}"/>
<br>产品描叙
<br><c:out value="${product.describe}"/>
<br>产品价格
<br><c:out value="${product.price}"/>
</body>
<html>
Product.java
package com.liuxt.jsphtml.util;
public class Product {
String id;
String name;
String describe;
String price;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Product(String id, String name) {
super();
this.id = id;
this.name = name;
}
public Product() {
}
public String getDescribe() {
return describe;
}
public void setDescribe(String describe) {
this.describe = describe;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
ProductDao.java
package com.liuxt.jsphtml.util;
import java.util.ArrayList;
import java.util.List;
public class ProductDao {
private static List productList=new ArrayList();
private static ProductDao productDao=new ProductDao();
@SuppressWarnings("unchecked")
private ProductDao(){
Product product1=new Product();
product1.setId("T01");
product1.setName("草莓");
product1.setDescribe("好吃有好看");
product1.setPrice("5.00");
Product product2=new Product();
product2.setId("T02");
product2.setName("芒果");
product2.setDescribe("新鲜的,刚从福建运过来的");
product2.setPrice("4.00");
Product product3=new Product();
product3.setId("T03");
product3.setName("大樱桃");
product3.setDescribe("绝对的,吃了还想买的。好品牌的,大红灯。");
product3.setPrice("15.00");
productList.add(product1);
productList.add(product2);
productList.add(product3);
}
public static ProductDao getInstance(){
return productDao;
}
@SuppressWarnings("unchecked")
public List getProductList(){
return productList;
}
public Product getProduct(String id){
Product p=null;
for(int i=0;i<productList.size();i++){
p=(Product) productList.get(i);
if(p!=null){
if (p.getId().equals(id)){
return p;
}
}
}
return null;
}
}
EncodingFilter.java
package com.liuxt.jsphtml.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
private FilterConfig filterConfig;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("gb2312");
chain.doFilter(request, response);
}
public void destroy() {
}
}
HtmlUtil.java
package com.liuxt.jsphtml.util;
import java.util.HashSet;
import java.util.Set;
public class HtmlUtil {
public static final Set<String> urlSet=new HashSet<String>();
static{
urlSet.add("/product.jsp");
urlSet.add("/index.jsp");
urlSet.add("/test/index.jsp");
}
}
JspToHtmlFilter.java
package com.liuxt.jsphtml.util;
import java.io.File;
import java.io.IOException;
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 JspToHtmlFilter implements Filter {
private FilterConfig filterConfig;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//前台发送的请求,过滤处理
HttpServletRequest res=(HttpServletRequest)request;
String jspURL=res.getServletPath();
System.out.println("jspURL========"+jspURL);
if (HtmlUtil.urlSet.contains(jspURL)) {
String realpath = filterConfig.getServletContext().getRealPath("/");
String file_name=jspURL;
file_name=file_name.replace("/","_");
file_name=file_name.replace(".","_");
String fileName = realpath + "staticPages/" + file_name + ".html";
System.out.println("fileName in filter=="+fileName);
File file = new File(fileName);
// 判断文件是否存在
if (file.exists()) {// 不存在 生成
// 文件存在,直接转发
// 转向到该html页面
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.sendRedirect("staticPages/" + file_name+".html");
return;
}
}
//参数为空,继续chain中的其它filter.
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
//加入初始化的连接,将一些定义好的连接,需要转化为html的,放入集合中。
}
}
CallHtml.java
package com.liuxt.jsphtml.util;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Iterator;
public class CallHtml {
public static void main(String[] args) {
CallHtml callHtml=new CallHtml();
callHtml.makeHtml();
}
private void makeHtml() {
Iterator iter=HtmlUtil.urlSet.iterator();
while(iter.hasNext()){
String path=(String)iter.next();
callOnePage(path);
}
}
public void callOnePage(String fileName) {
try {
String str = "http://localhost:8080/htmlweb/toHtml?file_name=" + fileName;
System.out.println("link========="+str);
int httpResult;
URL url = new URL(str);
URLConnection connection = url.openConnection();
connection.connect();
HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
httpResult = httpURLConnection.getResponseCode();
if (httpResult != HttpURLConnection.HTTP_OK) {
System.out.println("没有连接成功");
} else {
System.out.println("连接成功了 ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>htmlweb</display-name>
<servlet>
<description></description>
<display-name>toHtml</display-name>
<servlet-name>toHtml</servlet-name>
<servlet-class> com.liuxt.jsphtml.util.ToHtml</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>toHtml</servlet-name>
<url-pattern>/toHtml</url-pattern>
</servlet-mapping>
<filter>
<filter-name>JspToHtmlFilter</filter-name>
<filter-class>
com.liuxt.jsphtml.util.JspToHtmlFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>JspToHtmlFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>
com.liuxt.jsphtml.util.EncodingFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
- htmlweb.war (737.4 KB)
- 下载次数: 142
发表评论
-
Java里面的同步跟oracle的锁的联想
2009-07-16 08:21 1154暂时不讨论。不明白 -
想做一个JMSServer,实现10000/s可以吗?
2009-07-02 17:51 1016本贴已经删除,有很多东西需要学习。谢谢大大家给予的建议和批评啊 ... -
Spring的事务管理例子代码
2009-06-27 10:29 3430事务管理: 分global事务管理和local事务管理, ... -
Java String中的hashCode函数
2009-06-27 09:43 4258String 类中的hash函数如下: public ... -
java中HashCode的作用和Map的实现结构
2009-06-25 22:50 3888Map 是一种数据结构,用来实现key和value 的映射。通 ... -
使用Spring后会带来什么好处
2009-06-23 16:20 9261 为你的项目增加一个管家,你不必写很多的代码去实现一些框架已 ... -
jboss EJB
2009-06-15 14:39 804暂时不讨论。不明白 -
简单的归并排序算法例子
2009-06-14 21:36 1054import java.util.ArrayList;impo ... -
Jboss消息中间件跟IBM MQ的比较
2009-06-12 21:28 1598简单说几点. 1 jboss消息以java编写,嵌入到jbo ... -
Jboss message point to point
2009-06-12 21:17 881下面的例子程序是从Jbos ... -
Jboss SubscriberClient 主动式接受消息
2009-06-11 21:35 690下载jboss后面,按照默认启动就可以。 packag ... -
http报文
2009-06-11 21:09 2549HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII ... -
面向对象的三个特征
2009-06-11 20:52 774面向对象的三个基本特征是:封装、继承、多态。 Th ... -
java的同样排序函数的执行效率
2009-06-11 20:50 1290package com.liuxt.sort; import ... -
apache ab 性能测试
2009-06-10 20:22 1469测试结果的说明:参考文章:http://www.phpchin ... -
java虚拟机规范 3.5 运行期数据区
2009-06-10 14:35 922http://java.sun.com/docs/books/ ... -
java SQL注入分析程序
2009-06-09 22:11 1953DROP TABLE IF EXISTS `user`;CRE ... -
java virtural machine data type
2009-06-08 16:35 669data ... -
parse xml file with dom and sax .
2009-06-07 13:47 891基于dom方式的dom4j和jdom以及JDK提供的dom方式 ... -
memcached 的linux配置
2009-06-03 22:45 680详细参选下面的连接: http://www.ccvita.co ...
相关推荐
1. **JSP页面静态化原理**: - JSP页面静态化的核心思想是将原本需要服务器实时解析的动态内容,提前转换为静态HTML文件,存储在服务器上。这样,当用户请求这些页面时,服务器不再需要执行JSP脚本,而是直接返回...
实现JSP页面静态化的一种常见方法是利用JSP内置对象`out`,它是`JspWriter`的实例,用于将数据回写到客户端。我们可以通过创建自定义类,继承`JspWriter`并重写其输出方法,将数据写入到服务器上的一个本地文件,而...
**JSP页面静态化技术详解** 在Web开发中,JavaServer Pages(JSP)是一种常见的动态网页技术,它允许开发者将HTML代码与Java代码混合编写,以实现动态内容的生成。然而,在高流量的网站中,为了提高性能和降低...
以下是JSP页面静态化最常用的三种方法的详细解释: 1. 模板替换法 这种方法是通过读取一个静态模板文件(如`template.htm`),然后使用Java代码动态替换其中的占位符,最终生成HTML文件。例如,`buildhtml.jsp`中的...
在Web开发领域,动态JSP页面静态化是一种常见的优化策略,其主要目的是提高网站的性能和用户体验。这一过程涉及到将原本由服务器动态生成的JSP页面转换为纯HTML页面,从而减少服务器处理请求的压力,加快页面加载...
页面静态化处理是一种提高网站性能和用户体验的技术,它将动态生成的网页转换为静态HTML文件,用户请求时直接返回这些预先生成的文件,而非每次都执行数据库查询和其他服务器端逻辑。这种方式降低了服务器负担,加快...
为了提高效率和用户体验,人们提出了页面静态化和伪静态化技术。 **页面静态化**是指将动态生成的HTML页面保存为静态文件,之后的用户请求不再通过服务器动态生成,而是直接读取这些静态文件,从而减轻服务器负担,...
页面静态化是一个系统工程,涉及多个环节,包括技术实现、URL管理、缓存策略等。这个实例提供了一个基础的实践,对于理解和应用页面静态化原理非常有价值。在实际项目中,可以根据具体需求和场景进行调整和扩展,...
- **Apache Tiles**:Tiles是一个JSP框架,支持布局管理和页面静态化。通过定义模板和视图,可以方便地生成静态页面。 - **Spring MVC的PageCache**:Spring MVC提供了PageCache注解,可以标记某个Controller方法的...
Java页面静态化是一种提高Web应用性能的技术,它通过将动态生成的HTML页面转换为静态HTML文件,从而减少了服务器处理请求的负担,加快了用户访问速度。这种技术在高并发、大数据量的网站中尤其重要,因为它能显著...
Java页面静态化是一种提高网站性能的技术,它将动态生成的网页转换为静态HTML文件,以减少服务器处理和数据库查询的时间,提升用户体验。这种技术在高访问量、数据更新不频繁的网站中尤其适用。 首先,我们需要理解...
1. 请求处理:用户请求一个动态JSP页面,服务器上的Servlet捕获该请求。 2. 页面解析:Servlet读取JSP文件,解析并执行其中的Java代码,生成HTML字符串。 3. 文件保存:Servlet将生成的HTML字符串写入到一个新的HTML...
页面静态化是Web开发中的一个重要概念,主要目的是提高网站的访问速度和搜索引擎优化(SEO)。在Java Web开发中,页面静态化通常涉及到将动态生成的HTML页面转化为纯HTML文件,以便用户请求时无需通过服务器执行复杂...
3. **自动化工具**:通过一些自动静态化工具,如SiteMesh、JSP2HTML等,可以实现JSP页面的自动化静态化。 4. **CDN服务**:结合内容分发网络(CDN),在边缘节点缓存静态HTML,进一步提升用户体验。 **四、JSP静态...
2. 编写JSP页面:编写你需要静态化的JSP页面,确保其功能正常。 3. 实现静态化逻辑:在Servlet或Filter中,当接收到请求时,判断是否需要生成静态页面。如果需要,可以使用JSP的`javax.servlet.jsp.JspWriter`对象...
动态页面静态化是一种提高网站性能和搜索引擎友好度的技术手段,主要通过将原本由服务器动态生成的HTML页面转换为预先生成的静态HTML文件。这样,用户请求时,服务器无需执行数据库查询和其他复杂操作,而是直接返回...
在"我们公司项目中页面静态化例子"这个场景中,采用了过滤器(Filter)技术来实现这一目标。过滤器是Java Servlet技术的一部分,它可以在请求到达目标资源之前或之后对请求和响应进行拦截处理。在页面静态化的过程中...
本教程将介绍如何在Java Web项目中利用FreeMarker进行JSP页面的静态化,适合初学者入门学习。 1. **FreeMarker基本概念** FreeMarker是一个基于模板的语言,它与编程语言不同,不包含任何控制结构或函数调用。它的...