JavaWeb | JSP基本语法

目录:

    • 1.JSP
    • 2.JSP注释
    • 3.JSP 和 HTML有什么区别?
    • 4.JavaScript (JS) 和 JSP有什么区别?
    • 5.JSP表达式
    • 6.JSP程序段
    • 7.JSP声明
    • 8.URL传值
    • 9.JSP指令
      • 9.1Page指令的作用
        • 导入包
        • 设定字符集
        • 设定错误页面
        • 设定MIME类型和字符编码
      • 9.2include指令
      • 9.3taglib指令
    • 10.JSP动作
    • 11.include动作 和 include指令的区别

1.JSP

  • JSP (Java Server Pages)将 动态代码 嵌入到 静态的HTML 中,从而产生动态的输出
  • JSP运行于服务器端,能够对客户端展现内容,JSP属于 动态网页
  • Java代码可以访问数据库,因此在HTML页面中混合java代码就能让网页拥有动态的能力
    嵌入了“Java代码”的“网页就是JSP

2.JSP注释

  • 注释是代码不可或缺的重要组成部分,JSP注释可以分成以下两个部分 / 两大类

  • 一类是: 能发送给客户端的,可以在源代码中展示出其内容的,是属于HTML注释

    <!-- HTML注释内容 --> 
    ps: 其为html注释,客户端能看到HTML注释中的内容
    
  • 另一类是: 不能发送给客户端 的, 也就是说客户端的源代码文件中不会展示“注释的内容”,仅供给程序员阅读。该注释分为

    JSP注释 Java注释

    <%-- JSP注释内容 --%>
    ps: 其为JSP注释,客户端看不到注释的内容
    
    <%out.print("欢迎来到本系统"); //Java单行注释/*Java多行注释*/
    %>
    ps: 其为Java注释,客户端看不到注释的内容
    

3.JSP 和 HTML有什么区别?

  • HTML页面是静态页面,也就是事先由用户写好放在服务器上,由web服务器客户端发送
    HTML中敲的代码用户都能看到)
  • JSP页面JSP容器执行该页面的Java代码部分,然后生成实时HTML的页面,也就是说它是“服务器端动态页面”。(在客户端源代码中是 看不到Java代码 的)

4.JavaScript (JS) 和 JSP有什么区别?

  • JavaScript 源代码是“服务器发送到“客户端”,由客户端执行,因此在客户端可以看到JavaScript代码
    (客户端看到所有的代码)

  • JSP 是由JSP容器执行该页面的Java代码部分,然后生成实时的HTML页面,在客户端源代码中是 看不到Java代码 的。

5.JSP表达式

  • JSP表达式 : 用于定义JSP一些输出。可理解为输出语句

  • JSP表达式的作用 : 将里面的内容所 运算的结果输出到客户端

  • JSP表达式的语法 : <%= 变量/返回值/表达式 %>
    ps : 等价于 <% out.println(变量) %>

  • 使用JSP表达式的注意事项

    ① 使用JSP表达式不能用 ; 结束

    ② 使用JSP表达式不能出现多条语句

    JSP表达式中内容一定是字符串类型的,或者可以通过toString()函数来将其转换为字符串类型

  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>JSP表达式 : 输出内容到客户端</title>
    </head>
    <body>
    <%int i = 123;double d = 13.14;
    %>
    <br>
    <%--
    使用JSP表达式来在将结果输出到客户端中,即将该变量的内容展示在页面上。
    --%>
    <%= i %>
    <%= d %>
    </body>
    </html>
    

6.JSP程序段

  • 前面的内容已经提到表达式只能单行出现,而仅仅也只是将其中的运行结果输出到客户端如果需要在JSP程序输出数据又实现定义变量一系列复杂的逻辑操作JSP表达式不能满足需求的,这时候需要用 JSP程序段

  • JSP程序段 : 插入到 JSP程序 中的 Java代码。在网页的任何地方都可以插入JSP程序段,在程序段中可以加入任意的Java 代码。

  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>JSP程序段例子1</title>
    </head>
    <body>
    <%-- 使用for循环输出10个欢迎信息 --%>
    <%for (int i = 1; i <= 10; i++) {out.print("欢迎来到本系统<br>");}
    %><%--
    注意: 不能再JSP程序段中定义函数
    --%>
    </body>
    </html>
    
  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>JSP程序段例子2</title>
    </head>
    <body>
    <%--
    该JSP页面中中混合了“JSP程序段”、“JSP表达式”和HTML代码
    --%>
    <%for (int i = 1; i <= 10; i++) {
    %>
    <%= i%>:欢迎来到本系统<br>
    <%}
    %>
    </body>
    </html>
    

7.JSP声明

  • JSP程序段中的 变量必须先定义再使用。例如,以下代码会报错,可声明 全局变量,防止此类报错。

    <%//此处会报错,因为得先声明才能使用 //使用全局声明,可以防止因为位置先后顺序而导致的报错out.println(str);String str = "欢迎";
    %>
    
  • JSP声明声明的变量全局变量这些变量在JSP页面中的任意地方都能使用

  • 在实际应用中,方法页面全局甚至类的声明都可以放在JSP声明部分 其使用方法如下:

  • JSP声明语法 : <%! 代码 %>

  • JSP声明 中只能用作定义不能实现控制逻辑(如果不能在其中输出语句、输出内容)。

  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>JSP声明(声明全局变量等)</title>
    </head>
    <body>
    <%out.println(str);
    %><%-- 在JSP声明中声明变量,同时JSP声明不受限制的,在JSP页面的任何地方使用其中定义的变量 --%>
    <%! String str = "欢迎"; %><%-- JSP声明中只能用作定义,不能实现控制逻辑(如果不能在其中输出语句、输出内容)--%>
    </body>
    </html>
    

8.URL传值

  • HTTP无状态的协议web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知得知该页面的值,可通过 url传值

  • 可通过 url进行页面跳转,在 url携带传给指定页面参数

  • URL传值的格式 : URL?参数名1=参数值1&参数名2=参数值2&…

  • 获得url传递的参数 : request.getParameter(“参数名”);

  • one.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>URL传值 one.jsp</title>
    </head>
    <body>
    <a href="two.jsp?name='张三'&age='23'">跳转到two.jsp,且在url上有携带的值</a>
    </body>
    </html>
  • two.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>two.jsp</title>
    </head>
    <body>
    <%//获得url上携带参数String name = request.getParameter("name");String age = request.getParameter("age");
    %>
    </body>
    </html>
  • urlp1.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>urlP1.jsp</title>
    </head>
    <body>
    <%-- 以下的这些代码为JSP程序段,JSP程序段中能写Java代码 --%>
    <%//定义一个变量String str = "12";//将该变量转换为int类型int number = Integer.parseInt(str);String name = "张三";
    %>
    <%-- 用JSP表达式 来页面上输出/展示数据 --%>
    该数字的平方为: <%= number*number %><%-- 使用url传参向urlP2.jsp页面传值 --%>
    <a href="/书本上代码和知识点/第四章/URL/urlP2.jsp?number=<%= number %>&name=<%= name %>">到达p2</a><%-- 这顿代码的关键是: 通过url传值,把想要传递的值传给下一个页面--%>
    </body>
    </html>
  • urlp2.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>urlP2.jsp</title>
    </head>
    <body>
    <%-- 获得urlP1.jsp页面中传来的参数的内容 --%>
    <%//获得number (获取url传递的参数的值)String str = request.getParameter("number");int number = Integer.parseInt(str); //将String类型数据转换为int类型String name = request.getParameter("name");
    %>
    <%-- 结合html + JSP表达式 来在页面上输出“该数字的立方”--%>
    该数字的立方为: <%= number * number *number%><hr>
    姓名为:  <%= name %><hr>
    </body>
    </html>

9.JSP指令

JSP指令告诉JSP引擎JSP页面如何编译,不包括控制逻辑,不会产生任何其他可见的输出。

JSP指令 语法属性名大小写敏感的。

JSP指令的语法 : <%@ 指令类型 属性1=“属性值1” … 属性n="属性值n>

JSP包含3个指令: ①page指令 ②include指令 ③tablib指令 ,使用最多的是page指令include指令

9.1Page指令的作用

在通常情况下,JSP程序 都是以 page指令开头 的。page指令用来设定页面的属性相关功能,用户可以利用其进行导入需要的类指明JSP输出内容的类型指定处理异常的错误页面等操作。

导入包
<%@ page contentType="text/html;charset=gb2312" language="java" %><%-- 用JSP指令导入包 --%>
<%@page import="java.util.Date" %>
<html>
<head><title>Page指定导入包</title>
</head>
<body>
你的登录时间为:<%= new Date()%>
</body>
</html>
设定字符集
<%@ page contentType="编码类型" %>
<%@ page contentType="text/html;charset=gb2312" %>
设定错误页面
  • 在网页中经常由于用户输入造成异常。在一般情况下会将异常现象在一个统一的网页中显示。这时要用到errorPageisErrorPage属性

    pageTest.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%-- 该页面报错试时,展示的错误页面 --%>
<%-- 该JSP页面出现异常时会跳转到anErrorPage.jsp 页面 --%>
<%@ page errorPage= "anErrorPage.jsp"%>
<html>
<head><title>Page指令作用 : 指定错误页面</title>
</head>
<body>
<% //此页面如果发生异常会向anErrorPage.jsp页面抛出异常,让其处理int num1 = 10;int num2 = 0;int num3 = num1 / num2;//此处会报错,有异常就跳转到anErrorPage.jsp,给客户展示一个错误页面。
%>
</body>
</html>

pageTest_error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head><title>pageTest2_error.jsp指令</title>
</head>
<body>
<%//此页面会处理pageTest.jsp抛出异常//友好的显示错误信息out.print("网页出现数学运行异常!");
%>
</body>
</html>
设定MIME类型和字符编码

设置MIME类型字符编码用户可以用contentType来设置MIME类型可选字符编码

<%@ page contentType="MIME类型;charset= 字符编码"  %>
<%@ page contentType="text/html;charset=UTF-8" %>

9.2include指令

  • 在实际开发案例中,每一个项目中每一个页面底下需要显示公司的地址和图标信息,不可能说每一个页面都编写一个次显示该信息的代码。为了代码的重用可以用 include 指令来解决。使用include指令可以在JSP程序中插入多个外部文件(插入外部文件,这些文件可以是JSPHTMLJava程序,甚至是文本

  • include指令语法 : <%@ include file=“文件名” %>
    (file:必要属性,用于指定包含哪个文件,可多次使用include指令到导入文件、程序等)

  • includeTest.jsp

    <%-- 使用JSP中的 include指令来导入其他文件、代码等--%>
    <%@ include file="info.jsp" %>
  • info.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>第四章 include指令 info.jsp</title>
    </head>
    <body>
    <center>公司电话号码:010-89574895,欢迎来电!
    </center>
    </body>
    </html>

9.3taglib指令

10.JSP动作

  • JSP动作 使用 XML语法 格式来控制服务器的行为

  • JSP动作语法 : <jsp:动作名 属性1=“属性值1” … 属性n=“属性值n” /> 或者
    <jsp:动作名 属性1=“属性值1” … 属性n=“属性值n”> 相关内容 </jsp:动作名>

  • JSP动作如下:
    jsp:include 表示当前页面被请求的时候引入了一个文件
    jsp:forward 表示将请求转到另一个页面
    jsp:useBean 表示获得JavaBean的一个实例
    jsp:setProperty 表示设置JavaBean的属性
    jsp:getProperty 表示获取JavaBean的属性
    jsp:plugin 表示根据浏览器的类型为Java插件生成OBJECT或EMBED两种标记。

  • 使用include动作来导入内容

    <%--
    下面为JSP动作中的 include动作的例子
    --%>
    <jsp:include page="文件名"/>

jspForwardTest.jsp (使用forward动作来“请求转发”)

<%--
下面为JSP动作中的 forward动作的例子
--%>
<jsp:forward page="pageTest1.jsp"/>

pageTest1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>第四章 forward动作 pageTest1.jsp</title>
</head>
<body>
成功在在原页面通过forward动作跳转到该页面了.....
</body>
</html>

11.include动作 和 include指令的区别

include动作include指令 的区别 :
include动作和 include指令的作用差不多 : 在一个页面中导入另一个页面/代码。但两者的语法有差异

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

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

相关文章

热门话题解析:pytest测试用例顺序问题解决方案!

前言 上一篇文章我们讲了在pytest中测试用例的命名规则&#xff0c;那么在pytest中又是以怎样的顺序执行测试用例的呢&#xff1f; 在unittest框架中&#xff0c;默认按照ACSII码的顺序加载测试用例并执行&#xff0c;顺序为&#xff1a;09、AZ、a~z&#xff0c;测试目录、测…

魔法值问题

一、什么是魔法值 魔法值&#xff0c;也叫做魔法数值、魔法数字&#xff0c;通常是指在代码编写时莫名出现的数字&#xff0c;无法直接判断数值代表的含义&#xff0c;必须通过联系代码上下文分析才可以明白&#xff0c;严重降低了代码的可读性。除数字之外&#xff0c;代码中…

Codeforces Round 906 (Div. 2)(D推公式 E1分类讨论区间 E2 dp+线段树)

A - Doremys Paint 3 推公式得 b1b3b5b7.... b2b4b6b8... 所以如果只有一个数或者两个数且数量差小于等于1即可 #include<bits/stdc.h> using namespace std; const int N 2e510,mod1000003; #define int long long typedef long long LL; typedef pair<int, in…

第三方实验室LIMS管理系统源码,asp.net LIMS源码

LIMS实验室信息管理系统源码 LIMS系统的功能根据实验室的规模和任务而有所不同&#xff0c;其系统主要功能包括:系统维护、基础数据编码管理&#xff0c;样品管理、数据管理、报告管理、报表打印、实验材料管理、设备管理等。它可以取代传统的手工管理模式而给检测实验室带来巨…

java获取第n次出现字符串前后面字符串,如:截取第二个逗号后面的数据

java获取第n次出现字符串前后面字符串&#xff0c;如&#xff1a;截取第二个逗号后面的数据 方法&#xff1a; /*** 获取指定第几位字符串后面字符串&#xff0c;如&#xff1a;截取第二个逗号后面的数据** param str:要处理的字符串* param mediumStr&#xff1a;根据截取的媒…

时间序列异常检测14篇顶会论文合集,附必备工具和数据集

今天来聊聊一个在量化交易、网络安全检测、自动驾驶汽车和大型工业设备的日常维护等领域都有重要作用的研究主题&#xff1a;时间序列异常检测。 时间序列异常检测是一种在时间序列数据中识别和标识与预期模式、趋势或行为不符的异常点或事件的技术。鉴于它如此广泛的应用范围…

18、串口通信

串口介绍 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 单片机的串口可以使单片机与单片机&#xff0c;单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的扩展了单片机的应用范围&…

MySQL InnoDB Cluster

MySQL InnoDB Cluster 一、InnoDB Cluster 基本概述 MySQL InnoDB Cluster 为 MySQL 提供了一个完整的高可用解决方案。通过使用 MySQL Shell 提供的 AdminAPI,你可以轻松地配置和管理一组至少由3个MySQL服务器实例组成的 InnoDB 集群。 InnoDB 集群中的每个 MySQL 服务器实例…

JRT和检验共用的打印层实现

之前对接的打印和导出是C#实现的&#xff0c;如果要完全Java化就需要用Java把打印元素绘制协议用Java实现&#xff0c;这次介绍实现主体搭建&#xff0c;最终使JRT达到完全信创和跨平台目标。到这篇后&#xff0c;所有的Java难题都解决完毕&#xff0c;几天到几周之内就可以把打…

(二进制、八进制、十进制、十六进制)的进制转换

整型有4种进制形式&#xff1a; 1.十进制&#xff1a; 都是以0-9这九个数字组成&#xff0c;不能以0开头。 2.二进制&#xff1a; 由0和1两个数字组成。 3.八进制&#xff1a; 由0-7数字组成&#xff0c;为了区分与其他进制的数字区别&#xff0c;开头都是以0开始。 4.十六进制…

聚类算法的算法原理

聚类算法是机器学习中常用的一种无监督学习方法&#xff0c;其主要目标是将数据集划分为具有相似特征的组或簇。这种算法在数据挖掘、模式识别、社交网络分析等领域有着广泛的应用。聚类算法的核心思想是通过计算数据点之间的相似度或距离&#xff0c;将相似的数据点聚集在一起…

WordPress 粘贴图片上传插件

找了很久&#xff0c;发现一款不错的插件&#xff0c;允许我们直接粘贴图片文件并且上传到媒体库。以前的插件上传后媒体库不会显示&#xff0c;这个要显示。 启用后编辑器会有一个图标&#xff0c;如果开启&#xff0c;那么久可以截图后直接粘贴了。 学习资料源代码&#xf…

Servlet在使用工厂缓存factory 文本上传报错

因为我没有E盘 我试了一下txt文件是可以的上传,说明我txt很小 很小文件就不用缓存. 原本是这样: DiskFileItemFactory factory new DiskFileItemFactory(); //设置文件缓存目录&#xff0c;如果该目录不存在则新创建一个3 File f new File("E:\\TempFolder"); if…

TR转发路由器测评—云企业网实现跨地域跨VPC的网络互通测评实战【阿里云产品测评】

文章目录 一.转发路由器 Transit Router 测评1.1 准备阶段1.2 本文测评收获1.3 什么是云企业网实例、转发路由器实例和云数据传输服务 二.使用云企业网实现跨地域跨VPC的网络互通2.2 **测试连通性**2.3 网络拓扑如下&#xff1a; 心得&#xff1a;总结&#xff1a; 声明&#x…

Armbian安装python环境和pip国内源

文章目录 安装python环境配置pip为国内源 安装python环境 更新软件包列表&#xff1a; sudo apt update安装 Python 3&#xff08;通常是最新版本&#xff09;&#xff1a; sudo apt install python3验证 Python 安装是否成功&#xff1a; python3 --version运行上述命令后&…

Linux系列:Linux上杀毒软件有哪些?

Linux上杀毒软件有哪些? 前言:软件Linux开源防病毒引擎ClamAV前言: Linux平台上的杀毒软件不如Windows平台上那么普及,因为Linux操作系统本身设计得就比较安全,而且不容易感染病毒。但是随着技术的进步和恶意软件增多,Linux平台上的安全软件也越来越多,以下是一些Linux…

如何设定目标-SMART原则

1 SMART原则 SMART原则是一种目标设定和管理的方法 1.1 S:specific 明确的 具体的 错误&#xff1a;我想财富自由 (只能算是一个愿望) 正确&#xff1a;攒1000个W 1.2 M:measurable 可衡量的 攒1000个W&#xff0c;如果攒了500个&#xff0c;则目标完成50% 1.3 A:achieva…

基于SpringBoot房屋租赁系统

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…

JSON.stringify方法详解 后端接受JSON数据格式

1、方法定义&#xff1a;JSON.stringify(value, replacer, space) 参数说明&#xff1a; value&#xff1a;js对象 replacer&#xff1a;替换对象&#xff0c;可以是一个方法、对象或数组&#xff0c;将value按照替换规则展示。 space&#xff1a;填充参数&#xff0c;可以是数…

Python排序算法大比拼:快速排序 VS 归并排序

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 快速排序和归并排序是两种常见的排序算法&#xff0c;在Python中有着重要的应用。本文将深入探讨这两种算法的原理和实现&#xff0c;并提供丰富的示例代码来说明它们的工作方式。 快速排序算法 def quicksort…