jsp页面的静态化处理方法一

xiaoxiao2026-06-11  9

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>

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-5049969.html

最新回复(0)