HttpServlet
2016-02-17 11:25
489 查看
什么是HttpServlet
sun公司为Servlet定义了一个抽象类HttpServletHttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法
封装的service方法可以看下,不需要记
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) { maybeSetLastModified(resp, lastModified); doGet(req, resp); } else { resp.setStatus(304); } } } else if (method.equals("HEAD")) { long lastModified = getLastModified(req); maybeSetLastModified(resp, lastModified); doHead(req, resp); } else if (method.equals("POST")) { doPost(req, resp); } else if (method.equals("PUT")) { doPut(req, resp); } else if (method.equals("DELETE")) { doDelete(req, resp); } else if (method.equals("OPTIONS")) { doOptions(req, resp); } else if (method.equals("TRACE")) { doTrace(req, resp); } else { String errMsg = lStrings.getString("http.method_not_implemented"); Object[] errArgs = new Object[1]; errArgs[0] = method; errMsg = MessageFormat.format(errMsg, errArgs); resp.sendError(501, errMsg); } }
HttpServlet的实现
package com.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Servlet2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } }
相关文章推荐
- http基础知识01
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 3 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Programming Assignment 1: The perceptron learning alg
- web.config add handlers and httpmodule to System.Web section.
- oracle 11g 发信需要赋予权限 ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 2 Quiz
- 机器学习中的神经网络Neural Networks for Machine Learning:Lecture 1 Quiz
- 关闭不安全的HTTP方法
- Android 使用Picasso加载网络图片等比例缩放
- ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法
- Psping四大功能介绍:ICMP Ping/TCP Ping/延迟测试/带宽测试
- 服务器不能设置内容类型HTTP头信息后发送
- TCP/UDP 协议介绍
- netstat获得TCP连接信息的分类统计
- 【codevs1993】草地排水,网络流入门(dinic+ispa)
- 使用HttpURLConnection发送Post/Get请求
- Linux(Centos6.5)下安装svn服务器,并通过http访问-- 测试可用
- HTTP协议详解
- Iptables—包过滤(网络层)防火墙
- apache之httpd启动、终止、重启小结