导图社区 day29-request
java,request,请求,面试题,javaweb,IT,JAVA,域对象,存数据,取数据,删除数据,域对象的区别,什么是域对象
安卓练手小项目,编程,比赛,读书笔记,it,技术,安卓,Android,Studio等。可供您参考学习。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
请求和响应
ServletContext
是一个域对象【面试】
域对象:Servlet规范提供的,可以临时存储数据的对象;
域对象里的数据,在其作用范围里可以共享
不同域对象,存取数据的方法相同
存数据:setAttribute(String name, Object value)
取数据:getAttribute(String name)
删数据:removeAttribute(String name)
不同域对象,区别是作用范围不同
何时创建:服务器启动时
何时销毁:服务器关闭时
作用范围:整个web应用
获取web应用里的资源
获取src里的资源,使用类加载器
类加载器.getResourceAsStream("文件在src里的路径")
获取web里的资源,使用ServletContext
servletContext.getResourceAsStream("文件在web里的路径");
HTTP协议
介绍
是客户端和服务端之间,数据交互时的格式规范
组成
HTTP请求
请求行
本次请求的基本信息
格式:请求方式 请求资源 协议版本
例如:POST /day10/login HTTP/1.1
HTTP协议常见版本
1.0短连接
客户端和服务端建立连接
之后有一次请求响应;然后连接断开
1.1长连接
之后可以有多次请求和响应;连接是保持状态
请求头
本次请求的附加信息
格式:一行一个键值对,一个键值对是一个请求头,一次请求可以有多个请求头
比如:Host:localhost
Referer头示例
在哪个页面发起的本次请求
防盗链:在服务端接收请求头Referer的值,判断是否是自己的页面地址
请求体
本次请求的正文内容,是提交的表单数据
格式:name=value&name=value&...
注意:并非任何时候都有请求体,什么时候有
必须是POST提交
提交的有表单数据
get请求和post请求的区别
get请求:
在请求行里提交参数,会显示到地址栏
不安全
有长度限制
post请求:
在请求体里提交参数,不会显示到地址栏
相对安全
没有长度限制
HTTP响应
服务端返回给客户端的
响应行:
本次响应的基本信息
格式:协议版本 响应状态码
比如:HTTP/1.1 200
常见的响应状态码
200:一切正常
302:重定向,让浏览器跳转
304:让浏览器取本地缓存
404:找不到资源
500:服务器内部错误
响应头
本次响应的附加信息
格式:一行一个键值对,一个键值对是一个响应头,一次响应有多个响应头
比如:Content-Length:12
响应体
本次响应的正文内容,会显示到浏览器页面上
格式:没有固定格式,请求什么就响应什么
response设置响应
设置响应行
设置响应状态码:response.setStatus(int code)
设置错误状态码:response.sendError(int code)
状态码:2xx,3xx; 错误码:4xx, 5xx
设置响应头
设置响应头:response.setHeader(String name, String value)
追加响应头:response.addHeader(String name, String value)
重定向跳转:response.sendRedirect("跳转的路径")
设置响应体
字符流方式
response.setContentType("text/html;charset=utf-8")
本质是设置了响应头content-type,值是text/html;charset=utf-8
response.getWriter().print("显示到页面上的内容")
字节流方式
response.setHeader("Content-Disposition","attachment;filename=下载框里的文件名称")
如果加上这行代码,表示下载文件
如果不加这行代码,表示文件要显示到浏览器上
ServletOutputStream os = response.getOutpotStream()
request获取请求
获取请求数据
获取请求行
获取请求方式:request.getMethod()
获取项目路径:request.getContextPath()
获取请求资源:
request.getRequestURI()
request.getRequestURL()
获取请求头
request.getHeader(String name)
获取请求参数
解决中文乱码
get请求:不乱码,Tomcat8帮我们解决了
post请求:乱码,在获取参数之前执行方法
request.setCharacterEncoding("utf-8")
API
String value = request.getParameter(String name)
String[] values = request.getParameterValues(String name)
Map<String,String[]> map = request.getParameterMap()
其它作用
是一个域对象
不同域对象存取数据的方法
不同域对象区别是作用范围不同
request
何时创建:一次请求开始
何时销毁:一次请求结束
作用范围:一次请求中
实现请求转发跳转
请求转发和重定向的区别
请求转发
1次请求
浏览器地址栏不变
服务器跳转
重定向
2次请求
浏览器地址栏会变
浏览器跳转
什么时候用请求转发?
如果跳转时有数据要传递,就用请求转发
否则就用重定向
请求转发的API
request.getRequestDispatcher("/资源路径").forward(request, response)
路径的写法