JSP初识

339 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

1、JSP简介

1、JSP(Java Server Pages):

概念:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准

JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

  • JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。 image.png
  • JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

xxx.jsp---->xxxServlet.java---->xxxServlet.class。

  • 在HTML中嵌入Java脚本语言 jsp页面可以写java由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令将生成的整个页面信息返回给客户端可以在html页面中写java代码

2、为什么要用jsp

jsp其实就是一个特殊的servlet,

  • 问题:有servlet了为什么还要用jsp呢?
  • 问题原因:普通的servlet虽然可以显示数据,但是我们要的可不仅仅是显示数据,我们还需要css,js...,使用servlet也可以完成css,js,的功能,但是编码太过麻烦。 普通的servlet不能简化操作,有一些大牛--》整出一套标准,既可以显示数据,又可以设置css和js,让操作更方便----》jsp。

3、JSP创建过程

  • 服务器根据接收到的客户请求来加载被请求的JSP文件
  • Web服务器中的JSP引擎将被加载的JSP文件转化为Servlet.java代码
  • JSP引擎将生成的Servlet.java代码编译成.class文件
  • 服务器执行这个.class文件
  • 服务器将执行结果发送到浏览器进行显示 image.png 组成部分
指令:
  作用:用于配置jsp页面,导入资源文件
  格式:<%@ 指令名称 属性名=属性值%>
  page 配置jsp页面
  <!--导入jar包-->
<%@ page import="java.util.List" %>  
<%@ page import="java.util.Map" %>
<!--设置页面的字符集编码 和mime 类型-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 taglib 导入标签库
 include 页面包含的,导入资源的文件
注释
  html注释 : 只能注释html代码
  jsp注释:<%-- --%> 所有都可以注释
内置对象:
  jsp九大内置对象:

image.png

java

四大域对象:域:作用域!!!

  • pageContext(当前页面)
  • request(一次请求)
  • session(一次会话)
  • application(服务器启动期间都可以用)

2、EL和JSTL

1、EL表达式 ${}

概念:Expression Language:表达式语言 ;

  • 作用:替换:<%=变量名%> ;原有的表达式缺点:html标签+java语法混合
  • EL表达式可以直接从四大域对象中取出数据。
  • 基本语法:${表达式}
  • 注意:jsp默认支持el表达式, 如果要忽略el表达式可以使用 \转义
  • 使用:a.运算 b.获取值:从四大域对象中取出数据

EL本质:获取的是对象中get属性的值(getName)

2、支持的运算符:

算术运算符:+ - * % 关系运算符:== != > < 逻辑运算符: and or not

语法:

a+b{a+b} {a>b} ${a>b and a>c}

3、值的获取

值的获取只能从域对象中获取(四大域pageContext,request,session,application)
语法1:${域名称.键名}
域名称
pageScope              -->pageContext域对象
requestScope           -->request域对象
sessionScope           -->session域对象
applicationScope       -->application域对象

4、EL隐式对象(11个)

作用域对象中,在指定的范围内起作用,本质上都是Map类型的集合,存储key-value, 通过key获取value值:

  • PageScope:当前页面
  • RequestScope:在当前的request中起作用,一次请求,A.jsp--->AServlet--->转发--->BServlet(一次请求)
  • SessionScope:在当前会话中起作用
  • ApplicationScope:类型:ServletContext;整个web应用;全局变量

备注:需要提前将数据以key-value的形式,存入其中的一个域对象中,然后就可以使用EL表达式在页面上获取。

  • 查找key的过程:【page】—>【request】—>【session】—>【application】;找到为止
  • 隐式对象:已经提前封装了数据,使用的时候可以直接获取

image.png MVC: Model 模型 view 视图 Controller控制器

5、pageContext:

image.png

6、标准标签库-JSTL

  • JSTL:Java Server Tag Library ;作用:为了替代:<% %>
  • JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
  • JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。
  • 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。根据JSTL标签所提供的功能,可以将其分为5个类别。 核心标签 格式化标签 SQL 标签 XML 标签 JSTL 函数 使用步骤

1、先引入jar包:

在这里插入图片描述

2、在页面上引入指令:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
if 相当于java代码中的if判断
  1.test是必须属性,里边可以写表达式 值得类型为 boolean
if(a>10){
}
  2.注意:这里没有else,如果想要else就再写一个< c:if>
for each标签语句
1.重复执行某段代码 for循环
属性:
begin :开始值===>int i = 0;
end:结束值  ===》 i<=6
var: 临时变量===> i
step:步进==> i++
2.遍历容器  
属性
items 容器对象
var: 临时变量
varStatus: 循环状态对象
index 索引
count 循环的次数

image.png image.png