如何处理java高并发问题---之页面静态化
来源:互联网 发布:js实现答题卡功能 编辑:程序博客网 时间:2024/04/30 05:56
解决java中的高并发问题可以从硬件软件等方面入手,硬件如:服务器;软件如:系统缓存、页面静态化等。这里我写的是页面静态化的简单小例子。之所以将这个小例子记录下来是因为之前对页面静态化有误解,原以为静态化页面就是在项目编写中前端页面利用html就可以。但是在参考网上资料后发现理解误差很大,以下是我在参考了一些网上资料后写的实现页面静态化的简单实例:
项目结构图
1.业务处理类Servlet.java(这里为了方便采用的servlet,可根据项目需求在其他的架构中使用其中的业务逻辑)
package com.servlet;import java.io.File;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Servlet extends HttpServlet{public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{System.out.println("chapterId=====//===="+request.getParameter("chapterId"));if(request.getParameter("chapterId")!= null){ String chapterFileName = "bookChapterRead_"+request.getParameter("chapterId")+".html"; String chapterFilePath = getServletContext().getRealPath("/") + chapterFileName; System.out.println("chapterFilePath===//============="+chapterFilePath); File chapterFile = new File(chapterFilePath); System.out.println("chapterFile===//============="+chapterFile); if(chapterFile.exists()){//如果有这个文件就告诉浏览器转向 System.out.println("有此静态页面======"); response.sendRedirect(chapterFileName); return; } System.out.println("没有此静态页面======"); //======存放业务处理后得到的信息 request.setAttribute("novelChapter", "测试单节信息"); request.setAttribute("lastPageId", "lastPageId111"); request.setAttribute("nextPageId", "nextPageId222"); //============ System.out.println("getServletContext()==========//========="+getServletContext()); new CreateStaticHTMLPage().createStaticHTMLPage(request, response, getServletContext(), chapterFileName, chapterFilePath, "/bookRead.jsp"); }}}
2.创建静态页面类CreateStaticHTMLPage.java
package com.servlet;import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;/** * 创建HTML静态页面 * 功能:创建HTML静态页面 */ public class CreateStaticHTMLPage { /** * 生成静态HTML页面的方法 * @param request 请求对象 * @param response 响应对象 * @param servletContext Servlet上下文 * @param fileName 文件名称 * @param fileFullPath 文件完整路径 * @param jspPath 需要生成静态文件的JSP路径(相对即可) * @throws IOException * @throws ServletException */public void createStaticHTMLPage(HttpServletRequest request, HttpServletResponse response,ServletContext servletContext,String fileName,String fileFullPath,String jspPath) throws ServletException, IOException{ response.setContentType("text/html;charset=utf-8");//设置HTML结果流编码(即HTML文件编码) RequestDispatcher rd = servletContext.getRequestDispatcher(jspPath);//得到JSP资源 final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();//用于从ServletOutputStream中接收资源 final ServletOutputStream servletOuputStream = new ServletOutputStream(){//用于从HttpServletResponse中接收资源 public void write(byte[] b, int off,int len){ byteArrayOutputStream.write(b, off, len); } public void write(int b){ byteArrayOutputStream.write(b); } }; final PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(byteArrayOutputStream));//把转换字节流转换成字符流 HttpServletResponse httpServletResponse = new HttpServletResponseWrapper(response){//用于从response获取结果流资源(重写了两个方法) public ServletOutputStream getOutputStream(){ return servletOuputStream; } public PrintWriter getWriter(){ return printWriter; } }; rd.include(request, httpServletResponse);//发送结果流 printWriter.flush();//刷新缓冲区,把缓冲区的数据输出 FileOutputStream fileOutputStream = new FileOutputStream(fileFullPath); byteArrayOutputStream.writeTo(fileOutputStream);//把byteArrayOuputStream中的资源全部写入到fileOuputStream中 fileOutputStream.close();//关闭输出流,并释放相关资源 response.sendRedirect(fileName);//发送指定文件流到客户端 }}
3.web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><servlet> <servlet-name>htmlServlet</servlet-name> <servlet-class>com.servlet.Servlet</servlet-class></servlet><servlet-mapping> <servlet-name>htmlServlet</servlet-name> <url-pattern>*.do</url-pattern></servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
4.首页面index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>首页面</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> <form action="kanName.do"> <input name="chapterId" type="text" value="122"/> <input name="userName" type="text" value="张庆伟"/> <input type="submit" value="提交"/> </form> </body></html>
5.跳转后的结果页面bookRead.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <% String lastPageId=(String)request.getAttribute("lastPageId"); %> <base href="<%=basePath%>"> <title>book页</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> </head> <body> 这是跳转页面: <%=lastPageId %> </body></html>
以上代码是实例的所有代码,启动项目后点击提交按钮后,会看到跳转到一个html页面。
以上代码参考自:http://blog.csdn.net/jimmy609/article/details/37810591
0 0
- 如何处理java高并发问题---之页面静态化
- 如何处理java高并发问题---之页面静态化
- 如何处理java高并发问题---之页面静态化
- 如何处理Java中的高并发问题
- Java如何处理高并发
- java高并发-静态页面生成方案
- Java高并发:静态页面生成方案
- Java高并发:静态页面生成方案
- Java高并发:静态页面生成方案
- Java高并发:静态页面生成方案
- Java高并发:静态页面生成方案
- Java高并发 静态页面生成方案
- Java高并发:静态页面生成方案
- Java高并发:静态页面生成方案
- java web开发 高并发处理 集群 静态化 缓存
- 谈论java中如何处理高并发的问题
- 高并发解决方案--页面静态化
- 高并发解决方案--页面静态化
- 面对对象的七大设计原则
- C语言获取微秒级的系统时间 gettimeofday timeval timeout
- apache common Lang包StringUtils系列(六)
- Python中有用的函数
- 小程序解决微信bug
- 如何处理java高并发问题---之页面静态化
- 给大家推荐一个微信域名屏蔽检测工具,《多视野》出品
- Installing Kubernetes on Linux with kubeadm
- VXLAN学习整理
- 利用JS_SDK实现QQ第三方登录
- android eclipse导入android时工程下没有R文件的问题
- 对CERT.RSA进行详细解析
- 按键精灵
- Java微信公众平台开发之发送模板消息