JSP基本语法
来源:互联网 发布:假面骑士wizard知乎 编辑:程序博客网 时间:2024/05/20 15:57
JSP页面就是带有JSP元素的一个常规Web页面,它由模版文本和JSP元素组成。在JSP页面中,所有非JSP元素的内容为模版文本。模版文本可以是任何文本,如HTML、XML。甚至可以是纯文本。JSP有3种类型的元素,它们分别为:脚本元素,指令元素和动作元素。具体各种元素包含的内容如下图16-9所示:
1 脚本元素
脚本元素允许用户将小段的代码添加到JSP页面中,例如,可以在加入一个条件判断语句,用来根据具体情况产生不同的HTML代码。脚本元素在页面被请求时执行。JSP脚本包括脚本、表达式、声明和注释。
1.1 JSP脚本
所谓脚本代码,就是JSP中的脚本小程序,在这个部分中几乎可以使用任何的Java语法。所以,JSP脚本又可称为Java程序片。一个JSP页面上可以拥有一个或多个程序片,这些程序片将被JSP引擎按顺序执行。在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。 【语法】 <% JSP脚本 %>,即在“<%”和“%>”的内部使用。
【示例】条件判断语句
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>使用脚本小程序</title></head><body> <% int a = 10; //定义局部变量 int b = 5; //定义局部变量 if (a > b) { //使用if条件语句判断大小 out.println(a); } else { out.println(b); } %></body></html>
1.2 表达式
JSP中的表达式可以看成一种简单的输出形式,但有一点需要注意的是,表达式一定是一个可以输出的值。 【语法】 <%= 表达式 %>
【示例】表达式
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>JSP表达式</title></head><body> <% String name = "张三"; //定义局部变量 int age = 25; //定义局部变量 %> <h3>name=<%=name %></h3> <%--使用表达式输出变量,并用<h3>标签设置字体格式 --%> <h3>age=<%=age %></h3> <%--使用表达式输出变量,并用<h3>标签设置字体格式--%> <h3>sex=<%="男" %></h3> <%--使用表达式输出变量,并用<h3>标签设置字体格式--%></body></html>
1.3 JSP声明
使用此声明语法可以在内部定义全局变量、方法、类【语法】<%! %>
【示例】JSP声明
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>定义全局变量</title></head><body> <%!public String name = "张三";//定义全局变量%> <%!public int add(int x, int y) {//定义方法 return x + y; }%> <%!class Student {//定义实体类Student private int id; private String name; private int age; public Student(int id, String name, int age) {//有参构造 this.id = id; this.name = name; this.age = age; } public String toString() {//重写toString()方法 return "id=" + this.id + ",name=" + this.name + ",age=" + this.age; } }%> <% out.println("<h3>name=" + name + "<h3>");//输出全局变量name out.println("<h3>3+5=" + add(3, 5) + "<h3>");//调用方法add(int x,int y) out.println("<h3>" + new Student(1, "李四", 30) + "<h3>");//生成Student对象 %></body></html>
本程序分别在<%!%>中定义了全局变量、方法和类,但是因为在<%!%>中不能出现任何其他语句,所以又编写了一个普通的<%%>用于输出变量、调用方法和输出对象等操作。
值得注意的是,虽然可以在<%!%>中定义类或者方法,但是从开发的角度讲,这是不恰当的,当JSP需要类或者方法的时候,往往会通过JavaBean的形式调用。
1.4 JSP注释
在JSP中有两种注释的语法操作,一种是显式注释,这种注释客户端通过在网页中查看源代码是可以查看到的。一种是隐式注释,这种注释客户端无法看到。【语法】(1)显式注释 <!—注释内容-->(2)隐式注释 //格式一:注释单行 /*格式二:注释多行*/ <%--格式三: JSP注释--%>
【示例】注释页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>注释</title></head><body> <!—显示注释,客户端通过查看源码可以看到--> <%--JSP注释--%> <% //java中提供的单行注释客户端无法看见 /* Java中提供的多行注释,客户端无法看见 */ %></body></html>
2 指令元素
2.1 page指令
page指令在JSP编程中尤为重要,使用此属性可以定义一个JSP页面的相关属性,在一个JSP页面中可以给出多个page指令,下面是page的几种常用的属性配置(1)import属性:等同于java中的import语句,作用是导入操作包在一个JSP页面中可以设置多个import属性。(2)pageEncoding属性:指定当前页面的编码,如果pageEncoding没有指定,那么默认为contentType的值;如果pageEncoding和contentType都没有指定,那么默认值为iso-8859-1。(3)contentType:等同与调用response.setContentType("text/html;charset=xxx"); 如果没有指定contentType属性,那么默认为pageEncoding的值;如果contentType和pageEncoding都没有指定,那么默认值为iso-8859-1。(4)errorPage:如果当前页面出现异常,那么跳转到errorPage指定的jsp页面。
2.2 include指令
include指令的作用是包含指定的页面。在jsp被编译成java文件之前会把两个jsp文件合并,然后再编译成一个java文件。这种特性有助于创建可重用的导航栏、联系人部分、页面计数等公共页面的显示部分。比如说,可能有多个页面都需要用到某个标题页面,这时就可以把这个公共的标题页面使用include指令包含进来就可以使用了。【语法】<%@include file="页面"%>
【示例】include指令
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>include指令</title></head><body> <%@include file="top.jsp"%><!-- 使用include指令包含top.jsp页面 --> <hr><!-- hr标签可以输出一条水平分割线 --> <h3>我是主界面的内容</h3></body></html>
top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><h3>我是被包含的部分</h3></body></html>
程序运行结果如下图所示
2.3 taglib指令
【语法】<%@ taglib prefix="" uri=" " %>
【示例】
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
taglib指令是用来在当前jsp页面中导入第三方的标签库。JSP标准标签库(JSP Standard Tag Library)是一个开放源代码的标签组件,是由Apache公司开发的,使用标签库可以避免过多的JAVA程序嵌套在JSP中而导致的代码混乱不易维护。在指令中prefix用来指定标签前缀,可以根据需要进行起名,uri是指定第三方标签库的uri(唯一标识)。使用第三方标签库的前提是,需要把第三方标签库所需要的jar包导入到所在的项目中。
3 动作元素
3.1 include动作
此动作标记在用户请求时包含文件(动态包含),程序运行过程是包含与被包含的文件各自编译,当用户请求页面时,才动态的包含其他文件。【语法】<jsp:include page=”被包含的页面名字” flush="false"></jsp:include>
【示例】include动作标记
include.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body> <% out.print("我是被包含的内容"); %></body></html>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>include动作标记</title></head><body> <h1>包含页面</h1> <jsp:include page="include.jsp" flush="true"></jsp:include></body></html>
此时读者会发现这个功能与之前讲的include指令元素很相似,两者的区别如下:(1)include指令执行速度相对较快,灵活性较差(只编译一个文件,但是一旦有一个文件发生变化,两个文件都要重新编译);(2)include动作执行速度相对较慢,灵活性较高。
3.2 forward动作标记
forward动作标记主要用作跳转页面,但是地址栏不会发生改变,这种跳转称为服务器端跳转,用来转发带请求的数据。【语法】<jsp:forward page="要跳转的页面名称"></jsp:forward>
【示例】forward动作标记
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>服务器跳转</title></head><body><jsp:forward page="forward.jsp"></jsp:forward></body></html>
forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>跳转后的页面</title></head><body><h3>我是跳转后的界面</h3></body></html>
程序运行后会发现页面转发到了forward.jsp页面,但是地址栏并没有发生改变。
3.3 param动作标记
此动作标记主要是传递参数,一般和include和forward动作标记联合使用,需要注意的是,当和include动作联合使用时, 主页面不能访问被包含页面的参数,但被包含的页面可以访问主页面的参数。【语法】<jsp:param name="参数名" value="参数值"></jsp:param>
【示例】param动作标记
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><title>param传递参数</title></head><body> <h1>包含页面</h1> <jsp:include page="include.jsp" flush="true"> <jsp:param value="zhangsan" name="username" /> </jsp:include></body></html>
include.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body> <% String name = request.getParameter("username");//获取主页面传来的值 out.print("我是被包含的内容,并从包含我的页面中传来个了值:" + name); %></body></html>
以上两段代码与include动作标记的例子相似,只不过这里通过param标签传了一个值给被包含的页面,程序运行结果如图所示:
3.4 useBean动作标记
useBean主要是创建一个Bean实例并指定它的名字和作用范围,对于一个JavaBean,简单的说,它是一个Java类,这个类可以重复地使用。它必须是一个public类,具有公有的不带参数的构造方法,每个属性必须定义一组getXXX()和setXXX()方法, 以便读取和存储其属性值。【语法】<jsp:useBean id=" Bean唯一标识" class=" Bean所在位置" scope="范围"></jsp:useBean>
阅读全文
0 0
- JSP基本语法
- JSP 基本语法总结
- JSP 基本语法
- JSP基本语法
- jsp基本语法
- JSP基本语法
- JSP基本语法
- jsp基本语法介绍
- jsp的基本语法
- JSP基本语法
- JSP基本语法见解
- JSP基本语法
- Jsp基本语法
- JSP基本语法学习
- JavaWeb_day3-JSP基本语法
- JSP基本语法
- jsp基本语法
- jsp基本语法
- 实现一个Add函数,让两个数相加,但是不能使用+、-、*、/等四则运算符。ps:也不能用++、--等等
- malloc_stats---检查内存泄露的神器
- 深度神经网络(DNN)损失函数和激活函数的选择
- POJ 2677 Tour(动态规划+双调欧几里得旅行商算法)【模板】
- 手写mnist项目pycaffe实战
- JSP基本语法
- ZOJ 2112 Dynamic Rankings [树状数组套主席树 || CDQ分治&整体二分]
- Redis持久化机制 AOF
- 在纪中的第八天,2017-7-14 总结:
- Dlib库配置:Dlib19.4+CMake3.8.2+VS2017
- 1051. 复数乘法 (15)
- 【TensorFlow报错】tf.pack改为tf.stack
- 关于IDEA idea .java文件 右下角有个红色j,解决方法
- (2)51单片机入门案列-移位操作循环点亮LED灯