本文共 2132 字,大约阅读时间需要 7 分钟。
Request简介
HttpServletRequest对象代码客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象,可以获取客户这些的信息 - getRequestURL():返回客户端发出请求完整URL 例:
getRequestURI():返回请求行中的资源名部分,在权限控制中常用 例: - getMethod():获取请求的方式(get,post)
getQueryString():方法返回请求行中的参数部分 getRemoteAddr:方法返回发出请求的客户机ip地址 getRemoteHost():方法返回发出请求的客户机的完整主机名 getRemotePort():方法返回客户机所使用的网络端口号 getLocalAddr():方法返回WEB服务器的IP地址 getLocalName():方法返回WEB服务器的主机名 getServletPort():获取服务器的端口 getServletPath():获取路径 中 除上下文后的其他路径 - getHeader(String name):获取指定头的值
- getHeaderNames():获取指定所有头的名称
- getHeaders(String name):获取指定头的所有值
- getDateHeader(String name):获取日期型头的值
- getParameter(String name):获取指定名称的值
- getParameterMap():获取所有的请求数据组成的Map集合
- getParameterValues(String name):获取同名name的一组参数值
- getParameterNames():获取所有请求数据的名称和值
getInputStream():获取输入流 通过流去获取数据(文件上传) 获取请求参数时乱码问题
request.setCharacterEncoding("UTF-8"); - String newName = new String(name.getBytes("ISO8859-1"),"UTF-8");
对于乱码还可以在tomcat里面解决
- 找到tomcat里conf文件夹下的server.xml文件
配置连接器的 URIEncoding 可以指定服务器在获取请求参数时默认使用的编码,从而一劳永逸的决绝获取请求参数时的乱码问题。 第二种方式也可以(不推荐使用) 注意:但是这俩属性都不推荐使用,因为发布环境往往不允许修改此属性。 reqyest实现请求转发和mvc设计模式
- 请求转发指一个WEB资源收到客户端请求后,通知服务器去调用另外一个WEB资源进行处理。
- request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个方法的forward方法可 以实现请求转发。
request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其他WEB资源处理。 请求转发的细节
forward方法用于将请求转发到RequestDispatcher对象封装的资源 如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正地传送到了客户端,forward方法将抛出IllegalStateException异常 避免:在每次跳转之后 return 结束方法
如果在调用forward方法之前向Servlet引擎的缓冲区(response)中写入了内容,只要写入到缓冲区中的内容还没有被真正输出到客户端,forward方法就可以被正常执行,原来写入到输出缓冲区中的内容将被清空,但是,已经写入HttpServletResponse对象中的响应头字段信息保持有效 请求转发的特点
RequestDispatcher
include方法:
RequestDispatcher.include方法用于将RequestDispatcher对象封装的资源内容作为当前响应内容的一部分包含进来,从而实现可编程的服务器端包含功能。 被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的执行结果将被忽略