创建并运行一个简单的Servlet 程序,完成浏览器和服务器的简单交互
Request 对象:
问题:
浏览器发起请求到服务器,会遵循HTTP 协议将请求数据发送给服务器。
那么服务器接受到请求的数据改怎么存储呢?不但要存,而且要保证完成性。
解决:
使用对象进行存储,服务器每接受一个请求,就创建一个对象专门的存储此次请求的请求数据。
request 对象解释:
服务器接收到浏览器的请求后,会创建一个Request 对象,对象中存储了此次请求相关的请求数据。服务器在调用 Servlet 时会将创建的Request 对象作为实参传递给 Servlet 的方法,比如:service 方法。
使用:
获取请求头数据
获取请求行数据获取用户数据
读取HTTP 头的方法
下面的方法可用在Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象可用。
方法& 描述:
Cookie[] getCookies()
返回一个数组,包含客户端发送该请求的所有的Cookie 对象。
Object getAttribute(String name)
以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回null。
String getCharacterEncoding()
返回请求主体中使用的字符编码的名称。
String getContextPath()
返回指示请求上下文的请求URI 部分。
String getHeader(String name)
以字符串形式返回指定的请求头的值。
String getMethod()
返回请求的HTTP 方法的名称,例如,GET、POST 或 PUT。
String getParameter(String name)
以字符串形式返回请求参数的值,或者如果参数不存在则返回null。
备注:如果参数是中文获取不到,那么需要在服务器上设置server.xml配置文件,需要配置useBodyEncodingForURI="true"
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
String getPathInfo()
当请求发出时,返回与客户端发送的URL 相关的任何额外的路径信息。
String getProtocol()
返回请求协议的名称和版本。
String getQueryString()
返回包含在路径后的请求URL 中的查询字符串。
String getRemoteAddr()
返回发送请求的客户端的互联网协议(IP)地址。
String getRequestURI()
从协议名称直到HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分。
String getServletPath()
返回调用JSP 的请求的 URL 的一部分。
String[] getParameterValues(String name)
返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回null。
int getIntHeader(String name)
返回指定的请求头的值为一个int 值。
int getServerPort()
返回接收到这个请求的端口号。
int getParameterMap()
将参数封装成Map 类型。
Response 对象:
问题:
在使用Request 对象获取了请求数据并进行处理后,处理的结果如何显示到浏览器中呢?
解决:
使用Response 对象服务器在调用指定的Servlet 进行请求处理的时候,会给 Servlet 的方法传递两个实参 request 和 response。其中 request 中封存了请求相关的请求数据,而response 则是用来进行响应的一个对象。
使用:
设置响应头
设置响应编码格式
设置HTTP 响应报头的方法
下面的方法可用于在Servlet 程序中设置 HTTP 响应报头。这些方法通过 HttpServletResponse 对象可用。
方法& 描述
void addCookie(Cookie cookie)
把指定的cookie 添加到响应。
void addHeader(String name, String value)
添加一个带有给定的名称和值的响应报头。
void sendRedirect(String location)
使用指定的重定向位置URL 发送临时重定向响应到客户端。
void setCharacterEncoding(String charset)
设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。
void setContentType(String type)
如果响应还未被提交,设置被发送到客户端的响应的内容类型。
void setHeader(String name, String value)
设置一个带有给定的名称和值的响应报头。
void setStatus(int sc)
为该响应设置状态码。