概念: Java Server Pages,Java服务端页面
一种动态的网页技术,其中即可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容
JSP = HTML + Java
JSP的作用:简化开发,避免了在Servlet中直接输出HTML标签
JSP本质上就是一个Servlet
JSP在被访问时,由JSP容器(Tomcat)将其转换为Java文件(Servlet),再由JSP容器(Tomcat)将其编译,最终对外提供服务的其实就是这个字节码文件
JSP脚本:
JSP脚本用于再JSP页面内定义Java代码
JSP脚本分类:
<%...%>: 内容会直接放到_jspService()方法之中
<%=...%>: 内容会放到out.print()中,作为out.print()的参数
<%!...%>: 内容会放到_jspService()方法之外,被类直接包含
JSP缺点:
由于JSP页面内,即可以定义HTML标签,又可以定义Java代码,造成了一下问题:
1、书写麻烦:特别是复杂的页面
2、阅读麻烦
3、复杂度高:运行需要依赖与各种环境,JRE,JSP容器,JavaEE...
4、占内存和磁盘:JSP会自动生成Java和.class文件占磁盘,运行的是.class文件占内存
5、调试困难:出错后,需要找到自动生成的.java文件进行调试
6、不利于团队协作:前端人员不会Java,后端人员不精HTML
7、... (JSP已逐渐退出历史舞台)
发展历程:Servlet -> JSP -> Servlet + JSP -> Servlet + html + ajax
不要直接在JSP里写Java代码! Servlet:逻辑处理,封装数据
JSP: 获取数据,遍历展现数据
EL表达式:Expression Language表达式语言,用于简化JSP页面内的Java代码
主要功能:获取数据
语法:${expression} ${brands}: 获取域中存储的key为brands的数据
JavaWeb中的四大域对象:
1、page: 当前页面有效
2、request: 当前请求有效
3、session: 当前会话有效
4、application: 当前应用有效
el表达式获取数据,会依次从这4个域中寻找,直到找到为止
JSP不识别EL表达式问题的解决方法:
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false"%>
在这个位置加上isELIgnored="false"就可以了
JSTL标签:
JSP标准标签库(Jsp Standarded Tag Library),使用标签取代JSP页面上的Java代码
JSTL快速入门:
1、导入坐标:
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
2、在JSP页面上引入JSTL标签库
3、使用
<c:if>: 来完成逻辑判断,替换java if else
<c:forEach>: 相当于for循环 items:被遍历的容器 var:遍历产生的临时变量 varStatus:遍历状态对象 通常用来序号,index表示从零开始 count表示从一开始
begin: 开始数 end: 结束数 step: 步长