HttpServlet 类

HttpServlet 类HttpServlet1 HttpServlet 概述 HttpServlet 类是 GenericServl 的子类 它提供了对 HTTP 请求的特殊支持 所以通常我们都会通过继承 HttpServlet 来完成自定义的 Servlet 2 HttpServlet 覆盖了 service 方法 HttpServlet 类中提供了 service HttpServle

HttpServlet 1、HttpServlet概述 HttpServlet类是GenericServlet的子类。 它提供了对HTTP请求的特殊支持,所以通常我们都会通过继承HttpServlet来完成自定义的Servlet。 2、HttpServlet覆盖了service()方法 HttpServlet类中提供了service(HttpServletRequest,HttpServletResponse)方法,这个方法是HttpServlet 自己的方法,不是从Servlet继承来的。在HttpServlet的service(ServletRequest,ServletResponse)方法中会 把ServletRequest和ServletResponse强转成HttpServletRequest和HttpServletResponse, 然后调用service(HttpServletRequest,HttpServletResponse)方法,这说明子类可以去覆盖 service(HttpServletRequest,HttpServletResponse)方法即可,这就不用自己去强转请求和响应对象了。 其实子类也不用去覆盖service(HttpServletRequest,HttpServletResponse)方法,因为HttpServlet还要 做另一步简化操作,下面会介绍。 HttpServlet.java 源码 public abstract class HttpServlet extends GenericServlet { @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { HttpServletRequest httpServletRequest; HttpServletResponse httpServletResponse; try { httpServletRequest = (HttpServletRequest) req; [强转] httpServletResponse = (HttpServletResponse) res; [强转] } catch (ClassCastException e) { throw new ServletException("non-HTTP request or response"); } service(httpServletRequest, httpServletResponse); [调用下面service()方法] } protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { …… } …… } 3、doGet()和doPost() 在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法会去判断当前请求 是GET还是POST。如果是GET请求,那么会去调用本类的doGet()方法, 如果是POST请求会去调用doPost()方法,这说明我们在子类中去覆盖doGet()或doPost()方法即可。 如: public class AServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("hello doGet()..."); } } public class BServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("hello doPost()..."); } } 4、HttpServletRequest 和 HttpServletResponse类 HttpServletRequest 的方法: * String getParameter(String paramName):获取指定请求参数的值; * String getMethod():获取请求方法,例如GET或POST; * String getHeader(String name):获取指定请求头的值; * void setCharacterEncoding(String encoding):设置请求体的编码!因为GET请求没有请求体, 所以这个方法只只对POST请求有效。当调用request.setCharacterEncoding(“utf-8”)之后,再通 过getParameter()方法获取参数值时,那么参数值都已经通过了转码,即转换成了UTF-8编码。所以, 这个方法必须在调用getParameter()方法之前调用! HttpServletResponse 的方法: * PrintWriter getWriter():获取字符响应流,使用该流可以向客户端输出响应信息。 例如response.getWriter().print(“

Hello JavaWeb!

”); * ServletOutputStream getOutputStream():获取字节响应流,当需要向客户端响应字节数据时,需要使用 这个流,例如要向客户端响应图片; * void setCharacterEncoding(String encoding):用来设置字符响应流的编码,例如在调 用setCharacterEncoding(“utf-8”);之后,再response.getWriter()获取字符响应流对象,这时的 响应流的编码为utf-8,使用response.getWriter()输出的中文都会转换成utf-8编码后发送给客户端; * void setHeader(String name, String value):向客户端添加响应头信息, 例如setHeader(“Refresh”, “3;url=http://www.itcast.cn”),表示3秒后自动刷新到http://www.itcast.cn; * void setContentType(String contentType):该方法是setHeader(“content-type”, “xxx”)的简便方法, 即用来添加名为content-type响应头的方法。content-type响应头用来设置响应数据的MIME类型, 例如要向客户端响应jpg的图片,那么可以setContentType(“image/jepg”),如果响应数据为文本类型, 那么还要台同时设置编码,例如setContentType(“text/html;chartset=utf-8”)表示响应数据类型为 文本类型中的html类型,并且该方法会调用setCharacterEncoding(“utf-8”)方法; * void sendError(int code, String errorMsg):向客户端发送状态码,以及错误消息。 例如给客户端发送404:sendError(404, “您要查找的资源不存在!”)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214315.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:33
下一篇 2026年3月18日 下午4:33


相关推荐

  • 运行时错误10048,地址已在使用_winerror193不是有效的

    运行时错误10048,地址已在使用_winerror193不是有效的图片就不放了,这个问题你肯定在代码中用到了**IP地址和端口**,如果没有请绕过。这时你主要找准自己的IP和端口替换上去就行。查找自己电脑IP和端口的方法:**第一步:Win+R****第二步:输入:cmd然后点击确定(Enter)进入****第三步:输入:ipconfig然后Enter**如图就是你的IP。第四步:输入:netstat然后Ente…

    2022年9月30日
    6
  • Mac录屏转GIF「建议收藏」

    Mac录屏转GIF「建议收藏」首先使用QuickTimePlayer录屏,软件如下:使用方法:1.点击【新建屏幕录制】2.点击录制按钮,可以自行选定特定区域,也可以录制整个屏幕,自己设置3.完成之后,电脑顶部右边有结束按钮存储到需要的位置,下面开始转GIF所需工具:python和两个包:首先控制台检查版本,控制台先后输入:python3-Vpip3-V没有的先下载,有的话太低了自行升级安装需要的两个包:先安装:pip3installrequests-i再安装:pip3install

    2026年3月4日
    7
  • hdu 4635 Strongly connected (tarjan)

    hdu 4635 Strongly connected (tarjan)

    2022年1月30日
    48
  • cisco配置hsrp配置实例

    cisco配置hsrp配置实例1 实验环境使用 ciscopackett 模拟器实现网络拓扑配置 交换机使用 3560 路由器使用 2911 显示所有端口 Options gt Preferences gt 选中 AlwaysShowPo 2 网络拓扑如下 3 具体配置 PC1 目前只需要配置基础 ip 即可 我们使用路由器来模拟 PC 机 Router gt en

    2025年8月20日
    5
  • 变电站后台监控系统[通俗易懂]

    变电站后台监控系统[通俗易懂]变电站后台监控系统实现对35KV变电站的主要设备和输、配电线路的自动监视、测量、自动控制和微机保护,以及与调度通信等综合性的自动化功能。实现对电网运行的实时监控,使值班人员和系统调度人员通过管理平台及时把握系统的运行状态和事故处理的主动性,另外配套的手机客户端软件实现了移动终端功能,可随时随地查看或管理电网,提高电网的自动化管理水平、供电质量。为达到这一目的,满足电网运行对变电站后台监控系统的要求,变电站综合电力自动化系统体系由“数据采集和控制”、“继电保护”、“直流电源系统”三大块构成变电站自动化基础。

    2022年7月25日
    16
  • 详解自动化运维平台的构建过程[通俗易懂]

    详解自动化运维平台的构建过程[通俗易懂]2013年,我加入了聚美优品,当时成都团队仅有四五个人,负责一些辅助系统的日常运维,比如查查日志等。随着公司规模逐渐的扩大,一些重要的业务往成都迁移,这对成都团队是一个非常大的挑战。业务部署最开始是手工的,我们逐渐觉得应该有一个平台来满足我们的工作,所以我们打造了一个运维平台。本文将围绕平台里有关自动化的东西做一个介绍,当然我们是一个小团队,不足的地方请大家指正。传统运维带来的坑说到运维自动化,前…

    2022年5月17日
    67

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号