阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Servlet接口相关类型介绍

111次阅读
没有评论

共计 3112 个字符,预计需要花费 8 分钟才能阅读完成。

一、概述

在 Servlet 接口中还存在三个我们不熟悉的类型:

ServletRequest:service() 方法的参数,它表示 请求对象,它封装了所有与请求相关的数据,它是由服务器创建的;

ServletResponse:service()方法的参数,它表示 响应对象 ,在 service() 方法中完成对客户端的响应需要使用这个对象;

ServletConfig:init()方法的参数,它表示 Servlet 配置对象,它对应 Servlet 的配置信息,那对应 web.xml 文件中的 元素。

二、ServletRequest 和 ServletResponse

ServletRequest 和 ServletResponse 是 Servlet#service() 方法的两个参数,一个是请求对象,一个是响应对象,可以从 ServletRequest 对象中获取请求数据,可以使用 ServletResponse 对象完成响应。你以后会发现,这两个对象就像是一对恩爱的夫妻,永远不分离,总是成对出现。

ServletRequest 和 ServletResponse 的实例由服务器创建,然后传递给 service()方法。如果在 service() 方法中希望使用 HTTP 相关的功能,那么可以把 ServletRequest 和 ServletResponse 强转成 HttpServletRequest 和 HttpServletResponse。这也说明我们经常需要在 service()方法中对 ServletRequest 和 ServletResponse 进行强转,这是很心烦的事情。不过后面会有一个类来帮我们解决这一问题的。

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(“<h1>Hello JavaWeb </h1>”);

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.baidu.com”),表示 3 秒后自动刷新到 http://www.baidu.com;

​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:response(404,“您要查找的资源不存在!”)。

三、ServletConfig

ServletConfig 对象对应 web.xml 文件中的 元素。例如你想获取当前 Servlet 在 web.xml 文件中的配置名,那么可以使用 servletConfig.getServletName()方法获取!

<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class> com.tyschool.servlet.demo.HelloServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping>

ServletConfig 对象是由服务器创建的,然后传递给 Servlet 的 init()方法,你可以在 init()方法中使用它!

String getServletName():获取 Servlet 在 web.xml 文件中的配置名称,

指定的名称;

ServletContext getServletContext():用来获取 ServletContext 对象,ServletContext 会在后面讲解;

String getInitParameter(String name):用来获取在 web.xml 中配置的初始化参数,通过参数名来获取参数值;

Enumeration getInitParameterNames():用来获取在 web.xml 中配置的所有初始化参数名称;

元素中还可以配置初始化参数:

<servlet> <servlet-name>One</servlet-name> <servlet-class>cn.itcast.servlet.OneServlet</servlet-class> <init-param> <param-name>paramName1</param-name> <param-value>paramValue1</param-value> </init-param> <init-param> <param-name>paramName2</param-name> <param-value>paramValue2</param-value> </init-param> </servlet>

可以使用 ServletConfig 对象的 getInitParameter() 方法来获取初始化参数,

例如:

String value1 = servletConfig.getInitParameter(“paramName1”); // 获取到 paramValue1 配置了两个初始化参数

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-06-06发表,共计3112字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中