java核⼼技术2-request请求java核⼼技术request
⼀,Request概念及常⽤的API
1.1-Request表⽰客户端向服务器发出的请求,
所有客户端信息和客户端提交的数据,均封装在Request对象中。这个请求或者对象就是request。    request全称httpServletRequest
:浏览器输⼊⽹址的请求默认是get请求
HTTP请求分为三部分
1_请求⾏
2_请求头
3_请求体/请求正⽂/实体内容
全部发送给服务器,让服务器知道客户端的情况
1.2-Request常⽤API
c语言sizeof函数头文件
获取客户机信息:
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和POST
byte[] buf = Bytes(“ISO8859-1”);按ISO8859-1编码
String username = new String(buf,”UTF-8”);按UTF-8解码
专⽤⽅式:适⽤于POST
request.setCharacterEncoding(“UTF-8”);针对请求体内容按UTF-8编码
如果项⽬中GET和POST业务功能相同的话,可以在doGet()⽅法中调⽤doPost()
三、Request域对象
[Request对象既可以代表客户端向服务器的请求,也可以当做暂存数据的域对象]
3.1-什么是域对象
域对象初学者可以理解为⼀个容器,可以暂存String-Object这种key-value形式的数据
域对象保存时间是不同的,有的域对象保存时间在⼀次请求中;有的域对象保存时间在⼀次会话中;有的域对象保存时间在整个应⽤中。其中Request域对象保存时间只在⼀次请求中,也就是说
⼀次请求完毕后,Request域对象就销毁了,⼀旦Request域对象销毁,那么存在其中的数据也
就不存在了。
3.2-为什么需要域对象jsp中文全称
有时我们的业务,⼀个Servlet完成不了,需要另⼀个Servlet帮忙,这就是说,
我们需要在⼆个或多个Servlet之间传递数据,域对象就负责完成这项任务
3.3-Request对象有⼆层含义:
01——代表客户端向服务器的请求对象,如getParameter(“username”)
02——代表可以暂存数据的域对象,如下如⽰API
3.4-Request作为域对象常⽤的API
setAttribute():向域对象中绑定key=value形式的数据
getAttribute():从域对象中根据keyvalue,如果取到不到,返回NULL
手机怎么执行sh脚本文件removeAttribute():从域对象中删除key对应的value
ServletContext和request两个域对象的⽐较
string index out of range 6四、Request转发
c语言中合法标识符4.1-多个Servlet配合⼯作
section和part的区别有些时候,⼀个Servlet不能很好的完成业务⼯作,需要另⼀
个Servlet来配合。这就是说,很有可能⼀个Servlet需要将
流程交由另⼀个Servlet,此时就要⽤转发或重定向这⼆个
技术了,这⾥我们谈Request转发。
4.2-要转发必须得⽤RequestDispatcher().forward()⽅法
4.3-转发是服务器内部的事,与浏览器⽆关,所以浏览器的地址栏不会变,
原来浏览器以什么⽅式提交数据,转发到另⼀个Servlet依然执⾏对应的
doXxx⽅法。
浏览器以POST提交—第⼀个Servlet::doPost—第⼆个Servlet::doPost
浏览器以GET提交—第⼀个Servlet::doGet—第⼆个Servlet::doGet
注意:转发不限于Servlet之间,Servlet也可以转发到HTML和JSP页⾯

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。