0
点赞
收藏
分享

微信扫一扫

Jsp

一,Jsp

1.1 概念

jsp:java server pages,java 服务器页面

jsp是一种特殊的页面,可以在html中嵌入java代码的页面,以 .jsp 结尾

简化 java 代码的书写

jsp的本质是一个Servlet,在第一次访问jsp页面时,这个jsp中的java代码会经历编译和运行

jsp被翻译成的java代码继承了HttpJspBase,HttpJspBase继承HttpServlet

1.2 jsp脚本

在jsp中定义java代码的格式

<% java代码 %>:定义的java代码,在service方法中
<%! java代码 %>:定义的java代码在jsp转换后的servlet的成员位置
<%= java代码 %>:定义的java代码会在service方法的print()方法的参数中,“=”后的内容是什么,在页面中就输出什么



1.3 jsp的内置对象

内置对象:在jsp页面中不需要手动创建和获取,可以直接使用的对象

jsp中一共有9个内置对象

  1. *request -> HttpServletRequest
  2. *response -> HttpServletResponse
  3. *session -> HttpSession
  4. *application -> ServletContext
  5. out -> JspWriter
    注:
  1. out.write():在服务端响应输出内容前,输出的内容会先存储在out缓冲区中
  2. response.getWriter().write():在服务端响应输出内容前,输出的内容会先存储在response缓冲区中
  3. response缓冲区一定优先于out缓冲区被访问,所以使用response.getWriter().write()输出的内容一定在out.write()输出之前
  1. config -> ServletConfig
  2. page -> 当前页面的对象 this
  3. *pageContext -> pageContext
  1. 在当前页面中共享数据(域对象)
  2. 获取其他8个内置对象
  1. *exception -> Throwable


1.4 jsp的指令

格式:

<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>


1.4.1 page

配置当前的jsp页面,必须写在页面的第一行

<%@ page 属性名1=属性值1 属性名2=属性值2 ... %>

  1. language:表示在当前jsp中嵌入的是什么指定的语言
  2. contentType:配置当前jsp响应给客户端时的编码
  3. pageEncoding:当前文档保存的编码格式
  4. import:导包
  5. errorPage:当前页面发生异常后,跳转到某个指定页面,由errorPage来配置,不需要写虚拟路径
  6. isErrorPage:配置在发生异常后跳转到的页面
  1. true:当前页面可以使用exception内置对象
  2. false:默认值,当前页面不可以使用exception内置对象
  1. isELIgnored:配置当前页面是否忽略EL表达式
  1. true:表示忽略EL表达式,EL表达式会按照字符串原样数据
  2. false:默认,不忽略EL表达式


1.4.2 include

在当前页面中去嵌入指定的其他页面

<%@ include file="资源名" %>


1.4.3 taglib

专门用于导入标签库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


1.5 注释

java:

  1. //
  2. /* */
  3. /** */

css:

  1. /* */

js:

  1. //
  2. /* */

html:


jsp:

  1. <%-- --%>


二,EL

1.1 概念

概念:Expression Language 表达式语言

作用:简化jsp中java代码的编写,专门用于获取数据

语法:${ 表达式 }

注:

  1. jsp默认支持el表达式
  2. 要忽略el表达式
  1. 忽略页面中的所有el表达式:在jsp的page指令下配置isELIgnored=“true”
  2. 忽略指定的某一句el

\${ 表达式 }




1.2 运算符

  1. 算术运算符:+、 -、 *、 /(div)、 %(mod)
  2. 比较运算符:>、 <、 >=、 <=、 ==、 !=
  3. 逻辑运算符:&&(and)、 ||(or)、 !(not)
  4. 空运算符:empty,作用:判断字符串、集合、数组对象是否为null或者长度是否为0


1.3 获取域对象中的数据

语法:${ 域对象的名称 . 键的名称 }

域对象的名称:

  1. pageScope -> pageContext
  2. requestScope -> request
  3. sessionScope -> session
  4. applicationScope -> application

注:

  1. 如果指定的域中没有这个键,那么什么也不显示
  2. 可以简化成 ${ 键的名称 },此时系统会根据域的范围大小,以从小到大的顺序来查询数据,直到找到为止,pageScope < requestScope < sessionScope < applicationScope


1.4 获取对象

  1. 获取自定义对象的值
    语法:${ 域对象的名称 . 键的名称 . 属性名 }
    本质:调用对象的getter方法,
    例如 ${ user . name } user :键的名称,name:getName -> Name -> name
  2. 获取List集合中的元素
    语法:${ 域对象的名称 . 键的名称[ 索引 ] }
  3. 获取Map集合中的元素
    语法:
  1. ${ 域对象的名称 . 键的名称 . Map中的键 }
  2. ${ 域对象的名称 . 键的名称 [" Map中的键 "] }


1.5 使用 el 动态的获取虚拟路径



${ pageContext.request.contextPath }


三,JSTL

3.1 概念

概念:jsp standard tag library,jsp标准标签库

它是由Apache组织提供的开源苗费的jsp标签库

作用:简化jsp页面的java代码

3.2 使用步骤

  1. 导入jstl相关的jar包,javax.servlet.jsp.jstl.jar 和 jstl-impl.jar
  2. 引入标签库:在jsp中使用taglib指令

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

  1. 使用标签


3.3 常用标签

3.3.1 if

  1. 属性:
  1. test:接收条件表达式
  1. 条件表达式的结果为true,则执行if标签体内容的代码
  2. 条件表达式的结果为false,则不执行if标签体内容的代码

注:c:if 标签没有对应 else 标签,如果需要有对立的else情况,需要重新定义一个 c:if

  1. 代码

<c:if test="${ empty arr }">
<a>登录</a>
<a>注册</a>
</c:if>
<c:if test="${ not empty arr }">
<a>欢迎</a>
<a>退出</a>
</c:if>



3.3.2 choose

c:choose 相当于 java 中的 switch

c:choose 标签的子标签 c:when ,相当于 java 中的 case

c:when 的必须属性:test

c:choose 标签的子标签 c:otherwise ,相当于 java 中的 default

演示:

<c:choose>
<c:when test="${ score >= 92.973 and score <= 100 }">A</c:when>
<c:when test="${ score >= 87.63 and score < 92.973 }">B</c:when>
<c:when test="${ score >= 76.44 and score < 87.63 }">C</c:when>
<c:when test="${ score >= 73.12 and score < 76.44 }">D</c:when>
<c:otherwise>E</c:otherwise>
</c:choose>


3.4 forEach

  1. 相当于 java 中的 普通 for 循环
  1. 属性
  1. begin:开始值
  2. end:结束值
  3. var:临时变量
  4. step:步长
  5. varStatus:循环状态的对象
  1. count:次数

  1. 代码

<c:forEach  var="t"  begin="1" end="10" step="2"varStatus="s">
${t }---${s.count }<br>
</c:forEach>


  1. 相当于 java 中的增强 for 循环
  1. 属性:
  1. items:容器对象
  2. var:临时变量
  3. varStatus:循环状态的对象
  1. index:索引
  2. count:次数

  1. 代码:

<c:forEach items="${list }" var="t" varStatus="s">
${t }---${s.index }---${s.count }<br>
</c:forEach>
items:存储在域对象中的容器
var:用于标识容器中每一个元素的临时变量





举报

相关推荐

0 条评论