一、JSP
JSP(Java Server Page): 是一种服务端的页面
JSP = HTML + Java 在HTML页面中嵌入Java代码
JSP本质: 就是Servlet,JSP会翻译为Servlet,在编译运行Servlet的service方法输出HTML到响应正文
二、JSP页面的组成部分
-
HTML代码部分
转为servlet中service方法的out.write("HTML代码");
-
JSP指令: 告诉JSP引擎如果处理JSP页面
<%@ 指令 属性="值"... %>
<%@ page %>
contentTyep属性: 设置页面类型
转为servlet: response.setContentType("text/html;charset=UTF-8");
language="java" 属性: 设置嵌入HTML的脚本的语言
默认是Java
-
Java部分
<%
Java代码
%>
本质上就是在Servlet的service方式中写的Java代码
<%= %> 等价于print() 方法
三、MVC设计模式
上面讲的Java脚本并不是JSP的常规用法,因为JSP页面内如果编写了Java业务逻辑代码,不是很好维护,HTML代码和Java代码混杂了,如果HTML代码有修改,那么JSP必须等待前端修改完毕后才能去开发JSP页面。
学习期间可以使用JSP做案例或项目,正常企业里中大型项目不再使用JSP,推荐前后端分离方式开发,提高开发效率以及降低维护成不。
学习JSP通常会使用在MVC设计模式中充当View的角色,什么是MVC设计模式?
3.1 EL表达式
${EL表达式} : EL expression language
${属性名称}
重点: EL表达式从域对象中根据属性名称取出值,域对象从
pageContext -> requestScope -> sessionScope -> applicationScope
顺序找key
${1+1} EL可以做一些简单运算
3.2 JSTL
JSP Standard Tag Library : JSP 标准标签库
使用JSTL,需要<%@ taglib %>指令,同时还需要导入Jar包
prefix属性:设置前缀, 指定的前缀代表整个标签库
uri属性: 设置标签库的资源路径
<c:if test=""></c:if> 判断test后面的表达式是否为true,如果为true,输出标签体的内容 <c:foreach> 类似:for(Student s : stus) items属性:设置需要遍历的集合(stus) var属性: 设置变量,将从集合中取出的元素赋值的变量(s) 该标签会将var设置变量存入域对象中,所以可以使用EL表达式取出这个变量 varStatus属性:设置状态变量,这个状态变量JSP自动产生, ${对象.属性名称} 调用对象的属性对应的get方法取出并输出