SSM框架学习——JSP语法入门

news2024/11/24 10:03:00

JSP语法入门

前提

在前一节中我们已经写过JSP的代码了,这一节将单独介绍JSP一些基础语法。当然,你可以跳过这一节,当后面有代码不太理解的时候再回来阅读。

中文编码问题

如果中文乱码,看看JSP是否是以UTF8的方式编码,使用此编码在JSP文件最上方需要添加下面内容

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

脚本程序

脚本程序是包含任意Java语句、变量、方法或表达式。

形式如下:

<% 脚本程序代码片段 %>

我们借助上一节的top.cairbin.test7,稍微对hello.jsp改造下看看效果。

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello SpringMvc</title>
</head>
<body>
     <h1><% out.println("Hello JSP"); %></h1>
</body>
</html> 

按照上述逻辑来讲应该会在页面显示一个h1的标题,内容为Hello JSP

我们访问http://localhost:8080/test7/hello来看看,果然如此。哦,对了,在写语句的时候别忘了那该死的分号

你也可以选择以下等价的XML语句(仍是在JSP文件里写,这里对其他部分省略,用[...]表示)

[...]

<h1>
    <jsp:scriptlet>
 		out.println("Hello JSP");
	</jsp:scriptlet>
</h1>

[...]

你大致已经知道JSP书写方式了,为了简洁,在接下来的介绍中除非特殊我们将不再给出演示结果,而是仅介绍用法,请自行在项目中进行测试。

JSP表达式

表达式先被转化成String,然后被插入到该出现的地方。
由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。

形式如下

<%= 这里写jsp表达式,注意前面那个等号 %>

它也有等价的XML形式

<jsp:expression>
    表达式
</jsp:expression>

示例,注意这里不能用分号结尾

<h1>
    日期 <%= (new java.util.Date()).toLocaleString() %>
</h1>

JSP声明

JSP声明可以声明一个或多个变量、方法等供后面代码使用。

JSP声明形式

<%! 这里写声明 %>

等价的XML

<jsp:declaration>
   声明的代码片段
</jsp:declaration>

示例

<%! int num = 114514; %>

JSP注释

<%-- 我就是JSP注释,此处不会被页面展示,也不会被浏览器看到 --%>

<!-- 我是HTML注释,此处内容页面不展示,但会在浏览器查看源码中看到 -->

你可以在JSP文件中使用JSP注释和HTML注释,但应当注意JSP注释与HTML有些不同,JSP注释不会被发送到浏览器,而HTML注释会被发送至浏览器并且能在浏览器查看源代码功能中看到!!!在HTML注释中不要写敏感信息!!!

JSP指令

形式如下

<%@ 指令 属性="值" %>

经常用到的JSP指令标签有:

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

对于page常用属性有:

  • language声明当前页面脚本的语言,默认为java
  • extends指定jsp编译成servlet之后所需要继承的类或者所实现的接口
  • import用于导入当前脚本中可能使用到的其他包里面的类
  • info包含jsp的信息,一般作为当前jsp文件的说明用。可以通过getServletInfo()来获取
  • errorPage指定当前jsp文件发生错误时,自动调用改属性值指定的jsp文件。如果不指定当前属性值,当发生错误时,会抛出异常信息给客户。
  • contentType指定生成网页的文件格式和编码字符集
  • isErrorPage用于指定当前jsp文件是否为错误处理jsp文件

JSP行为

JSP行为使用XML语法结构控制servlet引擎。

它需要严格遵守XML标准:

<jsp:行为名称 属性="值" />
  • jsp:include用于在当前页面中包含静态或动态资源
  • jsp:useBean寻找和初始化一个JavaBean组件
  • jsp:setProperty设置JavaBean组件的值
  • jsp:getProperty将JavaBean组件的值插入到output中
  • jsp:plugin用于在生成HTML页面中包含Apple和JavaBean对象
  • jsp:element动态创建一个XML元素
  • jsp:forward从一个JSP文件向另一个文件传递一个包含用户请求的request对象
  • jsp:attribute定义动态创建的XML元素属性
  • jsp:body定义动态创建的XML元素的主体
  • jsp:text用于封装模板数据

JSP隐式对象

JSP有九个无需额外声明或初始化的对象:

  • request: HttpServletRequest类的实例,代表 HTTP 请求的对象,包含客户端发送到服务器的信息,如表单数据、URL参数等。
  • response: HttpServletResponse类的实例,代表 HTTP 响应的对象,用于向客户端发送数据和响应。
  • out: JspWriter类的实例,用于向客户端输出文本内容的对象,通常用于生成HTML。
  • session: HttpSession类的实例,代表用户会话的对象,可用于存储和检索用户特定的数据,跨多个页面。
  • application: ServletContext类的实例,代表 Web 应用程序的上下文,可以用于存储和检索全局应用程序数据。
  • config: ServletConfig类的实例,包含有关当前 JSP 页面的配置信息,例如初始化参数。
  • pageContext: PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
  • page: 类似于 Java 类中的 this 关键字,代表当前 JSP 页面的实例,可以用于调用页面的方法。
  • exception: exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象,用于处理 JSP 页面中的异常情况,可用于捕获和处理页面中发生的异常。

控制流语句

判断语句

<%! int num=114514; %>

<% if(num==114514) { %>
    <p>114514</p>
<% }else{ %>
    <p>不是114514</p>
<% } %>

switch语句

switch语句与判断语句不一样,switch语句整个都被包裹在<% %>之中

当然,别忘了break

<%! int num=114514; %>

<%
switch(num){
    case 114514:
        out.println("114514");
        break;
    default:
        out.println("不是114514");
}
%>

for语句

<% for(int fontSize=1;fontSize<=5;fontSize++){ %>
    <font color="blue" size="<%= fontSize %>">
    	fontSize = <%= fontSize %>
	</font>
	<br/>
<%}%>

输入出结果如下

while与do…while语句

while语句与do…while语句类似,这里仅演示while语句

<%! int fontSize=1; %>
<% while(fontSize<=5){ %>
    <font color="blue" size="<%= fontSize %>">
    	fontSize = <%= fontSize %>
	</font>
	<br/>
    <% fontSize+=1; %>
<%}%>

JSP字面量

JSP定义了如下几个字面量

  • 布尔类型boolean
  • 整型int
  • 浮点型float
  • 字符串string,单引号包裹或者双引号包裹
  • Null

JSP运算符

JSP支持Java所有逻辑和算术运算符,这里不详细介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566086.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql建表必须知道的18个重点(荣耀典藏版)

大家好&#xff0c;我是月夜枫&#xff0c;又和大家见面了&#xff01;&#xff01;&#xff01;&#xff01; 目录 前言 1.名字 1.1 见名知意 1.2 大小写 1.3 分隔符 1.4 表名 1.5 字段名称 1.6 索引名 2.字段类型 3.字段长度 4.字段个数 5. 主键 6.存储引擎 7.…

计算机网络:数据链路层 - 点对点协议PPP

计算机网络&#xff1a;数据链路层 - 点对点协议PPP PPP协议的帧格式透明传输字节填充法零比特填充法 差错检测循环冗余校验 对于点对点链路&#xff0c;PPP协议是目前使用最广泛的数据链路层协议。比如说&#xff0c;当用户想要接入互联网&#xff0c;就需要通过因特网服务提供…

vulnhub靶机: DC-9

dc-9靶机下载 将靶机设置为NAT模式&#xff0c;本次实验使用的内网网段为192.168.198.0/24&#xff0c;kali的ip为192.168.198.172 信息搜集 ip主机扫描&#xff1a; nmap -sP 192.168.198.0/24 确定靶机ip为192.168.198.171 主机端口扫描&#xff1a; nmap -T4 -A -v 192…

【JVM】如何定位、解决内存泄漏和溢出

目录 1.概述 2.堆溢出、内存泄定位及解决办法 2.1.示例代码 2.2.抓堆快照 2.3.分析堆快照 1.概述 常见的几种JVM内存溢出的场景如下&#xff1a; Java堆溢出&#xff1a; 错误信息: java.lang.OutOfMemoryError: Java heap space 原因&#xff1a;Java对象实例在运行时持…

简单聊聊冯诺伊曼体系结构

我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系结构。 简单聊一下&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成 中央处理器(CPU)&#xff1a; a.运算器 &#xff1a;算数运算…

配置code-server和texlive实现网页写tex

使用overleaf太卡了&#xff0c;有云服务器或者nas小主机&#xff0c;配置自己的code-servertexlive&#xff0c;来写论文。 之前用服务器配置过自己的overleaf&#xff0c;感觉不是很好用&#xff0c;缺少东西。 一、思路 使用docker先安装一个ubuntu&#xff0c;用dockerfil…

施耐德 Unity Pro PLC 编程软件介绍

Unity Pro 软件基本介绍 Unity Pro 是施耐德中大型 PLC 的编程软件&#xff08;<–> 对应西门子 Step7&#xff09; 支持的 PLC&#xff1a;施耐德中大型 PLC 中型 PLC&#xff1a;Premium、M340&#xff08;<–> 对应西门子 S7-300、S7-1200&#xff09;大型 PL…

制作一个一键运行的10多M的go-cqhttp最简docker镜像

一直有个想自己部署一个QQ机器人&#xff0c;虽然成功完成在Windows环境下基于 go-cqhttp 的搭建工作。但考虑到我有一台常年在线的群晖 NAS&#xff0c;并且已经配置并启用了 Docke r服务&#xff0c;可否将go-cqhttp 迁移至 NAS 上的 Docker 容器中运行吗呢&#xff1f;同时&…

SSTI模板注入(jinja2)

前面学习了SSTI中的smarty类型&#xff0c;今天学习了Jinja2&#xff0c;两种类型都是flask框架的&#xff0c;但是在注入的语法上还是有不同 SSTI&#xff1a;服务器端模板注入&#xff0c;也属于一种注入类型。与sql注入类似&#xff0c;也是通过凭借进行命令的执行&#xff…

短袖有什么牌子可以推荐?五款每个人都必备的短袖分享

最近天气逐渐升温&#xff0c;大家都在挑选夏季的短袖了&#xff0c;但是因为市面上的短袖质量参差不齐&#xff0c;甚至有一些使用劣质面料&#xff0c;不仅不耐穿不耐洗&#xff0c;而且穿着还十分闷热。相信大家心里都非常想知道现在有哪些短袖品牌是可靠的&#xff0c;所以…

鸿蒙TypeScript入门学习第8天:【TypeScript 函数】

1、TypeScript 函数 函数是一组一起执行一个任务的语句。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的&#xff0c;但在逻辑上&#xff0c;划分通常是根据每个函数执行一个特定的任务来进行的。 函数声明告诉编译器函数的名称、返回类型和参…

2.2.1.2-网格交易(python网格交易附实战交易记录)

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

源浩流体设备与您相约2024年第13届生物发酵展

参展企业介绍 温州源浩流体设备科技有限公司是一家集设计、开发、制造、销售、服务于一体的高科技企业&#xff0c;公司主要生产各种不锈钢阀门、管件、卫生级流体设备(卫生级换向阀,卫生级减压阀,卫生级罐底阀)等。现为温州市泵阀协会会员&#xff0c;ISO9000 2008版质量质量…

Leaflet使用多面(MultiPolygon)进行遥感影像掩膜报错解决之道

目录 前言 一、问题初诊断 1、山重水复 2、柳暗花明 3、庖丁解牛 4、问题定位 二、解决多面掩膜问题 1、尝试数据修复 2、实际修复 3、最终效果 三、总结 前言 之前一篇讲解遥感影像掩膜实现&#xff1a;基于SpringBoot和Leaflet的行政区划地图掩膜效果实战&#xff0…

解锁金融数据中心场景,实现国产化AD替代,宁盾身份域管为信创电脑、应用提供统一管理

随着信创国产化改造持续推进&#xff0c;越来越多的金融机构不断采购信创服务器、PC、办公软件等&#xff0c;其 IT 基础设施逐渐迁移至国产化 IT 架构下。为支撑国产化 IT 基础设施的正常使用和集中管理运维&#xff0c;某金融机构数据中心的微软Active Directory&#xff08;…

Java入门教程||Java 多线程编程

Java 多线程编程 Java 给多线程编程提供了内置的支持。一个多线程程序包含两个或多个能并发运行的部分。程序的每一部分都称作一个线程&#xff0c;并且每个线程定义了一个独立的执行路径。 多线程是多任务的一种特别的形式。多线程比多任务需要更小的开销。 这里定义和线程…

WEB 工程路径

WEB 工程路径 相对路径 使用相对路径来解决&#xff0c; 一个非常重要的规则&#xff1a;页面所有的相对路径&#xff0c;在默认情况下&#xff0c;都会参考当前浏览器地址栏的路径 http://ip:port/工程名/ 资源来进行跳转。 相对路径带来的问题 如上图&#xff0c;若在a.h…

Shell脚本介绍及基本功能

目录 一、什么是Shell 二、什么是Shell脚本 三、echo 四、Hello World 五、Bash的基本功能 1.别名 2.常用快捷键 3.输入输出 4.输出重定向 5.多命令执行 6.管道符 7.通配符和特殊符合 一、什么是Shell Shell是一种命令行解释器&#xff0c;它是操作系统的一部分&a…

N5182A安捷伦N5182A信号发生器

181/2461/8938产品概述&#xff1a; 信号特征 100 kHz至3或6 GHz使用高度可靠的快速开关电子衰减器时&#xff0c;最高可达3 GHz》23 dBmW-CDMA动态范围:≤-73 dBc&#xff0c;输出功率为5 dBm列表模式下≤900 μs的同步频率、幅度和波形切换 调制和扫描 调幅、调频、调频和…

OpenHarmony实战开发-如何通过Stage模型实现一个简单的游戏卡片

介绍 本示例展示了如何通过Stage模型实现一个简单的游戏卡片。 通过卡片支持的点击事件进行交互&#xff0c;让用户通过点击的先后顺序把一个乱序的成语排列成正确的成语。使用了C和TS的混合编程方式&#xff0c;将获取随机数的能力下沉到C实现&#xff0c;并通过NAPI的能力将…