28-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代码的格式

  1. <% java代码 %>:定义的java代码,在service方法中
    
  2. <%! java代码 %>:定义的java代码在jsp转换后的servlet的成员位置
    
  3. <%= 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()输出之前
  6. config -> ServletConfig

  7. page -> 当前页面的对象 this

  8. *pageContext -> pageContext

    1. 在当前页面中共享数据(域对象)
    2. 获取其他8个内置对象
  9. *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内置对象
  7. 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" %>
    
  3. 使用标签

3.3 常用标签

3.3.1 if
  1. 属性:

    1. test:接收条件表达式

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

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

  2. 代码

    
    	登录
    	注册
    
    
    	欢迎
    	退出
    
    
3.3.2 choose

c:choose 相当于 java 中的 switch

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

c:when 的必须属性:test

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

演示:


	A
	B
	C
	D
	E

3.4 forEach

  1. 相当于 java 中的 普通 for 循环

    1. 属性

      1. begin:开始值
      2. end:结束值
      3. var:临时变量
      4. step:步长
      5. varStatus:循环状态的对象
        1. count:次数
    2. 代码

      
      	${t }---${s.count }
  2. 相当于 java 中的增强 for 循环

    1. 属性:

      1. items:容器对象
      2. var:临时变量
      3. varStatus:循环状态的对象
        1. index:索引
        2. count:次数
    2. 代码:

      
      	${t }---${s.index }---${s.count }
      items:存储在域对象中的容器 var:用于标识容器中每一个元素的临时变量

你可能感兴趣的:(java_知识梳理)