当前位置: 代码迷 >> HTML/CSS >> jsp 变换 html
  详细解决方案

jsp 变换 html

热度:559   发布时间:2012-11-23 22:54:33.0
jsp 转换 html




package com.servlet;??

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 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??

package com.servlet;??

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??

?? <servlet>??
??? <servlet-name>ChangeHtml</servlet-name>??
??? <servlet-class>com.servlet.ChangeHtml</servlet-class>??
????? </servlet>??
<servlet-mapping>??
??? <servlet-name>ChangeHtml</servlet-name>??
??? <url-pattern>/changeHtml</url-pattern>??
</servlet-mapping>??
?? <filter>??
??? <filter-name>jspfilter</filter-name>??
??? <filter-class>com.servlet.JspFilter</filter-class>??
</filter>??
<filter-mapping>??
??? <filter-name>jspfilter</filter-name>??
??? <url-pattern>*.jsp</url-pattern>??
</filter-mapping>??
<servlet>??
??? <servlet-name>conversion</servlet-name>??
??? <servlet-class>com.servlet.ConversionServlet </servlet-class>??
</servlet>??
<servlet-mapping>??
??? <servlet-name>conversion</servlet-name>??
??? <url-pattern>/conversion</url-pattern>??
</servlet-mapping>
  相关解决方案