java核心技术2-request请求
来源:互联网 发布:博拉网络ipo最新消息 编辑:程序博客网 时间:2024/06/06 02:02
java核心技术request
一,Request概念及常用的API
1.1-Request表示客户端向服务器发出的请求,
所有客户端信息和客户端提交的数据,均封装在Request对象中。这个请求或者对象就是request。
request全称httpServletRequest
:浏览器输入网址的请求默认是get请求
HTTP请求分为三部分
1_请求行
2_请求头
3_请求体/请求正文/实体内容
全部发送给服务器,让服务器知道客户端的情况
1.2-Request常用API
获取客户机信息:getRequestURL()方法返回客户端发出请求时的完整URL getRequestURI()方法返回请求行中的资源名部分getQueryString()方法返回请求行中的参数部分getRemoteAddr()方法返回发出请求的客户机的IP地址getLocalAddr()方法返回WEB服务器的IP地址getMethod()方法返回客户机请求方式 getContextPath()方法返回当前web应用根目录getServletPath()方法返回Servlet映射路径获取请求头信息getHeader()方法返回请求头的值获取请求体参数getParameter()方法通过name获得值getParameterValues()方法通过name获得多值getParameterNames ()方法获得所有name
二、表单提交中文乱码的原因和解决方案
2.1-为什么表单中有中文,会出现乱码呢?
客户端以utf-8将中文编码,而tomcat用iso8859-1解码,编码和解码不一致,造成乱码
图解:
2.3-解决方案
通用方式:适用于GET和POSTbyte[] buf = username.getBytes(“ISO8859-1”);按ISO8859-1编码 String username = new String(buf,”UTF-8”);按UTF-8解码专用方式:适用于POST request.setCharacterEncoding(“UTF-8”);针对请求体内容按UTF-8编码 request.getParameter(“username”) 如果项目中GET和POST业务功能相同的话,可以在doGet()方法中调用doPost()
三、Request域对象
[Request对象既可以代表客户端向服务器的请求,也可以当做暂存数据的域对象]
3.1-什么是域对象
域对象初学者可以理解为一个容器,可以暂存String-Object这种key-value形式的数据 域对象保存时间是不同的,有的域对象保存时间在一次请求中;有的域对象保存时间在一次会话中; 有的域对象保存时间在整个应用中。其中Request域对象保存时间只在一次请求中,也就是说 一次请求完毕后,Request域对象就销毁了,一旦Request域对象销毁,那么存在其中的数据也 就不存在了。
3.2-为什么需要域对象
有时我们的业务,一个Servlet完成不了,需要另一个Servlet帮忙,这就是说,我们需要在二个或多个Servlet之间传递数据,域对象就负责完成这项任务
3.3-Request对象有二层含义:
01——代表客户端向服务器的请求对象,如getParameter(“username”)02——代表可以暂存数据的域对象,如下如示API
3.4-Request作为域对象常用的API
setAttribute():向域对象中绑定key=value形式的数据getAttribute():从域对象中根据key找value,如果取到不到,返回NULL removeAttribute():从域对象中删除key对应的value
ServletContext和request两个域对象的比较
四、Request转发
4.1-多个Servlet配合工作
有些时候,一个Servlet不能很好的完成业务工作,需要另一 个Servlet来配合。这就是说,很有可能一个Servlet需要将 流程交由另一个Servlet,此时就要用转发或重定向这二个 技术了,这里我们谈Request转发。
4.2-要转发必须得用Request.getRequestDispatcher().forward()方法
request.getRequestDispatcher(配置的虚拟路径或者是html和jsp页面).forward(request, response);
4.3-转发是服务器内部的事,与浏览器无关,所以浏览器的地址栏不会变,
原来浏览器以什么方式提交数据,转发到另一个Servlet依然执行对应的
doXxx方法。
浏览器以POST提交—第一个Servlet::doPost—第二个Servlet::doPost
浏览器以GET提交—第一个Servlet::doGet—第二个Servlet::doGet
!注意:转发不限于Servlet之间,Servlet也可以转发到HTML和JSP页面
- java核心技术2-request请求
- Java核心技术2NOTE
- java 通过流读取request请求参数
- java request获取请求路径的信息
- Java 通过Request请求获取IP地址
- JAVA http请求工具类http-request
- Request请求
- request请求
- Request请求
- JAVA 2 核心技术:高级编程
- Java核心技术第2章
- JAVA核心技术
- JAVA核心技术
- Java 核心技术
- Java核心技术
- Java核心技术
- Java核心技术
- Java核心技术
- 以太坊开发--使用geth搭建私有链
- 2016年世界互联网大会—乌镇报告
- 深夜记录一次Mysql5.7.10的密码失效问题
- 利用gitbash将代码传到github上
- php设计模式
- java核心技术2-request请求
- Tomcat启动失败错误解决Could not publish server configuration for Tomcat v6.0 Server at localhost.
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项的原因及解决方案
- ant 构建的依赖项目 kettle项目 源码导入eclipse
- BZOJ 2956 模积和 分块
- 64位Ubuntu上编译32位程序
- Android动画----Set
- mysql、oracle分页查询数据库
- IOS面试经常被问到的问题