JSP(Java Server Page)
是原SUN公司开发的一款运行在Web服务器中的动态Web技术之一,属于JavaEE体系架构之一
JSP最佳实践,即MVC模式
在长期的实战中,人们得出如下习惯用法:
1.显示View:JSP适合做页面的显示,例如:显示登录成功界面
2.控制Controller:Servlet适合做业务控制操作,例如:接收用户请求,将用户请求的参数值封装到JavaBean对象中去,调用其它Java类处理,如果有结果,将结果放入到域对象中去,转发或重定向到显示结果的JSP页面
3.功能Model:Bean,即就是普通Java类,该类中封装大量的业务操作
JSP共有三种指令
01——page指令
<%@ page 属性名=”属性值” %>
一个指令可以有多个属性,属性名="属性值"
指令通常放在JSP的第一行,第一行前不要有任何空白符和注释
02——include指令
<%@ include file=”被包含的jsp页面的路径” %>
在翻译成Servlet时,就将被包含的JSP页面中的内容翻译成Servlet中了,即多个JSP只会翻译成1个Servlet,静态包含
03——taglib指令
在JSP页面中需要引用第三方的标签
<%@ taglib uri=”名称空间” prefix=”标签的前缀”%>
JSP中有9个内置对象
request 请求对象,请求域对象
response 响应对象
session 会话域对象
application 应用域对象
config 获取某个Servlet的初始化参数
out JSP专用的字符输出对象
exception 异常对象
page JSP页面自己
pageContext 当前域对象
**pageContext功能强大,其中有一个findAttribute()这个API,它会
依次从page->request->session->application这几个域对象,
pageContext 生命周期:页面范围有效
request 生命周期:请求范围有效
session 生命周期:会话范围有效
application 生命周期:应用范围有效
EL表达式
1 什么是EL(Expression Language)
EL是一种在JSP中使用的,由JSP引擎解析的特殊字符串
2 EL的作用
01——获取域对象数据(包括JavaBean,数组,集合)
EL会依次从page->request->session->application中依次查找字符串对应的值, 如果EL找不到,返回空白字符串””,不是null EL底层就是pageContext.findAttribute()这个API ${NAME}找不到返回”“ findAttribute(“NAME”)找不到返回null
02—— 执行运算
算术(+-*/),关系(>>=<<=!=和==),逻辑(&&||!)
EL中有11个内置(隐式)对象
pageContext 当前域对象
pageScope/requestScope/sessionScope
/applicationScope 域对象中key=value形式的Map对象,不是域对象
param/paramValues 用于获取请求行和体中的内容
header/headerValues 用于获取请求头中的内容
cookie 用于获取浏览器中Cookie的名和值
initParam 用户获取整个Web应用初始化参数
JSP之动作标签
1 什么是动作标签
是JSP内置标签,无需导入第三方的jar包,
该标签封装了一定的业务逻辑
2 常用的动作标签
01——<jsp:forward page=””/>
02——<jsp:include page=””/>,属于动态包含
静态包含:将多个JSP翻译成一个Servlet
动态包含:将多个JSP翻译成多个Servlet
03——<jsp:param name=”” value=””/>
JSP之JSTL标签
1 什么是JSTL标签
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的,在所有支持JSP的Web服务器中都可以运行。
2 为什么要用JSTL标签
其实不管是动作标签,EL,还是JSTL,他们都是为了在JSP中,封装业务操作,但又不想在JSP中书写大量的<%%>符号,达到页面的整体统一,让人觉得JSP页面都是由标签组成。但这个标签本质上还是与标签有区别的。
3 常用的JSTL标签
01——c:if
02——c:choose/c:when/c:otherwise
03——c:forEach
要在jsp声明一个指令: <%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8”%>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
<html>
<head>
<title>My JSP 'date.jsp' starting page</title>
</head>
<body>
<%
List<String> list = new ArrayList<String>();
list.add("HTML");
list.add("CSS");
list.add("JS");
list.add("XML");
list.add("AJAX");
list.add("TOMCAT");
request.setAttribute("LIST",list);
%>
<c:if test="${!empty LIST}">
<c:forEach var="course" items="${LIST}">
${course}<br/>
</c:forEach>
</c:if>
<hr/>
<c:choose>
<c:when test="${!empty LIST}">
<c:forEach var="course" items="${LIST}">
${course}<br/>
</c:forEach>
</c:when>
<c:otherwise>
查无数据
</c:otherwise>
</c:choose>
</body>
</html>