JSP

JSP

1.什么是JSP

java Server Pages : java服务器端页面,和Servlet相同,用于动态Web技术!

特点:与HTML相似 写JSP就像是写HTML

区别:

  • HTML只给用户提供静态的数据
  • JSP页面中可以嵌入JAVA代码 ,为用户提供动态数据!

原理图
在这里插入图片描述

2.JSP原理解析

思路:JSP到底怎么执行的!

  • 服务器内部工作原理

Tomcat有一个work目录

在这里插入图片描述

IDEA使用Tomcat也会产生这个work目录

[
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet

JSP最终也会被转换成一个JAVA类

打开这个类的源码看看

会发现这个JAVA类继承了一个HttpJspBase接口

在这里插入图片描述

我们发现HttpJspBasek继承了HttpServlet类

JSP本质上就是一个Servlet!

1.判断请求
在这里插入图片描述

2.内置一些对象

在这里插入图片描述

3.输出页面前增加的代码
在这里插入图片描述

上面的这些对象可以在JSP中直接使用

可以理解为JSP是封装好一些方法对象的Servlet类

新建一个hello.jsp文件
在这里插入图片描述

打开服务器

打开这个hello.jsp文件
在这里插入图片描述

我们可以理解成当我们通过WEB服务器访问JSP页面时,JSP文件会自动转换为java文件 然后经过编译成为class文件(也就是Servlet)

在这里插入图片描述

3.JSP基本语法

JSP有自己的语法,作为JAVA技术的一种应用 支持JAVA语法!

3.1 JSP表达式

<%--JSP表达式
作用:把程序的输出输出到客户端
格式:<%=变量或者表达式%>
--%>
<%=new java.util.Date()%>

![](https://img-blog.csdnimg.cn/20200705202109865.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Jzbm1k,size_16,color_FFFFFF,t_70

3.2 JSP脚本片段

<%--JSP脚本片段--%>
格式 <% %>
<% 
   int  sum=0;
    for (int i = 0; i < 100; i++) {
        sum+=i;
    }
    out.write(sum);
%>

3.3 JSP声明

<%--JSP声明--%>
格式 <%! %>

<%!
static {
    System.out.println("正在加载 Servlet");
}
private  int ml=0;
public  void mll(){
    System.out.println("进入了mll方法");
}
%>

JSP声明:会被编译到JSP生成的JAVA类中!

脚本片段和表达式会被生成到 jspservice方法中

3.4 JSP注释

<%--JSP的注释--%>
<%--我是JSP的注释--%>

值得注意的是JSP的注释不会在网页上显示

3.5 JSP指令

如上图所示 :JSP 总共有三个指令

​ page指令 :用来设置一些页面信息
在这里插入图片描述

2个重点

  1. 设置错误页面
    在这里插入图片描述
    在这里插入图片描述

启动测试

在这里插入图片描述

我们也可以在web.xml里面定制错误页面

在这里插入图片描述

接下来我们访问一个没有资源的的网页 会出现404 错误 自动跳转到我们定制好的错误页面

在这里插入图片描述

include指令

作用:将多个网页的内容合成到一个网页上面。
在这里插入图片描述

哔哩哔哩的多个分网站下端的内容都是一样的,这就是利用include拼接网页实现的

在这里插入图片描述

可以发现 B站每个网页下端有相同的内容 这些相同的网页内容是由单独网页拼接的 是共享的 直接拼接而成的!
在这里插入图片描述

3.6 9大内置对象

  • PageContext :存东西

作用域:只在一个页面中有效

  • Request :存东西

作用域:一次请求或者请求转发

  • Response
  • Session :存东西

作用域:一次会话

  • Application(ServletContext) :存东西

作用域:服务器

  • config(ServletConfig)
  • out
  • page
  • excpetion
    pageContext.setAttribute("name1","若邪"); //保存的数据只在一个页面中有效
    session.setAttribute("name2","若邪2"); //保存的数据在一次会话中有效
    request.setAttribute("name3","若邪3");   //保存的数据只在一个请求或者请求转发中有效
    application.setAttribute("name4","若邪4"); //保存的数据在服务器中有效

request: 客户端向服务器发送请求,产生的数据 用户看完没用了。

session: 客户端向服务器发送请求,产生的数据,用户用完一会还有用: 购物车

application: 客户端向服务器发送请求,产生的数据 :;聊天记录

1.先通过这四个对象存储数据

在这里插入图片描述

2.在另一个页面中取出这四个数据

在这里插入图片描述

3.经过对比可以看出作用域

在这里插入图片描述

我们发现通过session和application对象存的数据 在另一个页面可以取出

通过request和page存的数据在新的页面不能取出来

经过对比发现他们的作用域为

page:当前页面

request:一次请求或者请求转发

session:一次浏览器会话

application:

3.7 JSP标签、JSTL标签 、EL表达式

需要导包:

</dependency>
<!-- jstl表达式的依赖 -->
<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>
<!-- standard标签库-->
<dependency>
    <groupId>org.apache.taglibs</groupId>
    <artifactId>taglibs-standard-impl</artifactId>
    <version>1.2.5</version>
</dependency>
<!-- standard标签库 -->
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
3.7.1EL表达式 😒{}
  • ​ 获取数据
  • ​ 执行运算
  • ​ 获取web开发的常用对象
3.7.2 JSP标签
%--转发--%>
<jsp:forward page="/index.jsp">
</jsp:forward>
<%--拼接网页--%>
<jsp:include  page="index.jsp"></jsp:include>
3.7.3 JSTL表达式

在这里插入图片描述

JSTL标签库的使用就是为了你弥补HTML标签的不足,它自定义了很多标签 标签的功能和java代码一样

包含:

格式化标签

SQL标签

XML标签

核心标签
在这里插入图片描述
JSTL标签库使用步骤

  • 引入对应的taglib

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

  • 使用其中的标签方法
  • 在Tomcat中也需要引入JSTL的包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值