1.jsp基本语法
1.1 脚本元素
JSP脚本
所谓脚本代码(Scriptlet),是指JSP中的代码部分,在这个部分中可以使用几乎任何Java的语法。
<%
if(Calendar.getInstance().get(Calendar.AM_PM) == Calendar.AM){
%>
上午好!
<%
} else {
%>
下午好!
<%
}
%>
JSP表达式
JSP中的表达式可以被看做一种简单的输出形式,需要注意的是,表达式一定要有一个可以输出的值。
<%=(new java.util.Date()).toLocaleString()) %>
JSP声明
JSP中的声明用于声明一个或多个变量和方法,并不输出任何的文本到输出流。在声明元素中声明的变量和方法将在JSP页面初始化时进行初始化。
JSP声明中的变量全局可用
JSP脚本中的变量是在Service中
<%!int i=0;%>
<%!public String f(int i){
if(i<3)
return ("…");
return "";
}
%>
JSP声明变量与普通脚本变量的区别:
声明变量将做为JSP翻译生成的Servlet的属性,所有对该JSP的请求将共享此变量;
普通脚本变量将做为JSP翻译生成的Servlet的_jspService()方法中的局部变量,每个对该JSP的请求将被分配给一个同名的此变量。
<%! int count = 0;
synchronized void setCount() {
count++;
}
%>
<%
String date = new java.util.Date().toLocaleString();
%>
<% setCount(); %>
您是第<%=count %>个访问此页面的人,访问时间是:<%=date%>
1.2 指令元素
JSP指令用来向JSP容器提供编译信息。
指令并不向客户端产生任何输出,所有的指令都只在当前页面中有效。
JSP指令元素包括三种:
page指令
include指令
taglib指令
page
page指令描述了和页面相关的信息,如:导入所需类包、指明输出内容类型、控制Session等。
page指令一般位于JSP页面的开头部分
在一个JSP页面中,page指令可以出现多次,但是在每个page指令中,每一种属性却只能出现一次,重复的属性设置将覆盖掉先前的设置。
<%@page 属性列表 %>
<%@page language="java" contentType="text/html; charset=UTF-8"%>
导入包,可以同时导入多个
<%@page import="java.util.*,com.qst.ch05.service.CustomerService"%>
或
<%@page import="java.util.* "%>
<%@page import="com.qst.ch05.service.CustomerService"%>
include
include指令的作用是在页面翻译期间引入另一个文件,被包含的文件可以是JSP、HTML或文本文件。
将被引入的文件的内容放到 引入的位置显示
<%@include file="文件"%>
<%@include file="head.jsp" %>
500错误,不知道为什么
page指定引入文件的地址;
flush="true"表示设定是否自动刷新缓冲区,默认为false,可省略;在页面包含大量数据时,为缩短客户端延迟,可将一部分内容先行输出;
name指定传入包含文件的变量名;
value指定传入包含文件的变量名对应的值。
include指令元素是在翻译阶段就引入所包含的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快。
include动作元素是在JSP页面运行时才引入包含文件所产生的应答文本,被包含的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子元素更加灵活地处理所需要的文件,缺点是执行速度要慢一些。
<jsp:forward>
jsp:forward用于引导客户端的请求到另一个页面或者另一个Servlet。jsp:forward动作可以包含一个或几个jsp:param子动作,用于向所转向的页面传递参数。
page指定转发请求的相对地址;
jsp:param中的name指定向转向页面传递的参数名称;
jsp:param中的value指定向转向页面传递的参数名称对应的值;
<jsp:useBean>
jsp:useBean是JSP中一个非常重要的动作,使用这个动作,JSP可以动态使用JavaBean组件来扩充JSP的功能,由于JavaBean在开发上以及jsp:useBean在使用上简单明了,使得JSP与其它动态网页开发技术有了本质的区别。