WEB开发网
开发学院软件开发Java java高并发-静态页面生成方案(2) 阅读

java高并发-静态页面生成方案(2)

 2012-06-06 07:45:31 来源:WEB开发网   
核心提示:本章将实现一个servlet生成html的基本功能,包含了URL 重定向功能现在我们来看看一个普通的url分页请求怎么生成静态页面,java高并发-静态页面生成方案(2),假如现在要显示第一页的数据信息 ,那么通常的链接会是这个样子 : http://abc.com/xx.do?pageNumber=1 ,去处理 .s

本章将实现一个servlet生成html的基本功能,包含了URL 重定向功能

现在我们来看看一个普通的url分页请求怎么生成静态页面。

假如现在要显示第一页的数据信息 ,那么通常的链接会是这个样子 : http://abc.com/xx.do?pageNumber=1 。我们说一下这个最简单的方式,打个比方:当我们访问 http://abc.com/xx_pageNumber_1.shtml 的时候 ,就是在访问 http://abc.com/xx.do?pageNumber=1 。规律就是请求的 action(动作),和参数的名称,参数的值,都用下滑线分开,而且请求的网页的最终后缀是 .shtm 。然后呢?我们需要编写一个servlet,去处理 .shtm 的请求:

?
<servlet>
<servlet-name>creatorHtmlServlet</servlet-name>
<servlet-class>com.jlins.CreatorHtmlServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>creatorHtmlServlet</servlet-name>
<url-pattern>*.shtm</url-pattern>
</servlet-mapping>

下面就是 servlet 的内容了:
?
public class CreatorHtmlServlet extends HttpServlet {

private Logger log=Logger.getLogger(CreatorHtmlServlet.class);

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String encoding = "UTF-8";
//获得请求address
String templatePath = URLReWrite(request);
//获得相对路径
String realPath= request.getSession().getServletContext().getRealPath("/");
//获得要生成的静态html文件的名字
String htmlName = getHtmlFileName(request);
//获得详细路径的 html文件的名字
String cachhtmlFileName = realPath + File.separator + htmlName;

File cacheFile = new File(cachhtmlFileName);

boolean load = true;
//文件存在的话就可以直接返回了,不需要做任何处理
if(cacheFile.exists()) {
load = false;
}
if(load) {
final ByteArrayOutputStream os = new ByteArrayOutputStream();
final ServletOutputStream stream = new ServletOutputStream() {

public void write(byte[] data,int offset, int length) {
os.write(data, offset, length);
}

public void write(int b) throws IOException {
os.write(b);
}
};

final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os, encoding));

HttpServletResponse rep = new HttpServletResponseWrapper(response) {

public ServletOutputStream getOutputStream() {
return stream;
}

public PrintWriter getWriter() {
return pw;
}
};

logger.debug("HtmlCreatorServlet RequestDispatcher = " + templatePath);
// 使用 RequestDispatcher转发请求,请求真是的地址
// 例如 index.shtm ,则转发到 index.do
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(templatePath);
dispatcher.include(request, rep);

1 2  下一页

Tags:java 并发 静态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接