C/S架构的软件:客户端和服务器的软件,都是需要在PC端安装软件,就是有客户端的软件
B/S架构的软件:不需要安装到PC端,只需要一个浏览器即可。
HTTP 协议:
概述: 规定双方需要遵守的规则,就是用来规定浏览器于服务器需要遵守的规则
http 是一个超文本的传输协议,所有的www 文件都必须要遵守
作用: 视同来规范浏览器和服务器之间的数据传递
特点:
基于请求和响应的模型(一个请求对应一个响应)
请求和响应必须是成对出现的,http 的默认端口是 80 而https 的默认端口是 443
版本更改:
1.0: 表示每次响应后立即关闭连接,发送一个请求获得一个响应之后就会结束
1.1 : 不是在每次响应完之后,连接就会结束,而是当过一段时间之后,没有请求才会结束
GET和post 的区别:
get 的提交的参数会显示到地址栏上,而post不显示在地址栏中,是放在请求体中
get 有大小限制,大约在4K左右,post是没有大小限制的
get 没有请求体,因为数据在地址栏中,post 有请求体
servlet 的生命周期: 所谓的声明周期就是一个对象从创建到销毁的过程
1,当用户第一次访问servlet 时,会创建servlet 实例。然后init 方法执行
2,任何一次请求都会去创建一个新的线程访问 Servlet中service 的方法
3, 在Service 方法 内部,根据请求的不同方式调用doGet 或者do Post 方法
4,当服务器关闭或者项目从服务器中移除,Servlet 实例被销毁,destroy 方法会执行
会话技术session :
session 概述
cookie 本身是有大小和个数限制的,Session 是没有限制的,Cookie 保存在客户端 session保存在服务器端
Session的执行原理,是基于cookie 的
session 的获取 : request.getSession()
session 是一个域对象,可以用于保存用户的数据,范围为一次会话。
Session 的创建:
服务器,:服务器第一次使用request.getSession () 的时候创建 session,在jsp 中,创建的时间是在第一次访问jsp页面的时候,就会创建session 对象
sessio 的销毁: session 销毁,默认的过期时间是30分钟,非正常的关闭服务器,如果是正常的关闭服务器session 会序列化到磁盘,当服务器启动的时候,会执行反序列化回来,或者是手动的调用session.invalidate()方法进行销毁
执行的原理:
在打开浏览器第一次方法服务器的时候,服务器会自动为其创建一个sesison ,并通过cookie 技术将 sessionId 传递给客户端,以后客户端接着请求本应用中的其他资源的时候,会在请求头上添加(ciikie:jsession=客户端第一次拿到的session的id)
这样服务器在接受请求的时候,就会接收到sessionID,并根据id 在内存中找创建session 对象,
jsp:java 代码 + html 元素 + jsp
执行的过程
jsp会被翻译成servlet,存放在work 目录下,然后编译成class 进行执行(最终还是会编译成class 文件进行执行),
被编译完成后的 文件 会存放在tomcat/work/Catalina/location 目录下
jsp 中的三个指令:
page 指令
include 指令 <%@ include file=" 引入文件的路径 " %>
taglib 指令
page 指令 <%@page %> ---- 用于设置jsp 中的各种属性
Language:设置在jsp脚本中使用的语言,目前只能使用java
Contenttype:表示浏览器解析时候使用的编码,和request中的setContexttype一致
PageEncoding:表示在存储文件的时使用的编码,和在生成servlet时使用的编码
Import:导入包,可以出现多次,<%@ page import=”java.util.ArryList”%>
Extends:表示在生成servlet文件的时候,继承的类是那一个
AutoFush:表示out在使用时是否自动刷新
Buffer:表示out使用的缓存的大小,默认为8KB
Session:表示是否可以在jsp中使用session
IsELignored:设置jsp中是否忽略EL表达式
ErrorPage:表示当前页面出错后转发的页面,目标页面如果以/(当前应用),就是绝对路径
IsErrorPage:设置当前页面是否为错误页面(是在专门显示错误的页面设置),如果为true,则会自动创建exception对象,如果为false,则不创建exception对象。默认为false
include 用于引入其他的jsp 文件的
taglib 指令
作用 : 指示 jsp 引入 标签库
语法: <%@ taglib prefix ="x" uri="标签的uri 的路径" %>
例:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
jsp 的九大内置对象
request httpServletRequest
Response HttpServletResponse
session httpSession
Application ServletContext 、
page Object
PageContext pageContext
Config ServletConfig
Out JSPWriter
Exception Trowable
session HttpSession
在Servlet 中是在遇到getSession 的时候创建session对象,在jsp中,page指令中有session 的开启,为true 的时候就会创建
page Object
代表的是jsp 生成servlet 时的类的引用
out JSPWriter
Out和Request.getWriter() 的区别
out 是JSPWriter 对象,Request.getWriter() 获取的是pintWriter() 该两个输出都会有不同的缓存,Out 是在jspwriter 缓冲区中,Request .getWriter()是在 printWriter缓冲区中,但是printWriter() 缓冲区中进行输出,在输出的时候printWriter 中的 数据是优先输出的然后在输出jspWriter 中的数据
Exception Trowable
只有在jsp 中 开启了 isErrorbage 进行控制的,是在错误页面进行设置,只有当为true 的时候,才会创建exception 对象
四大域对象
requestScope Request HttpServletRequst (Servlet)
applicationScope Application ServletContext (Servlet)
sessionScope Session HttpSession (Servlet)
pageScope pageContext pageContext 获取其他的八个内置对象
注意: 在servlet中只有三大域对象 request applicatin session 但是在jsp中有四大域对象 request application session pagecontext
jsp 的动作标签:
<jsp:forword/> : 用于页面的转发
格式: <jsp:forward page="要转发的路径"></jsp:forward>
<jsp:include />:用于页面的包含
格式:<jsp:include page="包含的路径"></jsp:include>
<jsp:param />:在带有路径的标签下,用于参数的传递
<jsp:forward page="/JSP/index.jsp">
<jsp:param value="111" name="id"/>:value :表示值,name:表示名称
</jsp:forward>
el 表达式 :el 表达式 是为了使jsp 写起来更加简单,它提供了在jsp 中简化的表达式的方法,让jsp 代码更加简单
语法: ${el 表达式}
功能: 获取数据
条件 : el 表达式只能获取四大域中的数据
运算符:用于有属性的数据(map 和 对象)
在对集合进行操作的时候,使用点进行操作,但是如果map 中的key 有特殊的 符号 比如是 4.4 需要使用["4.4"] 进行操作