JSP概念
- JSP服务端页面
- 一种动态的网页技术,其中既可以定义HTML,CSS,JS等静态的内容,还可以定义Java代码等动态内容
- JSP=Java+HTML
JSP作用:
简化开发,避免了在Servlet中直接输入HTML标签
JSP快速入门
1.导入JSP坐标
groupId:javax.servlet.jsp
artifactId:jsp-api
version:2.2
scope:provided
2.创建JSP文件
3.编写HTML标签和Java代码
JSP原理
浏览器访问jsp文件时,Tomcat会自动将jsp转换成servlet(Java文件),再通过Tomcat自动编译,编译成字节码文件,真正响应的是这个字节码文件,所以,JSP本质上就是Servlet
JSP脚本
用于在JSP页面内定义Java代码
脚本分类
1.<%…%>:内容会直接放到_jspService()方法中,即放在main方法中
2.<%=…%>:内容会放到out.print()中,作为out.print()的参数,打印出来(直接在页面上输出)
3.<%!…%>:内容会放到_jspService()方法外,被类直接包含,即成员位置
JSP的缺点
由于JSP不利于团队协作,不利于阅读等等,现在主流开发方式为Servlet+HTML+AJAX 或 Servlet+JSP,其中Servlet负责逻辑处理,封装数据,JSP负责获取数据,遍历展现数据,不提倡在JSP中直接写Java代码,在Servlet中书写即可
但是获取数据和遍历数据不可避免的要在jsp中写Java代码,所以这两种方式可以用其他方式替换
Servlet和jsp配合使用的方法
servlet负责数据的获取和处理,将数据放到request域中,再转发到jsp中,由jsp来做展示
EL表达式
由于JSP的缺点,EL表达式用来替换获取数据的代码
语法
${expression}
如 ${brands} :获取域中存储的key为brands的数据
${cookie.key.value}:可用于页面获取Cookie数据,key指Cookie中的键,value指值
倘若无法显示,在jsp中的page标签加上isELIgnored=“false”,表示不忽略el表达式即可
JavaWeb中的四大域对象
- page:当前页面有效
- request:当前请求有效
- session:当前会话有效
- application:当前应用有效
这四个域对象范围逐渐递增
EL表达式获取数据,会依次从这四个域中寻找,直到找到为止
JSTL标签
用来替换循环遍历的代码
JSP标准标签库,使用标签取代JSP页面上的Java代码
JSTL入门
1.导入坐标
2.在JSP页面上引入JSTL标签库
3.使用
c:if 标签
来完成逻辑判断,替换Java中的if else
<c:if test=“true” ></c:if>
其中test为必须属性,引号包裹的是判断语句,若判断语句结果为true时,就会执行标签包裹范围内的语句,一般与EL表达式结合使用,由EL表达式获取数据,由JSTL标签来判断,从而执行相应代码
c:forEach 标签
相当于增强for循环
- items:被遍历的容器
- var:遍历产生的临时变量
- varStatus:遍历状态对象
- 属性1:count (从1开始排)
- 属性2:index (从0开始)
<c:forEach items="${brands}" var="brand">
</c:forEach>
相当于普通for循环
- begin:开始数
- end:结束数
- step:步长
- var: 遍历产生的临时变量
<c:forEach begin="0" end="10" step="1" var="i">
${i}
</c:forEach>
MVC模式
是一种分层开发的模式
- M:Model,业务模型(将数据交给控制器)
- V:View,视图,界面展示
- C:Controller,控制器,处理请求,调用模型(获取数据)和视图
在servlet+jsp的开发方式中:
- M:JavaBean类
- V:JSP
- C:Servlet
三层架构
- 数据访问层:对数据库的CRUD基本操作
- 业务逻辑层:对业务逻辑进行封装,组合数据访问层的功能,形成复杂的业务逻辑功能
- 表现层:接受请求,封装数据,调用业务逻辑层,响应数据