request与response都是httpservlet下面自带的方法所传递出来的参数,那么他的用法是什么样的呢?
request的方法
获取请求中的数据
获取请求行数据
获取请求方式String getMethod()
获取虚拟目录String getContextPath()
获取servlet路径String getServletPath()
获取get方式请求参数,比如用户名String getQueryString()
获取请求的URI/URLString getRequestURI()
获取版本协议(http的)String getProtocol()
获取客户端的IP地址String getRemoteAddr()
获取请求头数据
获取所有请求头的名称Enumeration<String> getHeaderNames()
获取请求体数据
note:只有post才有请求体
需要两步:1.获取流对象ServletInputStream getInputStream()
2.再从流对象中读取数据
获取请求参数
-
String getParameter(String name)
根据参数名称获取参数值 username=zs&password=123 -
String[] getParameterValues(String name)
根据参数名称获取参数值的数组hobby=xx&hobby=game -
Enumeration<String> getParameterNames()
获取所有请求的参数名称 -
Map<String,String[]> getParameterMap()
获取所有参数的map集合
共享数据
** 域对象**:一个有作用范围的对象,可以在范围内共享数据
比如request就是一个域对象,它有方法:
-
void setAttribute(String name,Object obj)
存储数据 -
Object getAttitude(String name)
通过键获取值
3.void removeAttribute(String name)
通过键移除键值对
response
在学习response之前我们先来补充另一个概念----响应消息,也就是服务给客户端发回的消息。
响应消息格式:
响应行 ---- 协议/版本 响应状态码 状态码描述
状态码:1xx
还没接受完,2xx
成功,3xx
重定向
4xx
客户端错误 5xx
服务器端错误
响应头
content-type
告诉客户端本次响应的体数据格式
content-disposition
告诉客户端以什么格式打开数据
响应体:传输的数据
!如果用服务器输出字符数据到浏览器用这个方法response.getwriter().write("xxx")
,可能遇到乱码问题,可以采用以下语句
response.setContentType("text/html;charset=utf-8")
来设置编码,输出方法变成response.getoutputstream().write(xxx)
ServletContext对象
通过request.getServletContext()
或者httpservlet里的this.getServletContext()
来获取,它是一个域对象
其下属以下方法,都是通过域对象来存取删数据
setAttribute(String name,Object value)
getAttribute(String name)
-
removeAttribute(String name)
还有获取文件真实服务器(路径的方法)
servletcontext.getRealPath
程序练习中为我们提供了一个实例,它的访问流程是如下
图片.png
网友评论