当前位置: 首页 > news >正文

JSP基础知识概述

目录

  • JSP
    • 一、什么是JSP
      • 1.1 概念
      • 1.2 创建JSP
      • 1.3 JSP编写Java代码
      • 1.4 JSP实现原理
    • 二、JSP与HTML集成
      • 2.1 普通脚本
      • 2.2 声明脚本
      • 2.3 输出脚本
      • 2.4 JSP指令
      • 2.5 动作标签
    • 三、内置对象
      • 3.1 四大域对象

JSP

一、什么是JSP

1.1 概念

  • 简化的Servlet设计,在HTMl标签中嵌套Java代码,用以高效开发Web应用的动态网页。

  • 作用:替换显示页面部分的Servlet(使用*.jsp文件替换XxxJSP.java)

1.2 创建JSP

在web目录下新建*.jsp文件(与WEB-INF平级)

1.3 JSP编写Java代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>This is my first page</title>    
</head>
<body><%=new java.util.Date() %>    
</body>
</html>
//使用<%= %>标签编写java代码在页面中打印当前系统时间
  • 访问JSP

在浏览器输入http://ip:port/项目路径/资源名称

例如:http://127.0.0.1:8080/项目路径/资源名称

1.4 JSP实现原理

Tomcat会将xxx.jsp转换成Java代码,进而编译成.class文件运行,最终将运行结果通过response响应给客户端

在这里插入图片描述

二、JSP与HTML集成

2.1 普通脚本

语法:<% Java代码 %>

<html>
<head><title>Hello World</title></head>
<body><%//jsp中,使用小脚本嵌入Java代码!out.println("hi");//打印内容在客户端System.out.println("hi");//打印内容在控制台%>    
</body>
</html>
  • 经验:普通脚本可以使用所有java语法,除了定义函数。
  • 注意:脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套

2.2 声明脚本

语法:<%! 定义变量、函数 %>

<%! int i = 0; %>
<%! int a,b,c; %>
<%! Object object = new Object(); %>
<%!//定义方法public void m1(){System.out.println("你好");
}
%>
  • 注意:声明脚本声明的变量是全局变量。
  • 声明脚本的内容必须在普通脚本<% %>中调用。
  • 如果声明脚本中的函数具有返回值,使用输出脚本调用<%= %>。

2.3 输出脚本

语法:<%= Java表达式%>

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基本使用</title>
</head>
<body><p>今天的日期是:<%= new java.util.Date() %></p>    
</body>
</html>
  • 经验:输出脚本可以输出带有返回值的函数
  • 注意:输出脚本中不能加;

2.4 JSP指令

JSP指令用来设置与整个JSP页面相关的属性。

  • 指令

    • <%@ page … %>:定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
    • <%@ include … %>:包含其他文件
    • <%@ taglib … %>:引入标签库的定义,可以是自定义标签
  • page指令

语法:<%@ page attribute="value1" attribute2="value2" %>

在这里插入图片描述

  • include指令

语法:<%@ include file="被包含的JSP路径" %>

被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。

<%@ include file="header.jsp" %>
...
...
<%@ include file="footer.jsp" %>
  • 注意:可能会有重名的冲突问题,不建议使用。

  • taglib指令

语法:<%@ taglib url="外部标签库路径" prefix="前缀" %>

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

2.5 动作标签

  1. include
  • 语法:<jsp:include page=“相对URL地址” />
  • jsp:include动作元素会将外部文件输出结果包含在JSP中(动态包含)。

在这里插入图片描述

  • 注意:前面已经介绍过include指令,它是将外部文件的输出代码复制到了当前JSP文件中。而这里的jsp:include动作不同,是将外部文件的输出结果引入到了当前JSP文件中。
  1. useBean
  • 语法:<jsp:useBean id=“name” class=“package.className” />
  • jsp:useBean动作用来加载一个将在JSP页面中使用的JavaBean。
<jsp:useBean id="user" class="com.qf.entity.User" />
  • 在类载入后,我们可以通过jsp:setProperty和jsp:getProperty动作来修改和获取bean的属性。
  1. setProperty

可以在jsp:useBean元素之后使用jsp:setproperty进行属性的赋值

在这里插入图片描述

<jsp:useBean id="user" class="com.qf.entity.User" />
<jsp:setProperty name="user" property="name" value="gavin" /> 
  1. getProperty

jsp:Property动作提取指定Bean属性的值,转换成字符串,然后输出。

在这里插入图片描述

<jsp:useBean id="user" class="com.qf.entity.User" />
<jsp:setProperty name="user" property="name" value="gavin" /> 
<jsp:getProperty name="user" property="name" />
  1. forward

语法:<jsp:forward page="相对URL地址" />

在这里插入图片描述

<jsp:forward page="index.jsp" />
  1. param

语法:<jsp:param name="" value="" />

<jsp:forward page="index.jsp"><!-- http请求参数传递--><jsp:param name="sex" value="nan" />
</jsp:forward>

三、内置对象

  • 由JSP自动创建的对象,可以直接使用

在这里插入图片描述

3.1 四大域对象

  • JSP有四大作用域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别

    • pageContext:当前JSP页面范围

    • request:一次请求有效

    • session:一次会话有效(关闭浏览器失效)

    • application:整个web应用有效(服务器重启或关闭失效)

    • 以上都是通过setAttribute(“name”,value);存储值;通过getattribute(“name”);获取值

相关文章:

JSP基础知识概述

目录 JSP一、什么是JSP1.1 概念1.2 创建JSP1.3 JSP编写Java代码1.4 JSP实现原理 二、JSP与HTML集成2.1 普通脚本2.2 声明脚本2.3 输出脚本2.4 JSP指令2.5 动作标签 三、内置对象3.1 四大域对象 JSP 一、什么是JSP 1.1 概念 简化的Servlet设计&#xff0c;在HTMl标签中嵌套Jav…...

国产编程—— 仓颉

应用 仓颉编程语言是一款由华为主导设计和实现的面向全场景智能的编程语言&#xff0c;主要应用于以下领域&#xff1a; 中文字符编码和文本数据处理&#xff1a;仓颉编程语言充分利用汉字的结构特点来设计编码&#xff0c;为开发者提供了一种高效的方式来编码、存储和处理中…...

0X JavaSE-并发编程(锁)

1...

云计算【第一阶段(18)】磁盘管理与文件系统 分区格式挂载(一)

目录 一、磁盘基础 二、磁盘结构 2.1、机械硬盘 2.2、固态硬盘 2.3、扩展移动硬盘 2.4、机械磁盘的一些计算&#xff08;了解&#xff09; 2.5、磁盘接口类型 二、Linux 中使用的文件系统类型 2.1、磁盘分区的表示 2.1.1、主引导记录(MBR) 2.1.2、Linux中将硬盘、分…...

Flask-cache

Flask-cache 目录 Flask-cache基本使用配置可用参数SimpleCacheNullCacheFileSystemCacheRedisCacheRedisSentinelCacheRedisClusterCacheMemcachedCacheSASLMemcachedCacheUWSGICache Flask-Cache是一个强大的缓存库&#xff0c;为基于Flask的应用提供了简单易用的API和多种缓…...

【面试题】面试小技巧:如果有人问你 xxx 技术是什么?_面试问你对什么技术特别了解

前端工程越来越大&#xff0c;前面几种方案不能很好的支持单元测试。 在这样的背景下&#xff0c;React 诞生了。React 带来了新的思维模式&#xff0c;UI fn(props)&#xff0c;React 中一个组件就是一个函数或者一个类&#xff0c;一个函数或者一个类就是一个基础单位&…...

简单分享Python语言(发现其实并不难)

一. Python基础 Python是一种解释型语言&#xff0c;这意味着开发者可以在代码被编写后立即执行它们&#xff0c;而无需编译。Python的基本语法简单明了&#xff0c;以下是一些基础知识点&#xff1a; 变量和数据类型&#xff1a;Python支持多种数据类型&#xff0c;包括整型&…...

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…...

【论文精读】ViM: Out-Of-Distribution with Virtual-logit Matching 使用虚拟分对数匹配的分布外检测

文章目录 一、文章概览&#xff08;一&#xff09;问题来源&#xff08;二&#xff09;文章的主要工作&#xff08;三&#xff09;相关研究 二、动机&#xff1a;Logits 中缺失的信息&#xff08;一&#xff09;logits&#xff08;三&#xff09;基于零空间的 OOD 评分&#xf…...

【面试题】前端 移动端自适应?_前端移动端适配面试题

设备像素比 设备像素比 (DevicePixelRatio) 指的是设备物理像素和逻辑像素的比例 。比如 iPhone6 的 DPR 是2。 设备像素比 物理像素 / 逻辑像素。可通过 window.devicePixelRatio 获取&#xff0c;CSS 媒体查询代码如下 media (-webkit-min-device-pixel-ratio: 3), (min-…...

在Maven工程中手动配置并测试SpringBoot(巨详)

本篇博客承继自博客&#xff1a; 在IDEA 2024.1.3 (Community Edition)中创建Maven项目_idea2024.1.3如何创建maven项目-CSDN博客 配置POM文件 打开工程中的pom.xml文件&#xff0c;先向其中写入 <parent><groupId>org.springframework.boot</groupId><…...

c# 去掉字符串首尾的 特殊符号

如果首尾的 - 数量不确定,可以使用以下方法来去掉字符串两端的 - 字符: 使用正则表达式: using System.Text.RegularExpressions;string input "---Hello, World!---"; string trimmed Regex.Replace(input, "^-*|-*$", ""); // trimmed 为 …...

在容器中共享本地文件

在容器中共享本地文件 目录 卷与绑定挂载的对比在主机和容器之间共享文件Docker 访问主机文件的文件权限试一试 运行一个容器使用绑定挂载在 Docker Dashboard 中访问文件停止容器 额外资源下一步 每个容器都有一切需要运行的资源&#xff0c;而不依赖于主机机器上预先安装的…...

Java Matcher类方法深度剖析:查找和匹配、索引方法

1. 引言 在Java中,正则表达式是处理字符串的强大工具,而java.util.regex包中的Matcher类则是实现这一功能的核心。对于Java工程师而言,熟练掌握Matcher类的使用方法,无疑能够极大地提升字符串处理的效率和准确性。本文将对Matcher类的方法进行深度讲解,并按照查找和匹配方…...

Redis-数据类型-zset

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db4数据库4、将一个或多个member元素及其score值加入到有序集key当中5、升序返回有序集key6、升序返回有序集key&#xff0c;让分数一起和值返回的结果集7、降序返回有序集key&#xff0c;让分数一起和值返回到结…...

手撕RPC——前言

手撕RPC——前言 一、RPC是什么&#xff1f;二、为什么会出现RPC三、RPC的原理3.1 RPC是如何做到透明化远程服务调用&#xff1f;3.2 如何实现传输消息的编解码&#xff1f; 一、RPC是什么&#xff1f; RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff…...

Vite: 关于预构建的毫秒级响应

概述 在我们的项目代码中&#xff0c;我们所说的模块代码其实分为两部分 一部分是源代码&#xff0c;也就是业务代码另一部分是第三方依赖的代码&#xff0c;即 node_modules 中的代码 Vite 是一个提倡 no-bundle 的构建工具&#xff0c;相比于传统的 Webpack能做到开发时的模…...

Docker 中 MySQL 迁移策略(单节点)

目录 一、 简介二、操作流程2.1 进入mysql容器2.2 导出 MySQL 数据2.3. 将导出的文件复制到宿主机2.4 创建 Docker Compose 配置2.5 启动新的 Docker 容器2.6 导入数据到新的容器2.7 验证数据2.8 删除旧的容器&#xff08;删除操作需慎重&#xff09; 三、推荐配置四、写在后面…...

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests

猫头虎 分享已解决Error || API Rate Limits: HTTP 429 Too Many Requests &#x1f42f; 摘要 &#x1f4c4; 大家好&#xff0c;我是猫头虎&#xff0c;一名专注于人工智能领域的博主。在AI开发中&#xff0c;我们经常会遇到各种各样的错误&#xff0c;其中API Rate Limits…...

开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片

今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景&#xff1a; 业务需要将一个pdf文件展示在前端显示&#xff0c;但是基于各种原因&#xff0c;放弃了h5使用插件展示 原因有多个&#xff0c;文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果…...

【数据结构与算法 经典例题】使用栈实现队列(图文详解)

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 目录 ​​一、问题描述 二、前置知识 三、解题思路 原理&#xff1a; 图解&…...

不知大家信不信,竟有这么巧的事,我领导的老婆,竟然是我老婆的下属,我在想要不要利用下这层关系,改善下领导对我的态度,领导怕老婆

职场如战场&#xff0c;每个人都身不由己。每天上班&#xff0c;除了要面对堆积如山的工作&#xff0c;还要小心应对来自领导的“狂风暴雨”。最近&#xff0c;我无意间发现领导一个秘密&#xff0c;这个秘密让我对职场关系和人性都产生了新的思考。 故事要从那天晚上说起。我…...

使用pkg -r 命令选项向jail虚拟子系统里安装软件@FreeBSD

刷FreeBSD 论坛的时候&#xff0c;看到这样一招&#xff1a;使用pkg -r选项&#xff0c;往jail等虚拟机子系统里安装软件。jails - How to install a pkg offline into a jail? | The FreeBSD Forums rootfbhost:~ # pkg pkg: not enough arguments Usage: pkg [-v] [-d] [-l…...

Go语言开发框架GoFly已集成数据可视化大屏开发功能,让开发者只专注业务开发,本文指导大家如何使用

前言 框架提供数据大屏开发基础&#xff0c;是考虑当前市场软件应用有一大部分是需要把业务数据做出大屏&#xff0c;很多政府项目对大屏需求特别高&#xff0c;还有生产企业项目也对大屏有需求&#xff0c;没有提供基础规范的后台框架&#xff0c;在开发大屏需要很多时间去基…...

PR模板 | RGB特效视频标题模板Titles | MOGRT

RGB特效视频标题模板mogrt免费下载 4K分辨率&#xff08;38402160&#xff09; 支持任何语言 友好的界面 输入和输出动画 快速渲染 视频教程 免费下载&#xff1a;https://prmuban.com/39055.html 更多pr模板视频素材下载地址&#xff1a;https://prmuban.com...

python替换文件内容

# 打开文件with open(name, r) as file:content file.read()# 替换内容old_string binarynew_string cc_library_sharedcontent content.replace(old_string, new_string)# 写回文件with open(name, w) as file:file.write(content)...

SD-WAN是什么?它有哪些应用领域?

随着企业业务的不断扩展和数字化转型的加速&#xff0c;传统网络架构已无法满足企业对高效、灵活和安全网络连接的需求。在此背景下&#xff0c;SD-WAN&#xff08;软件定义广域网&#xff09;应运而生&#xff0c;为企业带来了全新的网络连接体验。本文将详细介绍SD-WAN网络及…...

PHP-CGI的漏洞(CVE-2024-4577)

通过前两篇文章的铺垫&#xff0c;现在我们可以了解 CVE-2024-4577这个漏洞的原理 漏洞原理 CVE-2024-4577是CVE-2012-1823这个老漏洞的绕过&#xff0c;php cgi的老漏洞至今已经12年&#xff0c;具体可以参考我的另一个文档 简单来说&#xff0c;就是使用cgi模式运行的PHP&…...

人工智能前沿讲座——AIGC

目录 前情提要 一、什么是AIGC AIGC与传统的AI有何区别&#xff1f; 二、发展历程 GAN 生成对抗网络 大模型与Transformer Transformer\BERT\GPT 扩散模型和稳定扩散模型 三、AIGC的发展应用 新质生产力 前情提要 小学期某一门课的笔记&#xff0c;老师名字隐去&…...

CCF 第33次CCF计算机软件能力认证第二题

相似度计算 刷新 时间限制&#xff1a; 1.0 秒 空间限制&#xff1a; 512 MiB 下载题目目录&#xff08;样例文件&#xff09; 题目背景 两个集合的 Jaccard 相似度定义为&#xff1a;&#x1d446;&#x1d456;&#x1d45a;(&#x1d434;,&#x1d435;)∣&#x1d…...