分享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类然后自己在构造方法应用构造注入模式的用法。望路过的大虾给指点。
- 分享servlet源码里面的一段
- 一段分享到微信的代码
- servlet里面的监听
- 论文里面的一段XML代码
- 小程序里面的一段代码
- 反汇编的一段源码
- 分享一段轮换切图的效果
- 分享一段autossh端口转发的脚本
- 分享一段JS格式化JSON的代码
- 分享一段网页跳转的代码
- 【Qt】一段QPushButton的styleSheet样式分享
- 分享一段Java搞笑的代码注释
- 一段测试是否在vm里面的asm
- 判断一段数列是不是从栈里面输出的
- 贴一段关闭tabpage的源码
- Spring2.5.6 的一段源码疑似bug
- 一段自定义布局的源码分析
- DNotes的源码分享
- JAVA
- JAVA
- Linux块设备驱动(1)---块驱动中相关的结构体及其操作
- TreeView点击右键,直接选中当前节点
- DLL里的Dialog.DoModal返回-1
- 分享servlet源码里面的一段
- 开博第一篇
- 如何在WINDOWS和Linux下配置环境变量
- 多进程--消息队列--聊天工具
- 代码
- Interesting Problem容斥原理
- 如何开启SQLSERVER数据库缓存依赖优化网站性能
- 函数的解析之C/C++
- get started