jsp转换html的代码.docx
《jsp转换html的代码.docx》由会员分享,可在线阅读,更多相关《jsp转换html的代码.docx(17页珍藏版)》请在冰豆网上搜索。
jsp转换html的代码
packagecom.servlet;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassJspFilterimplementsFilter{
publicvoiddestroy(){
//TODO自动生成方法存根
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequesthreq=(HttpServletRequest)request;
HttpServletResponsehresp=(HttpServletResponse)response;
//Stringname=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);
}
publicvoidinit(FilterConfigarg0)throwsServletException{
//TODO自动生成方法存根
}
}
ConversionServlet.java
packagecom.servlet;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
import.HttpURLConnection;
import.URL;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassConversionServletextendsHttpServlet{
publicConversionServlet(){
super();
}
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();
//----获取请求的URL
StringreqTarget=request.getParameter("name");
//----指定对应JSP的HTML名称
Stringname=reqTarget.substring(reqTarget.lastIndexOf("/")+1,reqTarget.lastIndexOf("."));
//---判断是否存在对应的HTML文件
Filefile=newFile(request.getRealPath("/")+name+".html");
if(!
file.exists()){//--------如果不存在对应的HTML文件
try{
file.createNewFile();//--------创建HTML文件
//-------将JSP的内容写入对应的HTML文件内
InputStreamin;
StringBuffersb=newStringBuffer("");
//----注意这里,不能直接访问请求的URL,如果直接访问的话,会陷入死循环
URLurl=new.URL(reqTarget.toString()+"?
type=11");
HttpURLConnectionconnection=(HttpURLConnection)url
.openConnection();
connection.setRequestProperty("User-Agent","Mozilla/4.0");
connection.connect();
in=connection.getInputStream();
java.io.BufferedReaderbreader=newBufferedReader(
newInputStreamReader(in,"GBK"));
StringcurrentLine;
FileOutputStreamfos=newFileOutputStream(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(Exceptione){
e.printStackTrace();
}
}else{
//----------如果存在指定的HTML,直接跳转到指定的HTML页
response.sendRedirect(request.getContextPath()+"/"+name+".html");
}
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
web.xml
ChangeHtml
com.servlet.ChangeHtml
ChangeHtml
/changeHtml
jspfilter
com.servlet.JspFilter
jspfilter
*.jsp
conversion
com.servlet.ConversionServlet
conversion
/conversion
====================================
具体实现:
利用Filter的过滤功能把*.jsp过滤出来,判断是否存在对应的.html文件,如果不存在对应的.html文件,则将其内容读出写入指定的.html文件,再跳转到对应的.html即可。
如果存在对应的.html文件,则直接跳转到对应的.html即可。
代码:
JspFilter.java
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
import.HttpURLConnection;
import.URL;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassJspFilterimplementsFilter{
publicvoiddestroy(){
//TODO自动生成方法存根
}
publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
HttpServletRequesthreq=(HttpServletRequest)request;
HttpServletResponsehresp=(HttpServletResponse)response;
Stringname=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);
}
publicvoidinit(FilterConfigarg0)throwsServletException{
//TODO自动生成方法存根
}
}
ConversionServlet.java
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
import.HttpURLConnection;
import.URL;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassConversionServletextendsHttpServlet{
publicConversionServlet(){
super();
}
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();
//----获取请求的URL
StringreqTarget=request.getParameter("name");
//----指定对应JSP的HTML名称
Stringname=reqTarget.substring(reqTarget.lastIndexOf("/")+1,
reqTarget.lastIndexOf("."));
//---判断是否存在对应的HTML文件
Filefile=newFile(request.getRealPath("/")+name+".html");
if(!
file.exists()){//--------如果不存在对应的HTML文件
try{
file.createNewFile();//--------创建HTML文件
//-------将JSP的内容写入对应的HTML文件内
InputStreamin;
StringBuffersb=newStringBuffer("");
//----注意这里,不能直接访问请求的URL,如果直接访问的话,会陷入死循环
URLurl=new.URL(reqTarget.toString()+"?
type=11");
HttpURLConnectionconnection=(HttpURLConnection)url
.openConnection();
connection.setRequestProperty("User-Agent","Mozilla/4.0");
connection.connect();
in=connection.getInputStream();
java.io.BufferedReaderbreader=newBufferedReader(
newInputStreamReader(in,"GBK"));
StringcurrentLine;
FileOutputStreamfos=newFileOutputStream(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(Exceptione){
e.printStackTrace();
}
}else{
//----------如果存在指定的HTML,直接跳转到指定的HTML页
response.sendRedirect(request.getContextPath()+"/"+name+".html");
}
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
WEB.XML配置:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns="
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
jspfilter
com.beanutil.JspFilter
jspfilter
*.jsp
conversion
com.beanutil.ConversionServlet
conversion
/conversion