[原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.HttpServlet介绍(具体方法可参考:java WEB学习笔记08:HttpServletRequest & ServletRequest) HttpServletResponse
1)public abstract class HttpServlet extends GenericServlet implements java.io.Serializable 是继承GenericServlet 的一个针对HTTP 协议定制的Servlet。
2)在service()方法中直接把ServletRequest 和 ServletResponse 转为 HttpServletRequest 和 HttpServletResponse,并且调用了重载的service(HttpServletRequest req, HttpServletResponse resp)
获取请求方式:request.getMethod().根据请求方式又创建了doXxx()方法(xxx 为具体的请求方式,比如doGet, doPost)
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException { HttpServletRequest request;
HttpServletResponse response; try {
request = (HttpServletRequest) req;
response = (HttpServletResponse) res;
} catch (ClassCastException e) {
throw new ServletException("non-HTTP request or response");
}
service(request, response); protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) {
long lastModified = getLastModified(req);
if (lastModified == -1) {
// servlet doesn't support if-modified-since, no reason
// to go through further expensive logic
doGet(req, resp);
} else {
long ifModifiedSince;
try {
ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
} catch (IllegalArgumentException iae) {
// Invalid date header - proceed as if none was set
ifModifiedSince = -1;
}
if (ifModifiedSince < (lastModified / 1000 * 1000)) {
// If the servlet mod time is later, call doGet()
// Round down to the nearest second for a proper compare
// A ifModifiedSince of -1 will always be less
maybeSetLastModified(resp, lastModified);
doGet(req, resp);
} else {
resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
}
} } else if (method.equals(METHOD_HEAD)) {
long lastModified = getLastModified(req);
maybeSetLastModified(resp, lastModified);
doHead(req, resp); } else if (method.equals(METHOD_POST)) {
doPost(req, resp); } else if (method.equals(METHOD_PUT)) {
doPut(req, resp); } else if (method.equals(METHOD_DELETE)) {
doDelete(req, resp); } else if (method.equals(METHOD_OPTIONS)) {
doOptions(req,resp); } else if (method.equals(METHOD_TRACE)) {
doTrace(req,resp); } else {
//
// Note that this means NO servlet supports whatever
// method was requested, anywhere on this server.
// String errMsg = lStrings.getString("http.method_not_implemented");
Object[] errArgs = new Object[1];
errArgs[0] = method;
errMsg = MessageFormat.format(errMsg, errArgs); resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
}
}
3.一般在实际开发中,直接继承HttpServlet,并根据请求方法doXxx() 方法接口
优点:直接针对性的覆盖doXxx() 方法;直接使用 HttpServletRequest 和 HttpServletResponse
4.关于Servlet小结
1)了解GenericServlet 原理和实现
2)掌握 HttpServlet 实现的原理 及 源码
最新文章
- GMap.NET使用一
- sql server 2008笔记
- apply和call
- Mybatis保存数据时事务问题
- Python字符转换
- 【转】深入研究java.lang.Runtime类
- hibernate jpa 注解 @Temporal(TemporalType.DATE) 格式化时间日期,页面直接得到格式化类型的值
- python成长之路11
- VMware vSphere 服务器虚拟化之十六 桌面虚拟化之VMware Horizon View
- HTML5笔记3——Web Storage和本地数据库
- c语言中标识符的作用域
- SpringSecurity自定义AuthenticationProvider和AuthenticationFilter
- 元素定位之Ui-Automator-Viewer的使用
- FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/util/JSON
- Java7 新特性: try-with-resources
- RabbitVCS - Ubuntu VCS Graphical Client
- JSP复习
- Jmeter Ant Task如何让beanshell断言失败的详细信息展示在report里面
- jquery, jquery-ui, requirejs, bootstrap 的关系理解
- 到底该用img还是background-image?
热门文章
- Database returned an invalid value in QuerySet.datetimes(). Are time zone definitions for your datab
- zabbix监控客户端本地网络的延时状态
- Install RabbitMQ server in CentOS 7
- MongoDB查询条件常用设置
- db2 error
- Linux中crontab下scp文件传输的两种方式
- The following classes could not be found: - android.support.v7.internal.widget.ActionBarOverlayLayout
- mysql如何监测是否命中索引?
- Collective Mindsets (easy)(逻辑题)
- 3.二级接口HierarchicalBeanFactory