Request
1.request和respinse对象的原理
request和respinse对象是由服务器创建的,我们只是使用他们
request对象是来获取请求消息,response是来设置响应消息
3.request对象的继承体系结构:
ServletRequest-------接口
继承
HttpServletRequest-------接口(*)
继承
org.apache.catalina.connector.RequestFacade--------一个类,由tomcat编写
下面的操作是打开tomcat的源码安装包解压缩,按照这个路径点进去查看API即可
@WebServlet("*.do")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doget..");System.out.println(req);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("dopost...");}
}
HttpServletRequest
4.request功能:获取请求消息,看上面那一篇的4个获取内容即可
获取请求行数据
例如:GET/day14/demo1?name=zhangsan HTTP/1.1
- 获取请求方式:GET
- String getMethdo()
- (*)获取虚拟目录:/day_14
- String getContextPath()
- 获取Servlet路径:/demo1
- String getServletPath()
- 获取get方式的请求参数:name=zhangsan
- String getQueryString()
- (*)获取请求URI:/day14/demo1
- String getRequestURI() /day14/demo1
- StringBuffer getRequestURL() http://localhost/8888/day14/demo1
- 获取协议及版本1.1
- String getProtocol()
- 获取客户机的IP地址
- String getRemoteAddr()
获取请求头数据
方法
- (*)String getHeader(string name):通过请求头的名称来获取请求头的值
获取请求体数据
- 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
- 步骤:
- 获取流对象
- BufferdeReader getReader():获取字符输入流,只能来操作字符数据
- ServletInputStream getInputStream();获取字节输入流,可以操作所有类型数据
- 在文件上传知识点后讲解
- 再从流对象中拿数据
5.其他功能
1.获取请求参数通用方式(Post和Get都适用)
- String getParameter(String name):根据参数名称获取参数值 username=zhangsan&password=123
- String[] getParameterValues(String name):根据参数名称获取参数值的数组,多用于复选框, hobby=xx&hobby=name
- Enumeration<String> getParameterNames():获取所以有请求的参数名称,但是获取的如果是复选框的话,值只会获取到一个,所以我们会有第5点的出现
- Map<String,String[]> getParameterMap():获取所有参数的map集合 ,即键值对的集合
- 这意味着在doGet方法里面也可以直接通过参数调用实现doPost的方法,代码如下
中文乱码问题:
- get方式:tomcat 8 已经将get方式乱码问题解决了,因为他的参数在url中
- post方式:会乱码,因为他的参数通过的是内部的流来获取参数的值
- 解决方法:在获取参数前,设置request的编码
//1.设置流的编码request.setCharacterEncoding("utf-8");
2.请求转发
只进行一次数据转发
3.共享数据
先存到域中,然后再进行转发
demo9是负责获取数据的
4.获取ServletContext: