JSP基本语法

在JSP中,主要包含以下几个内容:
指令:指令提供该页的全局信息,例如,重要的状态,错误处理,是否是session的一部分等;
声明:页面范围的变量和方法的声明;
脚本:嵌入页面内java代码;
表达式:把表达式转换成String类型,便于包含在页面的输出中。

一、 指令:JSP指令用来设置与整个JSP页面相关的属性
1、page指令:page指令是在jsp开发中较为重要的,page指令描述了和页面相关的指令信息,包括设置MIME类型、定义需要导入的包、错误页的指定等,然而在一个jsp页面中,page指令可以出现多次,但每种属性只能出现一次。
page指令语法:<%@ page属性= “内容”%>
a) 设置文件编码:contentType主要的功能还是设置MIME,而之后写的charset只是制定了编码,但也可以通过pageEncoding来指定编码

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

b) 设置MIME:为了保证程序的运行不出问题,一定要设置MIME类型
如果希望一个jsp页面想变一种形式显示,就通过设置MIME类型完成
c) 错误页的设置:
完成错误页操作的条件:
指定错误出现时的跳转页,通过errorPage属性指定;
错误处理页必须有明确的标识,通过isErrorPage属性指定;
在这里插入图片描述
2、包含指令:<%@ include … %>,包含其他文件
Jsp中一共存在两种包含的指令
Jsp中如果要想实现包含的操作,有两种做法:静态包含、动态包含
1、静态包含:
语法:<%@ include file= “要包含的文件路径”%>

<%@ include file="test.jsp"%>
<%@ include file="test.html"%>

就是将内容进行了直接的替换,就好比程序中定义的变量一样
2、动态包含:动态包含语句,可以自动区分被包含的页面是静态还是动态。
语法:
不传递参数:
<jsp:include page="{要包含的文件路径|<%=表达式%>}" flushi=“true|flase”/>
传递参数:
<jsp:include page="{要包含的文件路径|<%=表达式%>}" flushi=“true|flase”>
<jsp:param name=“参数名称” value=“参数内容”/>
……可以向被包含页面传递多个参数
</jsp:include>
注:所有的标签指令必须完结
3、<%@ taglib … %>:引入标签库的定义,可以是自定义标签

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

那么到底使用哪一种包含指令比较好呢?
静态包含属于先包含后处理,比如在一个页面中定义了一个x变量,而这个页面被包含在另一个页面中,此时我在这所谓的另一个页面中又定义一个同名变量x,在程序运行时就会出现的500的HTTP状态码,这显然是服务器的错误,会显示x变量重复定义。会出现这种问题,主要是因为静态包含的处理原则。
动态包含就不会出现这样的错误,因为动态包含的时候如果包含的动态页面,则采用先处理后包含的形式,包含的是处理后的结果。
所以,动态包含的操作就更加容易使用,建议使用动态包含。

二、脚本:
脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的
Scriptlet:表示的是脚本小程序所有嵌入在HTML代码中java程序都必须使用Scriptlet标记出来 ,在jsp中一共有三种Scriptlet代码:
<%%>:在此Scriptlet中可以定义局部变量,编写语句

<%
	int x=10;
	String str="helloWorld!";
	out.println("<h2>x="+x+"</h2>");//语句
	out.println("<h2>x="+str+"</h2>");//语句
%>

Scriptlet标签:属于标签指令
如果过多使用<%%>会发现代码非常混乱,所以在新版本的JSP中专门就提供了一种Scriptlet标签
定义格式:
<jsp: Scriptlet>
Java的Scriptlet代码
</jsp: Scriptlet>

<jsp:scriptlet >
	String str1="helloWorld!";
</jsp:scriptlet >

<p><%=str1%></p>

三、声明:一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用
<%! %>:在此Scriptlet中可以定义全局变量、方法、类

<%! public static final String INFO="HelloWorld!"; %> 
<%! int a,b,c; %>
<%!	public int ins(int x,int y){ return x+y; } %> 
<%!
	class Person{
		private String name;
		private Integer age;
		public Person(String name,Integer age){
			this.name=name;
			this.age=age;
		}
		public String toString(){
			return "name="+this.name+";age="+this.age;
		}
	}
%>

如果在<%!%>中定义的是变量的话,那么则表示的是全局变量,每次刷新时不会重复声明。
一般而言,使用<%!%>的操作都是声明全局变量较多,而所谓的定义方法或定义基本类是不使用的,也没必要这样做。
四、jsp表达式:一个JSP表达式中包含的脚本语言表达式,先会转换成String格式,然后再插入到表达式出现的地方。由于表达式的值为String,所以可以在一个文本中使用表达式,不用去管它是否是HTML标签。表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式
<%= 表达式 %>:用于输出一个变量或一个具体内容

<% int x=10; %>
<p>访问量: <%=x%></p>
<p>姓名: <%="Susan"%></p>

out.println()和<%=%>哪一个更好用?
out.println()最直接的问题就是html代码和java代码完全混合在一起,而且生成的代码没有缩进。最关键的是jsp的内容是要显示给用户看的,所以没有层次感,不美观。
使用<%=%>表达式输出,代码虽然复杂了,但HTML代码和Java代码相分离,它可以通过交互性打印表格,完成用户输入表格的行数和列数的功能,并显示,因此在以后的操作中,只要是输出就使用<%=%>。
四、Jsp注释
显示注释:客户端允许看见的<!—注释内容—>
隐式注释:客户端无法看见

1、//注释,单行注释
2、/*注释*/,多行注释
3、<%--注释--%>,jsp注释,客户端无法看见
4、<%
// Java提供的单行注释客户端无法看见
/*
注释  Java提供的多行注释客户端无法看见
*/ 
%>
5、<!—注释—>,HTML注释,通过浏览器查看网页源代码是可以看见注释内容

JSP程序,执行的时候一定要有web容器的支持,所以必须启动Tomcat,之后通过浏览器访问Tomcat,并执行程序,
实际上所谓的显示依然是继承而来的,从HTML语言的风格中继续拿来使用的,jsp最终执行时都变成HTML风格。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值