JSP
JavaServer Page动态网页技术标准,部署在服务器上
本质上是Servlet
JSP可以将Java代码和特定变动内容嵌⼊到静态的⻚⾯中,实现以静态⻚⾯为模板,动态⽣成其中的部分内容
JSP的弊端:过于臃肿,代码掺杂在一块,过于混乱
基本语法
<%.......%>写在Server里面
输出脚本:<%=.....%>翻译成out.print(),与直接输出的区别在于可以运行表达式
代码片段:<%=变量%>在控制台输出
JSP声明:<%!声明%>声明成员变量或方法
九大内置对象
PageContext:⻚⾯域
Request:HttpServletRequest(请求域)
Session:会话域
Application:上下⽂域
Response:HttpServletResponse
Out:Out对象是javax.servlet.jsp.JspWriter类的实例。主要⽤于向客户端浏览器输出数据。 类似于 response.getWriter() 所获取到的与前端交互的输出流
Config:ServletConfig
Page:当前⻚⾯的引⽤,就是this
Exception:该内置对象只有在错误⻚⾯中才会存在,封装了出现的异常
EL表达式
${......} --->调用get方法
常用的域:EL写法以及大小
pageContext --- ${pageScope.key} --- 1
request --- ${requestScope.key} --- 2
session --- ${sessionScope.key} --- 3
application --- ${applicationScope.key} --- 4
全文自动查找 --- ${key} --- 从小到大
标签库
Oracle Java Technologies | Oracle
常用标签:
<c:if test="${......}"></c:if>:相当于if
......
.......
</c:choose>:相当于Switch......case
<%--
items: 表示要遍历的集合,要使⽤EL
var: 变量名,表示集合中的每个元素对象
begin: 从哪个元素开始遍历,默认是0
end: 到哪个元素结束
varStatus: 表示⼀个对象名字,当前的⾏对象。 有四个属性:
first: 第1个元素返回true
last: 最后1个元素返回true
count: 遍历到当前元素时,⼀共遍历了⼏个元素,从1开始
index: 当前元素的索引号,从0开始
--%>
</c:forEach>:相当于foreach
三层架构
三层架构是我们在开发项目时后端划分代码的三个层次
分别为控制层、业务层、持久层
控制层负责:接收前端请求、调用业务层、响应视图/数据
1)前端参数的封装
2)全局异常的处理
3)请求参数格式化
业务层负责:接受控制层参数、调用持久层并计算业务逻辑,然后将数据返回给控制层
1)整个项目的业务核心地方
2)加密、解密
3)分页
持久层负责:接收业务层参数、查询数据库、将数据返回给业务层
1)预编译SQL语句
2)动态SQL
3)连接池管理
4)SQL注入
三层架构主要是后端开发将业务处理划分为三个层次,主要的好处是高内聚、低耦合(各司其职,代码结构清晰)
MVC
MVC考虑的是整个Web项目开发的一种流程,Web项目开发的一种思想,他为web开发提供了一种可以借鉴的思想,MVC提出了三个组件,分别是模型module、视图View、控制器Controller
模型:主要为后端的行为,负责处理一个请求到后端的核心业务逻辑,一般情况下后端会在模型的基础上再来划分新的层次
视图:主要为前端的行为,数据的渲染、前端的API、前端的js脚本、mock模型数据、node服务等
控制器:用于处理发送的请求,接收请求数据,并调用模型数据处理业务逻辑,然后决定跳转的页面
三层架构和MVC的异同点
相同点
出发点一样,简化开发,让多个组件/层次各司其职,提高代码内聚性,降低代码耦合度
不同点
MVC
确切来说是web项目开发的一种思想,这种思想只提供了一些标准(组件),并且规范了组件的具体工作内容,但是对组价内部的一些细节没有做太多的处理,MVC思考的范围是全局性,业务web项目包含了前端、后端等,不管是前端架构还是后端架构我们都可以从MVC中划分的组件再次细分
三层架构
比MVC要清晰很多,明确规定了开发就应该划分为三个层次,落实架构层面,比较倾向于后端的代码设计。当然三层架构也是一种思想,因为无论是前端还是后端或者是web项目还是传统的项目都可以按照三层架构的方式来规范自身的项目代码。