静态页面的html用request,网站HTML静态化解决方案

最近在做一个项目,其中一部分的访问频率较高但内容变动较小。所以使用网站HTML静态化方案来优化访问速度

当一个Servlet资源请求到达WEB服务器之后我们会填充指定的JSP页面来响应请求:

HTTP请求---Web服务器---Servlet--业务逻辑处理--访问数据--填充JSP--响应请求

HTML静态化之后:

HTTP请求---Web服务器---Servlet--HTML--响应请求

嘿嘿,是不是很爽?省去了业务逻辑处理和数据抓取直接响应。

Servlet:

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

if(request.getParameter("chapterId") !=null){

String chapterFileName ="bookChapterRead_"+request.getParameter("chapterId")+".html";

String chapterFilePath = getServletContext().getRealPath("/") + chapterFileName;

File chapterFile =newFile(chapterFilePath);

if(chapterFile.exists()){response.sendRedirect(chapterFileName);return;}//如果有这个文件就告诉浏览器转向

INovelChapterBiz novelChapterBiz =newNovelChapterBizImpl();

NovelChapter novelChapter = novelChapterBiz.searchNovelChapterById(Integer.parseInt(request.getParameter("chapterId")));//章节信息

intlastPageId = novelChapterBiz.searchLastCHapterId(novelChapter.getNovelId().getId(), novelChapter.getId());

intnextPageId = novelChapterBiz.searchNextChapterId(novelChapter.getNovelId().getId(), novelChapter.getId());

request.setAttribute("novelChapter", novelChapter);

request.setAttribute("lastPageId", lastPageId);

request.setAttribute("nextPageId", nextPageId);

newCreateStaticHTMLPage().createStaticHTMLPage(request, response, getServletContext(),

chapterFileName, chapterFilePath,"/bookRead.jsp");

}

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

if(request.getParameter("chapterId") != null){

String chapterFileName = "bookChapterRead_"+request.getParameter("chapterId")+".html";

String chapterFilePath = getServletContext().getRealPath("/") + chapterFileName;

File chapterFile = new File(chapterFilePath);

if(chapterFile.exists()){response.sendRedirect(chapterFileName);return;}//如果有这个文件就告诉浏览器转向

INovelChapterBiz novelChapterBiz = new NovelChapterBizImpl();

NovelChapter novelChapter = novelChapterBiz.searchNovelChapterById(Integer.parseInt(request.getParameter("chapterId")));//章节信息

int lastPageId = novelChapterBiz.searchLastCHapterId(novelChapter.getNovelId().getId(), novelChapter.getId());

int nextPageId = novelChapterBiz.searchNextChapterId(novelChapter.getNovelId().getId(), novelChapter.getId());

request.setAttribute("novelChapter", novelChapter);

request.setAttribute("lastPageId", lastPageId);

request.setAttribute("nextPageId", nextPageId);

new CreateStaticHTMLPage().createStaticHTMLPage(request, response, getServletContext(),

chapterFileName, chapterFilePath, "/bookRead.jsp");

}

}

生成HTML静态页面的类:

packagecom.jb.y2t034.thefifth.web.servlet;

importjava.io.ByteArrayOutputStream;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.OutputStreamWriter;

importjava.io.PrintWriter;

importjavax.servlet.RequestDispatcher;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.ServletOutputStream;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpServletResponseWrapper;

/**

* 创建HTML静态页面

* 功能:创建HTML静态页面

* 时间:2009年1011日

* 地点:home

* @author mavk

*

*/

publicclassCreateStaticHTMLPage {

/**

* 生成静态HTML页面的方法

* @param request 请求对象

* @param response 响应对象

* @param servletContext Servlet上下文

* @param fileName 文件名称

* @param fileFullPath 文件完整路径

* @param jspPath 需要生成静态文件的JSP路径(相对即可)

* @throws IOException

* @throws ServletException

*/

publicvoidcreateStaticHTMLPage(HttpServletRequest request, HttpServletResponse response,ServletContext servletContext,String fileName,String fileFullPath,String jspPath)throwsServletException, IOException{

response.setContentType("text/html;charset=gb2312");//设置HTML结果流编码(即HTML文件编码)

RequestDispatcher rd = servletContext.getRequestDispatcher(jspPath);//得到JSP资源

finalByteArrayOutputStream byteArrayOutputStream =newByteArrayOutputStream();//用于从ServletOutputStream中接收资源

finalServletOutputStream servletOuputStream =newServletOutputStream(){//用于从HttpServletResponse中接收资源

publicvoidwrite(byte[] b,intoff,intlen){

byteArrayOutputStream.write(b, off, len);

}

publicvoidwrite(intb){

byteArrayOutputStream.write(b);

}

};

finalPrintWriter printWriter =newPrintWriter(newOutputStreamWriter(byteArrayOutputStream));//把转换字节流转换成字符流

HttpServletResponse httpServletResponse =newHttpServletResponseWrapper(response){//用于从response获取结果流资源(重写了两个方法)

publicServletOutputStream getOutputStream(){

returnservletOuputStream;

}

publicPrintWriter getWriter(){

returnprintWriter;

}

};

rd.include(request, httpServletResponse);//发送结果流

printWriter.flush();//刷新缓冲区,把缓冲区的数据输出

FileOutputStream fileOutputStream =newFileOutputStream(fileFullPath);

byteArrayOutputStream.writeTo(fileOutputStream);//把byteArrayOuputStream中的资源全部写入到fileOuputStream中

fileOutputStream.close();//关闭输出流,并释放相关资源

response.sendRedirect(fileName);//发送指定文件流到客户端

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 购物网站静态HTML页面是一个网站的初始版本,它是由纯静态HTML文件构成的。HTML文件中包含了网站的布局、内容和样式,但没有任何交互功能。下面是一个300字的详细回答。 购物网站静态HTML页面是指使用纯静态HTML文件构建的网站页面静态HTML页面不包含任何动态元素,无法进行用户交互和数据处理。然而,静态页面在构建和发布方面具有一些优点。 首先,静态HTML页面构建简单,无需后端服务器和数据库的支持。只需要编写HTML、CSS和JavaScript代码,再将文件上传到服务器即可。这简网站开发和部署的流程,节省了时间和资源。 其次,静态HTML页面具有较快的加载速度。由于纯静态HTML文件不需要与服务器进行数据交互,所以用户在打开页面时能够立即看到内容。这提供了更好的用户体验,减少了用户的等待时间。 第三,静态HTML页面易于维护。由于静态页面不包含复杂的后端逻辑,开发者可以更轻松地修改和更新页面内容。只需要编辑HTML和CSS文件,再上传到服务器即可。相比之下,动态网站需要后端开发人员进行数据处理和服务器维护,维护成本较高。 然而,静态HTML页面也存在一些限制。由于没有服务器端的支持,无法进行用户注册、登录、购物车和支付等交互操作。也无法动态地从数据库中获取最新的商品信息和价格。 为了解决这些问题,购物网站需要引入后端技术,例如使用服务器端脚本语言(PHP、Java、Python等)和数据库(MySQL、MongoDB等)来实现动态交互和数据处理。这样,网站就可以支持用户的注册、登录、购物车、订单管理等功能。 综上所述,购物网站静态HTML页面是一个较简单、快速和易于维护的网站版本。然而,为了实现更丰富的功能和更好的用户体验,购物网站还需要引入后端技术和数据库。 ### 回答2: 购物网站静态HTML页面是指在网站开发过程中,将网页元素和内容固定在HTML文件中不进行动态更新的页面。这种页面适合展示静态的信息,如商品列表、商品详情、购物车等。 购物网站静态HTML页面通常包含以下几个模块: 1. 导航栏:显示网站的logo、各个商品分类和搜索框等,方便用户浏览和搜索商品。 2. 幻灯片广告:通过图片和文字介绍推荐商品,吸引用户的眼球。 3. 商品列表:按照分类展示商品的小图片和基本信息,用户可以通过点击商品进入商品详情页面。 4. 商品详情:展示商品的详细信息,包括图片、价格、规格、描述等。 5. 购物车:显示用户已选购商品的列表和总价,方便用户管理购物车。 6. 用户登录/注册:提供用户登录和注册功能,方便用户进行购物操作。 7. 促销信息:展示网站的促销活动、折扣信息等,吸引用户购买。 购物网站静态HTML页面相对简单,但也具备一定的交互功能,如用户可以点击商品链接进入商品详情页,点击购物车按钮添加商品到购物车等。但这些操作都是基于静态页面的显示,并不能实现动态更新。 总之,购物网站静态HTML页面通过展示商品信息和提供基本的交互功能,为用户提供了浏览和购物的基础功能,但无法实现动态的用户个性推荐、实时库存更新等高级功能。 ### 回答3: 购物网站静态HTML页面是指没有动态交互功能的页面,它仅展示了网站静态内容。购物网站的首页一般会有网站的Logo,导航栏,搜索框等基本元素,以及推荐的热门商品、促销活动等。商品列表页面会展示多个商品的缩略图、名称、价格等信息,并提供链接到商品详情页面的入口。商品详情页面则展示了商品的详细描述、图片、价格、用户评价等信息,同时还有加入购物车或立即购买的按钮。购物车页面会列出用户已选择的商品信息,显示总金额,并提供继续购物或结算的选项。结算页面则是用户确认订单和填写配送信息、支付方式等的页面。其他页面还包括用户登录、注册、个人中心、我的订单等。这些静态页面通过HTML、CSS、JavaScript等前端技术来实现页面的布局、样式和基本交互效果。购物网站静态HTML页面可以提供基本的浏览和展示功能,但由于没有后台数据支持和动态交互,用户无法进行搜索、筛选、加入购物车、下单等操作。因此,在实际应用中,购物网站静态HTML页面一般是与后台服务器和数据库进行动态交互的前端页面的一部分,配合后端技术来实现完整的购物网站功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值