·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
您现在的位置:天新网 > 软件开发
自己动手写Web容器之TomJetty之六:动态页面引入
http://www.21tx.com 2013年07月16日

上一页 1 2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
"http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
<title>500</title>  
<style type="text/css">  
<!--  
.style1 {  
    color: #FF0000;  
    font-weight: bold;  
}  
-->
</style>  
</head>  
      
<body>  
<table width="50%"  border="0" align="center" cellpadding="10" cellspacing="0">  
  <tr>  
    <td bgcolor="#A4A4A4"><table width="100%"  border="0" cellpadding="0" cellspacing="0">  
      <tr>  
        <td bgcolor="#FFFFFF"><table width="100%"  border="0" cellpadding="15" cellspacing="1">  
          <tr>  
            <td bgcolor="#E1E1E1"><div align="center"><strong>500</strong> <span class="style1">System Error.Please Wait...</span> </div></td>  
          </tr>  
        </table></td>  
      </tr>  
    </table></td>  
  </tr>  
</table>  
</body>  
</html>

四、TomJetty处理请求流程:

1.接收客户端发送的请求;

2.解析出请求的url;

3.在Web.config文件中检索是否存在该url对应的Servlet类。

4.如果存在该Servlet,就是动态请求,交给该Servlet去处理它。

5.如果不存在,就视为静态请求,加载tomjetty.config文件中的配置信息去处理它。

6.在上述处理过程中,如果遇到服务器端处理类生成或代码问题,就加载500.htm页面;如果是请求页面找不到,则加载404.htm页面。

       那么根据上述服务器处理请求的完整流程,TomJetty类的run()方法中处理请求的代码片段就应该是下面这样:

// 封装响应  
Response res = new Response();  
                  
// 有请求处理类就加载,没有就检索静态网页文件  
if(WebUtil.getValue(header.getUrl()) != null) {  
    try {  
        IServlet servlet = (IServlet) Class.forName(WebUtil.getValue(header.getUrl())).newInstance();  
        res.setOut(new PrintWriter(out));  
        servlet.service(req, res);  
    } catch(Exception e) {// 编译Servlet发生异常,加载500  
        File file = new File(TomJettyUtil.getValue("tomjetty.webapps"), "500.htm");  
        fin = new FileInputStream(file);  
        byte[] buf = new byte[(int) file.length()];  
        fin.read(buf);  
        out.write(buf);  
    }  
} else {  
    File file = new File(TomJettyUtil.getValue("tomjetty.webapps"),header.getUrl()); // 从配置文件检索服务端静态页面存放目录,定位到服务器端的静态页面  
    if(!file.exists()) {// 请求静态页面不存在,加载404  
        file = new File(TomJettyUtil.getValue("tomjetty.webapps"), "404.htm");  
    }   
    fin = new FileInputStream(file);  
    byte[] buf = new byte[(int) file.length()];  
    fin.read(buf); // 读取静态页面内容  
    out.write(buf); // 将静态页面内容写回给客户端浏览器显示  
}

注明 ? http://blog.csdn.net/leverage_1229

上一篇: hadoop深入研究(三)——hdfs数据流
下一篇: hadoop深入研究(二)——java访问hdfs

上一页 1 2

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net