IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JSP回顾总结 -> 正文阅读

[Java知识库]JSP回顾总结

在Javaweb中,Servlet负责后端处理请求并响应数据给客户端,那么Servlet程序是与前端页面肯定要做数据的传递,那么这种交互是怎么实现的?答案是通过JSP。在JSP中可以写前端代码,还可以写Java代码。JSP具有自己的语法。

JSP的全称是Java Server Pages,即Java的服务器页面。
作用是实现前端页面的数据和后端(servlet)数据的交互。

-01- JSP的本质

JSP本质上是一个Servlet程序。
创建一个Javaweb工程,可以在webapp下看到一个index.jsp文件,配置好tomcat,启动。在浏览器访问tomcat会跳转到index.jsp的页面。
此时,打开tomcat安装目录,
进入路径:apache-tomcat-9.0.43\work\Catalina\localhost\ROOT\org\apache\jsp,
可以看到index_jsp.class、index_jsp.java两个文件,
打开后者可以看到“index_jsp extends org.apache.jasper.runtime.HttpJspBase”,而HttpJspBase类继承自HttpServlet类。说明index_jsp是一个Servlet程序。

在webapp目录下,右击 --> new --> JSP/JSPX,创建一个JSP文件。

-02- JSP常用语法

1、声明脚本
格式:<%! 声明Java代码 %>
作用:在JSP中定义java方法、属性等
特点:不会在浏览器的页面上显示出来,仅存在于翻译后的Java类中

<%!
    private String name = "Orange";
    public int sum(){
        return 1+1;
    }
%>

2、表达式脚本
格式:<%=表达式 %>
作用:在浏览器的JSP页面上输出数据(只有此脚本可以在浏览器的页面上输出数据)

<%=sum()%>

3、代码脚本
格式:<% Java语句 %>
作用:在JSP页面中可以编写需要的Java代码

<%
    System.out.println("在控制台输出");
%>

启动tomcat,访问当前jsp页面:
浏览器 =>
在这里插入图片描述
控制台 =>
在这里插入图片描述

-03- JSP内置对象

内置对象指的是Tomcat服务器将JSP页面翻译为Java类之后内部提供的九大对象(无需我们创建,可以直接在JSP中使用)
九大内置对象
request:请求对象
response:响应对象
pageContext:JSP的上下文对象
session:会话对象
application:ServletContext对象
config:ServletConfig对象
out:JSP输出流对象
page:指向当前JSP的对象
exception:异常对象

九大内置对象并不需要全部了解,主要是其中的:
四大域对象
域即作用域,作用范围。
域对象是指可以像Map一样存取数据的对象,四个域对象功能一样,只是对数据的存取范围不同
------------对象------------------------------------------------作用域----------------------------------------------------
pageContext:JSP的上下文对象 --》在当前jsp页面中有效
request:请求对象 --》一次请求中有效
session:会话对象 --》一次会话中有效
application:ServletContext对象 --》整个web工程范围(web的启动到关闭)有效

------------对象------------------------------------------------作用域----------------------------------------------------

创建TestJSP02_1.jsp:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/1/8 0008
  Time: 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>01</title>
</head>
<body>
<h1>JSP02-1</h1>
<%
    pageContext.setAttribute("key","pageContext");
    request.setAttribute("key","request");
    session.setAttribute("key", "session");
    application.setAttribute("key", "application");
%>
<%--转发--%>
<jsp:forward page="TestJSP02_2.jsp"></jsp:forward>
</body>
</html>

此时pageContext.setAttribute如果报红,那是因为没有在pom.xml中导入jsp的依赖:

		<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

创建TestJSP02_2.jsp:

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/1/8 0008
  Time: 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>01</title>
</head>
<body>
<h1>JSP02-2</h1>

pageContext域是否有值:<%=pageContext.getAttribute("key")%> <br>
request域是否有值:<%=request.getAttribute("key")%> <br>
session域是否有值:<%=session.getAttribute("key")%> <br>
application域是否有值:<%=application.getAttribute("key")%> <br>

</body>
</html>

访问TestJSP02_1.jsp页面:http://localhost:8080/myservlet/TestJSP02_1.jsp
在这里插入图片描述
可以看到pageContext域对象的值为null,这是因为pageContext只在页面内有效,而这里是从TestJSP02_1转发到了TestJSP02_2,不同页面。
验证其他域对象的作用域:
访问TestJSP02_2.jsp页面:http://localhost:8080/myservlet/TestJSP02_2.jsp
在这里插入图片描述
request域的值为null,因为request在不同的请求中无效。
关掉浏览器,打开重新访问TestJSP02_2.jsp页面:http://localhost:8080/myservlet/TestJSP02_2.jsp
在这里插入图片描述
这次连session域的值也为null,这是因为关闭浏览器之后就结束一次会话了,重新访问已经是不同会话了。
而application域是整个web工程,只要tomcat一直启动着,那么就可以获取到application的值。

-04-JSP的常用标签

1.静态包含:一个jsp页面可以包含另一个jsp页面
<%@include file=""%>
其中file属性设置要包含的JSP页面,以/打头,代表http://ip:port/工程路径/,对应web目录

2.动态包含:一个jsp页面可以包含另一个jsp页面,动态包含还可以传递参数
<jsp:include page=""></jsp:include>
其中page属性设置要包含的JSP页面,与静态包含一致

代码示例:
创建一个TestJSP03head.jsp

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/1/8 0008
  Time: 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>head</title>
</head>
<body>
___\\\\__<br>
---`|头部|`--<br>
-----\-/----<br>
</body>
</html>

创建一个TestJSP03body.jsp,在TestJSP03body中包含TestJSP03head(静态包含)

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/1/8 0008
  Time: 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>body</title>
</head>
<body>
<%@include file="TestJSP03head.jsp"%>
 /-----------\<br>
|-|\-body-/|-|<br>
|-|-|__|__|-|-|<br>
|_|-|__|__|-|_|<br>
<jsp:include page="TestJSP03foot.jsp">
    <jsp:param name="key" value="----foot----"/>
</jsp:include>
</body>
</html>

创建一个TestJSP03foot.jsp,在TestJSP03body中动态包含TestJSP03foot

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2022/1/8 0008
  Time: 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>foot</title>
</head>
<body>
---|-|--|-|--<br>
---|-|--|-|--<br>
---|-|--|-|--<br>
---|-|--|-|--<br>
<%=request.getParameter("key")%>
</body>
</html>

启动web工程,访问TestJSP03body:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:51:23  更:2022-01-11 23:53:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:01:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码