请求和响应过程:一、tomcat服务器会根据请求url中的资源路径,建立对应的Servlet实现类对象程序员
二、tomcat服务器会自动建立request和response对象,request对象中封装请求消息数据数组
三、tomcat将request和response两个对象传递给service方法,而且调用service方法浏览器
四、程序员能够勇敢request对象获取请求消息数据,经过response对象设置响应消息数据tomcat
五、服务器在给浏览器做出响应以前,会从response对象中拿程序员设置的响应消息数据服务器
Request对象的继承体系结构:jsp
ServletRequest->HttpServletRequest->RequestFacade编码
request的功能url
一、获取请求消息spa
获取请求行数据对象
例如:GET /Web_servlet/demo?name = user HTTP/1.1
方法:一、String getMethod()获取请求方式,GET
二、String getContextPath() 获取虚拟目录,/Web_ servlet
三、String getServeltPath()获取servlet路径,/demo
四、String getQueryString()获取get请求参数,name=user
五、String getRequestURI()获取请求URI,/Web_servlet/demo
六、String getRequesrURL()获取请求URL,http://localhost/Web_servlet/demo
七、String getProtocol()获取协议及版本,HTTP/1.1
八、String getRemoteAddr()获取客户端IP地址
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*request.getRequestDispatcher("/hello.jsp").forward(request,response);*/ String method = request.getMethod(); System.out.println(method); String contextPath = request.getContextPath(); System.out.println(contextPath); String servletPath = request.getServletPath(); System.out.println(servletPath); String queryString = request.getQueryString(); System.out.println(queryString); String requestURI = request.getRequestURI(); System.out.println(requestURI); StringBuffer requestURL = request.getRequestURL(); System.out.println(requestURL); String protocol = request.getProtocol(); System.out.println(protocol); String remoteAddr = request.getRemoteAddr(); System.out.println(remoteAddr); }
获取请求头数据
方法:一、String getHeader(String name):经过请求头的名称获取请求头的值
二、Enumeration<String> getHeaderNames():获取全部的请求头名称
获取请求体数据
经过POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
步骤:一、获取流对象
BufferedReader getReader():获取字符输入流,只能操做字符数据
ServletInputStream getInputStream():获取字节输入流,能够操做全部类型的数据
二、再从流对象中拿数据
二、其余功能
获取请求参数通用方法:一、String getParameter(String name)根据参数名称获取参数值
二、String[] getParameterValues(String name):根据参数名称获取参数值的数组
三、Enumeration<String[]> getParameterNames():获取全部请求的参数名称
四、Map<String ,String[] >getParameterMap():获取全部参数的map集合
注意:中文乱码问题:POST方式发送中文请求会产生乱码,解决方法:设置流的编码,request.setCharacterEncoding("UTF-8");
请求转发:一种在服务器内部的资源跳转方式
步骤:一、经过request对象获取请求转发器对象:requsetDispatcher getRequsetDispatcher(String path)
二、使用RequsetDispatcher对象来进行转发:forward(ServletRequset requset,ServletResponse response)
特色:一、浏览器地址栏路径不发送变化
二、只能转发到当前服务器内部资源中
三、转发是一次请求
共享数据:
域对象:一个有做用范围的对象,能够在范围内共享数据
request:表明一次请求的范围,通常用于请求转发的多个资源中共享数据
方法:一、setAttribute(String name ,Object obj):存储数据
二、getAttribute(String name):经过键获取值
三、removeAttribute(String name):经过键移除数据
获取servletContext:
方法:getServletContext();