Http协议
什么是http协议?
- 超文本传输协议。
- 对器客户端和 服务器端之间数据传输的格式规范。
常见http请求的方法?
- get:用于请求已经被URI(统一资源标识符)识别的资源。
- post:用于传输信息给服务器。
- head:获得报文的头部。主要用于测试URI是否有效。
- put:传输文件。
- delete:删除文件。
get和post请求的区别?
- get的请求中的参数以key和value组成表现在URL之后,这种情况下用户可以看到,post是将参数封装到请求体中,用户看不到。post比get的传送安全。
- get的传输的数量小(1024kb),因为url的长度有限,但是效率高。post的传输数量大,上传文件只能用post。
- get只支持ASCII字符,向服务器传送的字符可能乱码,post支持标准字符集,可以正确的传递中文。
- get的重点是从服务器获取资源,post的重点是向服务器传输数据。
http协议由什么组成?
- 请求报文:
- 请求行:请求方法,uri,http协议版本。
- 请求头:cookie,域内容等
- 请求体:表单数据等。
- 响应报文:
- 响应行:状态码,http版本。
- 响应头:服务器名字。
- 响应体:
常见的http协议状态码?
- 200:成功。
- 301、302:重定向。
- 400:url格式写错了。服务器无法识别。
- 404:url的路径位置写错了,服务器找不到该资源。
- 500:服务器内部错误,程序报错了。
- 503:服务器正忙。
http1.1的新特性?
- 默认持久连接,节省通信量,只要客户端或者服务端没有明确提出断开tcp连接,就会保持连接,可以多次请求。
- 客户端可以一次发送多个http请求,而不用等一个一个响应。
http和https的区别?
- http是不安全的,https是安全的。
- HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
- HTTP 无法加密,而HTTPS 对传输的数据进行加密
- HTTP无需证书,而HTTPS 需要SSL证书
- 总结:HTTPS就是HTTP加上加密处理(一般是SSL安全通信线路)+认证+完整性保护
重定向和转发的区别?
1)重定向两次请求,转发一次请求
2)重定向地址栏的地址变化,转发地址不变
3)重新定向可以访问外部网站 转发只能访问内部资源
4)转发的性能要优于重定向
Tomcat容器
什么是tomcat容器?
- tomcat是免费开源的web轻量级应用服务器,适合中小型系统和并发量不是很高的系统,支持servlet和jsp。
tomcat的目录结构?
tomcat的作用什么?
- web应用的容器。
- tomcat引擎可以解析请求的资源地址。
- 创建servlet对象。
- servlet对象调用service方法,创建代表请求的requset对象,和代表相应的response对象。
servlet
servlet规范包含的三个技术点?
- servlet技术。
- filter技术。
- listener技术。
servlet的生命周期?servlet的常见方法?
servlet的运行过程?
- 在页面输入一个地址。浏览器组装成http请求(请求行、头、体),发送给服务器,服务器找到web.xml,找到url虚拟路径,通过映射找到类的全包名,就找到自己编写的类。找到doGet或者doPost方法,里面有两个参数httpServletRequest和httpServletResponse,tomcat引擎会解析封装成程序可以识别的响应对象,让程序执行,返回的响应tomcat引擎也会解析封装成浏览器可以识别的信息,返回给客户端浏览器,最终呈现在web端。
什么是servletContext?
- servlet上下文对象。
- 是一个web应用的环境的对象。就是一个web应用。一个web应用只有一个servletContext对象,但有很多servlet对象。
- 内部封装的web应用的信息。
怎样获取servletContext对象?
- this.getservletContext();获取。
servletContext对象的作用?
- 获取web应用中任何资源的绝对路径。
- 他是一个域对象。存储数据的区域就是域对象。它的作用范围是整个web应用,所有的动态web资源都可以随意的向servletcontext域中存取数据,数据可以共享。
request和response的常用方法?
setAttribute()在Request域中存储数据
setCharacterEncoding()设置请求参数的编码方式,只对post请求有效
getSession()获取Session对象
sendRedirect()重定向
getOutputStream()获取通向浏览器的字节流(同一次请求处理中,字节流和字符流不能同时存在)
getWriter()获取通向浏览器的字符流(同一次请求处理中,字节流和字符流不能同时存在)
filter
- filter是对客户端访问资源的过滤,符合条件放行,并且可以对目标资源访问前后进行逻辑处理。
filter的作用?
- 公共代码提取
- 可以对request和response中的方法进行增强
- 进行权限控制
filter的实现步骤?
- 实现Filter接口,(servlet包下)。
- 实现接口中尚未实现的方法(着重实现doFilter方法)
- 3)在web.xml中进行配置(主要是配置要对哪些资源进行过滤)
filter生命周期?
- Filter何时创建:服务器启动时就创建该filter对象
- Filter何时销毁:服务器关闭时filter销毁
doFilter的参数?
- request:内部封装的是客户端的http请求的信息。
- response:代表响应。
- FilterChain:过滤器链对象,通过该对象的doFilter方法可以放行该请求。
jsp
jsp的运行原理?
- jsp在第一次被访问时会被Web容器翻译成servlet,在执行过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
PS:被翻译后的servlet在Tomcat的work目录中可以找到
jsp怎么引入jstl标签库?
- taglib指令
在jsp页面中引入标签库(jstl标签库、struts2标签库)
格式:<%@ taglib uri=“标签库地址” prefix=“前缀”%>
jsp内置/隐式对象
jsp中的四大域?
jsp页面静态包含和动态包含的区别?
静态包含和动态包含的区别
静态包含在翻译的时候,将多个JSP合并翻译成了一个Servlert。(先合并在编译)
动态包含在翻译的时候,每个JSP文件都翻译成了对应Servlet,在程 序运行加载到JVM中的时候动态合并
动态包含可以传递参数
如何选择:如果需要传递参数就必须选择动态包含
el表达式的作用?
- EL表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写。EL最主要的作用是获得四大域中的数据,格式${EL表达式}
el表达式获取key对应的value的顺序?
- 依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后将不在向后寻找
jstl标准标签库的核心库?
- c标签库(需要导包)
常用的c标签?
session
什么是session?
- session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是-使用散列表)来保存信息。
cookie和session的区别?
- cookie数据存放在客户的浏览器上,session数据放在服务器上。
- cookie不是很安全,别人可以分七存放在本地的cookie并进行cookie欺骗,考虑到安全的应当使用session。
- session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能,如果考虑服务端性能,应当使用cookie。
- 单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
- 所以建议,将用户名密码等重要信息保存在session中,其他信息可以保留在cookie中。
cookie
cookie和浏览器缓存有什么区别?
- cookie是浏览器缓存的一部分,浏览器缓存可以缓存任意内容,比如历史纪录,cookie是服务器让浏览器缓存的数据。
什么是cookie?
- cookie是浏览器端保存数据的一种方式,相当于一张会员卡,浏览器会记住这张会员卡的用户名和密码,当请求再次从服务器发送时,浏览器解析http协议请求头中的cookie,就会识别这次请求。第一次访问没有cookie,浏览器就会记录在cookie的缓存区。
cookie和session的基本使用?
- 保存用户名和密码。
- 保存上次登录时间。