如何根据数据库字段动态的生成一个页面?

 我来答
毋楚洁7Z
2018-03-10 · TA获得超过1.1万个赞
知道小有建树答主
回答量:78
采纳率:100%
帮助的人:1.4万
展开全部

根据数据库字段动态的生成一个页面,利用Filter和定制Response,把服务器返回的JSP响应输出到我们自己的Response中,就可以将响应快速写入Html文件,然后再发送给客户。 

import java.io.*; 

import javax.servlet.*; 

import javax.servlet.http.*; 

import java.util.Calendar; 

public class CacheFilter implements Filter { 

ServletContext sc; 

FilterConfig fc; 

long cacheTimeout = Long.MAX_VALUE; 

public void doFilter(ServletRequest req, 

ServletResponse res, 

FilterChain chain) 

throws IOException, ServletException { 

HttpServletRequest request = 

(HttpServletRequest) req; 

HttpServletResponse response = 

(HttpServletResponse) res; 

// check if was a resource that shouldn't be cached. 

String r = sc.getRealPath(""); 

String path =  

fc.getInitParameter(request.getRequestURI()); 

if (path!= null && path.equals("nocache")) { 

chain.doFilter(request, response); 

return; 

path = r+path; 

String id = request.getRequestURI() +  

request.getQueryString(); 

File tempDir = (File)sc.getAttribute( 

"javax.servlet.context.tempdir"); 

// get possible cache 

String temp = tempDir.getAbsolutePath(); 

File file = new File(temp+id); 

// get current resource 

if (path == null) { 

path = sc.getRealPath(request.getRequestURI()); 

File current = new File(path); 

try { 

long now = 

Calendar.getInstance().getTimeInMillis(); 

//set timestamp check 

if (!file.exists() || (file.exists() && 

current.lastModified() > file.lastModified()) || 

cacheTimeout < now - file.lastModified()) { 

String name = file.getAbsolutePath(); 

name = 

name.substring(0,name.lastIndexOf("/")); 

new File(name).mkdirs(); 

ByteArrayOutputStream baos = 

new ByteArrayOutputStream(); 

CacheResponseWrapper wrappedResponse = 

new CacheResponseWrapper(response, baos); 

chain.doFilter(req, wrappedResponse); 

FileOutputStream fos = new FileOutputStream(file); 

fos.write(baos.toByteArray()); 

fos.flush(); 

fos.close(); 

} catch (ServletException e) { 

if (!file.exists()) { 

throw new ServletException(e); 

catch (IOException e) { 

if (!file.exists()) { 

throw e; 

FileInputStream fis = new FileInputStream(file); 

String mt = sc.getMimeType(request.getRequestURI()); 

response.setContentType(mt); 

ServletOutputStream sos = res.getOutputStream(); 

for (int i = fis.read(); i!= -1; i = fis.read()) { 

sos.write((byte)i); 

public void init(FilterConfig filterConfig) { 

this.fc = filterConfig; 

String ct = 

fc.getInitParameter("cacheTimeout"); 

if (ct != null) { 

cacheTimeout = 60*1000*Long.parseLong(ct); 

this.sc = filterConfig.getServletContext(); 

public void destroy() { 

this.sc = null; 

this.fc = null; 

}

笔墨得闲然9004
2018-02-01 · TA获得超过190万个赞
知道顶级答主
回答量:75.3万
采纳率:51%
帮助的人:3.9亿
展开全部
生成HTML原理
1:制作一个模版
<html>
<!--{id}--> //这是标签

</html>
PHP或JSP读取模版内容获取标签,把当前的标签替换成需要输出的数据库内容就可以了
前提是,需要获取<!--{ }-->之间的标签符号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式