JSP 语法
JSP(Java Server Pages)页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。 本质:java + html == jsp == servlet
jsp注释
<%-- 这是 jsp 注释 --%>
关于jsp注释、java注释、html注释的区别:
jsp注释:仅jsp文件中可见
java注释:jsp、java文件中可见
html注释:jsp、java、html文件中都可见
jsp指令
page指令:
语法:<%@page 属性1="值1" ... 属性n="值n" %>
<%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<%@page import="java.io.*,java.util.*" %>
<%@page import="com.lsy.*" %>
属性说明: 1) import:指定引用的外部类文件,是page指令中,唯一可多次设置的属性; 2) pageEncoding: 设置jsp页面本身的编码 3) contentType: 告诉浏览器以何种编码显示jsp页面中的内容; 4) language: 指定jsp页面采用的脚本语言,由于jsp目前只支持java,所以默认值即是java,故可省; 5) session: 设置当前页面是否参与session会话,默认为true,值为false时session将被禁用; 6) errorPage: 指定错误处理页面。当页面出现异常错误时,指定的errorPage将会捕获错误信息; 7) isErrorPage: 设置页面是否为错误处理页面,默认值为false.值为true时,页面将可存取exception对象,并通过该对象取得从发生错误的网页传出的信息。
include指令:引入其他jsp页面
<%@include file="other.jsp" %> taglib指令: 引入标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" %>
jsp 小脚本
<%
//此处写 java 代码
%>
jsp表达式
<%= "JSP is short for Java Server Pages" %>
<%= 1+2 %>
<%= "hello".length() %>
jsp声明
声明servlet类的成员属性和方法
<%!
int global = 10;
%>
EL 表达式
从 JSP 2.0开始,EL(Expression Language)表达式是作为标准支持的,JSP 中可以直接使用,无需引入额外的jar包。
目的
简化 JSP 输出表达式(<%= %>)
基本语法
${ EL 表达式 }
EL 表达式支持的操作符
点操作符:通过点操作符访问对象的属性;eg: ${user.name}、${user.my.name}
[]操作符:
同点操作符,也可访问对象的属性,eg:${user["name"]};
当存取的属性中含有特殊字符时,必须用[];eg: ${user["my-id"]},中括号中单引号也可以。
动态取值时,必须用[];eg:${user[index]},index是变量,所以无引号。
算术型:+ - * /、div %、mod -(取反)
EL运算符中的“+”的操作数可以是数字或者可以转换为数字的字符串: ${1+'1'}输出 2。
关系型:> gt、 >= ge、 < lt 、<= le、 == eq、 != ne
逻辑型:&& and、|| or、! not
条件表达式:A ? B : C
判空(null)操作符:empty
EL 11大隐式(内置)对象
范围对象:pageScope、requestScope、sessionScope、applicationScope
在不指定范围的情况下,EL会依此从pageContext -> request -> session -> application 中查找;如 EL在解析${user} 时,首先会从pageContext中查找 user,没有则继续在request中查找user......
请求参数
param(单个参数)
paramValues(数组,多个同名参数)
请求头:header、headerValues
初始化参数:initParam
cookie
${cookie.mycookie.name} 获得mycookie的名称
${cookie.mycookie.value} 获得mycookie的值
JSP隐式对象:pageContext(JSP和EL的公共对象,为EL访问JSP对象提供了桥梁)
${pageContext.page}获取page 对象${pageContext.request}获取request 对象${pageContext.response}获取response 对象${pageContext.session}获取session 对象${pageContext.out}获取out 对象${pageContext.exception}获取exception 对象${pageContext.servletContext}获取servletContext 对象
注意事项
EL表达式操作的对象不存在时,返回空值而不是null。
比如request 对象有 getContextPath()方法,程序中可以通过${request.contextPath} 调用此方法获取到路径值,具体到request有没有contextPath这个属性,并不重要,因为EL是将contextPath首字母大写后,在首部加上get构造出getContextPath()方法来获取值的。所以当用EL操作对象属性时,属性一定要提供相关的getter方法。
JSTL
JSTL(Jsp Standard Tag Library),即 JSP的标准标签库,作用是简化 JSP 编程。使用前,需引入下面的依赖。
tomcat 9
核心标签库
set、out、remove
if
hello,${name}
choose...when...otherwise
成绩优秀
成绩良好
不及格
forEach、forTokens
${hy }
${item }
redirect 重定向到新的路径