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

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所有逻辑和算术运算符,这里不详细介绍。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法知识点汇总

知识点 1. 求二进制中1的个数 int get_count(int x)//返回x的二进制有多少个1 int get_count(int x) {int res 0;while (x){res ;x - x & -x;}return res; }2. 建树&#xff0c;和树的DFS 记得初始化头节点 const int N 1e5 10, M N * 2; int h[N], e[M], ne[M], id…

VMware创建Ubuntu虚拟机详细教程

下载ISO映像文件 进入官网下载&#xff1a;Download Ubuntu Desktop | Download | Ubuntu 下面是一些其他的下载路径&#xff1a; 中国官网 https://cn.ubuntu.com/ 中科大源 Index of /ubuntu-releases/ (ustc.edu.cn) 阿里云开源镜像站 ubuntu-releases安装包下载_开源镜像…

[C++初阶]初识C++(一)—————命名空间和缺省函数

声明: 本篇文献内容选自百度文库、比特就业课 代码内容部分选自比特就业课 一、命名空间 1.什么是命名空间 在编程语言中&#xff0c;命名空间是一种特殊的作用域&#xff0c;它包含了处于该作用域中的所有标示符&#xff0c;而且其本身也是由标示符表示的。命名空间的使用目…

This app has no Android key hashes configured. . Configure your app key

Unity 接入 Facebook SDK 的过程中遇到这个问题&#xff0c;查了很多帖子&#xff0c;不太直观&#xff0c;记录下来方便需要的同学参考 报上面错误的原因是在https://developers.facebook.com/apps/ 设置里没有填入有效的密钥 怎么填入这个密钥呢&#xff0c;其实很简单&…

Linux驱动学习:从Linux主机nfs共享文件到uboot

第一步&#xff1a;在Linux主机上开启NFS服务&#xff0c;使用如下命令安装NFS服务&#xff1a; sudo apt-get install nfs-kernel-server rpcbind 第二步&#xff1a;创建一个文件夹用于共享&#xff0c;直接以nfs命名就行&#xff1a; 第三步&#xff1a;打开nfs服务配置文…

基于springboot实现校园周边美食探索及分享平台系统项目【项目源码+论文说明】

基于springboot实现园周边美食探索及分享平台系统演示 摘要 美食一直是与人们日常生活息息相关的产业。传统的电话订餐或者到店消费已经不能适应市场发展的需求。随着网络的迅速崛起&#xff0c;互联网日益成为提供信息的最佳俱渠道和逐步走向传统的流通领域&#xff0c;传统的…

找单链表倒数第K个节点

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 但行前路&#xff0c;不负韶华&#…

MTU/TCPMSS/VLAN/ACCESS/TRUNK/HYBRID

MTU RFC标准定义以太网的默认MTU值为1500 最小64字节是为了保证最极端的冲突能被检测到&#xff0c;64字节是能被检测到的最小值&#xff1b;最大不超过1518字节是为了防止过长的帧传输时间过长而占用共享链路太长时间导致其他业务阻塞。所以规定以太网帧大小为64~1518字节&am…

动态代理 过渡 AOP

提问&#xff1a;你可以按照网上教程写一个动态代理的案例&#xff1b;也可以写一个AOP的案例。也常听到AOP的底层就是动态代理&#xff0c;是否能解释的清楚它两之间的关系呢&#xff1f; 目录 一 无代理二、静态代理改造三 动态代理改造四 spring AOP的实现总结 一 无代理 p…

redis之主从复制、哨兵模式

一 redis群集有三种模式 主从复制&#xff1a; 主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。 主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。 缺陷&#xff1a; 故障恢复无法自动化&…

Python搭建编程环境—安装Python3解释器

✅作者简介&#xff1a;CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1&#x1f3c6; &#x1f4c3;个人主页&#xff1a;hacker707的csdn博客 &#x1f525;系列专栏&#xff1a;零基础学Python &#x1f4ac;个人格言&#xff1a;不断的翻越一…

数据结构(二)----线性表(顺序表,链表)

目录 1.线性表的概念 2.线性表的基本操作 3.存储线性表的方式 &#xff08;1&#xff09;顺序表 •顺序表的概念 •顺序表的实现 静态分配&#xff1a; 动态分配&#xff1a; 顺序表的插入&#xff1a; 顺序表的删除&#xff1a; 顺序表的按位查找&#xff1a; 顺序…

搭建跨境电商电商独立站如何接入1688平台API接口|通过1688API接口采集商品通过链接搜索商品下单

接口设计|接口接入 对于mall项目中商品模块的接口设计&#xff0c;大家可以参考项目的Swagger接口文档&#xff0c;以Pms开头的接口就是商品模块对应的接口。 参数说明 通用参数说明 参数不要乱传&#xff0c;否则不管成功失败都会扣费url说明……d.cn/平台/API类型/ 平台&…

LLM大模型可视化-以nano-gpt为例

内容整理自&#xff1a;LLM 可视化 --- LLM Visualization (bbycroft.net)https://bbycroft.net/llm Introduction 介绍 Welcome to the walkthrough of the GPT large language model! Here well explore the model nano-gpt, with a mere 85,000 parameters. 欢迎来到 GPT 大…

AI复活:商业新风口还是情感禁区?

随着人工智能技术的飞速发展&#xff0c;AI已经渗透到我们生活的方方面面&#xff0c;其中&#xff0c;“AI复活”服务作为新兴的技术应用&#xff0c;正逐渐走进大众视野。然而&#xff0c;这一技术带来的不仅是商业机会&#xff0c;更伴随着伦理和情感的争议。 “AI复活”服务…

HDLbits 刷题 --Conditional

学习: Verilog has a ternary conditional operator ( ? : ) much like C: (condition ? if_true : if_false) This can be used to choose one of two values based on condition (a mux!) on one line, without using an if-then inside a combinational always block. …

什么是智慧驿站?智慧驿站主要应用有哪些?新型智慧公厕解说

智慧驿站是一种融合了创意设计和多项功能的新型智慧公厕&#xff0c;它在信息化公共厕所的基础上&#xff0c;以创意的外观设计、全金属结构用材、快速制作整体运输、快速部署落地使用等价值特点&#xff0c;所打造了一个集购物、互动、休憩等多种功能于一体的城市基础设施。无…

redis 集群 (主从复制 哨兵模式 cluster)

目录 一 主从复制 &#xff08;一&#xff09;相关理论 1&#xff0c;主从复制定义 2&#xff0c;主从复制的作用 3&#xff0c;主从复制架构图 4 sync 同步过程 5&#xff0c;主从复制流程 &#xff08;二&#xff09; 实验模拟 1&#xff0c; 实验环境 2, 修…

Java | Leetcode Java题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; class Solution {public String longestPalindrome(String s) {int start 0, end -1;StringBuffer t new StringBuffer("#");for (int i 0; i < s.length(); i) {t.append(s.charAt(i));t.append(#);}t.append(#);s t.to…

jsp实现增删改查——(三)用Echarts图表统计学生信息

学生信息CRUD——Echarts显示生活费 目录结构 创建一个js文件夹&#xff0c;将echarts.min.js放到里面。 功能实现 与之前我们写的jsp文件&#xff08;含有html代码、Java代码&#xff09;不同的是&#xff0c;实现Echarts对生活费的显示&#xff0c;需要调用echarts.min.js…