分享servlet源码里面的一段

来源:互联网 发布:网络渗透技术教程 编辑:程序博客网 时间:2024/06/14 01:24

servlet里面的一段代码:

 

public class HttpServlet extends GenericServlet implements Serializable{

  protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String method = req.getMethod();
    if(method.equals("GET")) {
        long lastModified = getLastModified(req);
        if(lastModified == -1L) {
            doGet(req, resp);
        } else {
            long ifModifiedSince = req.getDateHeader("If-Modified-Since");
            if(ifModifiedSince < (lastModified / 1000L) * 1000L) {
                maybeSetLastModified(resp, lastModified);
                doGet(req, resp);
            } else {
                resp.setStatus(304);
            }
        }
    }
   
}


public interface HttpServletRequest extends ServletRequest {

    public abstract String getMethod();
   
}


public class HttpServletRequestWrapper extends ServletRequestWrapper
    implements HttpServletRequest{
   
  public String getMethod() {
    return _getHttpServletRequest().getMethod();
  }
 
  private HttpServletRequest _getHttpServletRequest() {
    return (HttpServletRequest)super.getRequest();
  }
 
}


public class ServletRequestWrapper implements ServletRequest {

    public ServletRequestWrapper(ServletRequest request) {
        if(request == null) {
            throw new IllegalArgumentException("Request cannot be null");
        } else {
            this.request = request;
            return;
        }
    }

    public ServletRequest getRequest() {
        return request;
    }

    public void setRequest(ServletRequest request) {
        if(request == null) {
            throw new IllegalArgumentException("Request cannot be null");
        } else {
            this.request = request;
            return;
        }
    }

}

 

今天深究下servlet的底层代码,发现HttpServlet类里面的service(...)会调用HttpServletRequest类里面的getMethod()

但找到底发现getMethod()的实现在HttpServletRequestWrappe类里面的_getHttpServletRequest()里面,由此我来到

ServletRequestWrappe类,仔细观看上面的三个方法,却不明白ServletRequest这个对象怎么来。

从来没有见过自己实现ServletRequest类然后自己在构造方法应用构造注入模式的用法。望路过的大虾给指点。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机电话键没了怎么办 翼支付密码忘了怎么办 滴滴驾龄不够3年怎么办 百度云下的太慢怎么办 百度云下的好慢怎么办 网盘下载速度慢怎么办 4g移动卡网速慢怎么办 天翼校园开wifi怎么办 校园卡不给销户怎么办 吃腻了难受恶心怎么办 深夜吃撑了难受怎么办 吃撑了肚子难受怎么办 喝水喝撑了难受怎么办 晚饭吃撑了难受怎么办 吃多了肚子难受怎么办 电信4g信号变3g怎么办 五险交了3月离职怎么办 怎么办工行携程灵通卡 易买得消费卡怎么办 贷款回执单丢了怎么办 医院挂号过号了怎么办 脑子里总是胡思乱想睡不着怎么办 被妹夫给睡了怎么办 被妹夫抱了下怎么办 最里面牙齿烂了怎么办 老公有外遇不承认怎么办 对老公疑心太重怎么办 当你发现老公出轨怎么办 发现自己老婆出轨了怎么办 笔袋密码忘记了怎么办 海关锁密码忘了怎么办 800度近视献了血怎么办 当老公有了外遇妻子该怎么办 妻子有外遇我该怎么办 喜欢拔粗的头发怎么办 小腿长水泡很痒怎么办 脚丫有水泡又痒怎么办 脚上起水泡怎么办很疼 脚上反复长水泡怎么办 高考没考上二本怎么办 车子被扣了60分怎么办