组团学

Servlet接口相关类型介绍

阅读 (396507)

一、概述

在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配置了两个初始化参数
需要 登录 才可以提问哦