
1,ajax
网页加载完毕以后使用ajax调用后台方法获取应该使用哪个网页,然后使用ifame显示网页(不知道js里面是否可以用inclde,你可以试试)
2,非ajax
比如你可以跳转到这个页面的时候request里面加一个参数,然后用<%
if()
%>
或者jstl都可以来判断了,然后可以用肯定可以用incude
利用Filter的过滤功能把*.jsp过滤出来,判断是否存在对应的.html文件,如果不存在对应的.html文件,则将其内容读出写入指定的.html文件,再跳转到对应的.html即可。如果存在对应的.html文件,则直接跳转到对应的.html即可。
代码:
JspFilter.java:
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.net.HttpURLConnection
import java.net.URL
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:
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配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>jspfilter</filter-name>
<filter-class>com.beanutil.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.beanutil.ConversionServlet </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>conversion</servlet-name>
<url-pattern>/conversion</url-pattern>
</servlet-mapping>
</web-app>
html是静态网页,不支持数据库,jsp是动态网页,支持数据库。
先新建一个jsp文件,然后将html中的代码替换jsp中的<html>。
然后jsp最顶端有这样一句代码
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
language="java"指的是语言是java
import="java.util.*" 指的是导入的包名,比如"import="java.util.*,,java.sql"
pageEncoding="ISO-8859-1 "指的是编码方式是ISO-8859-1,一般支持中文的是gb2312或者UTF-8
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)