1.jsp指令
1)page指令:通常位于jsp页面的顶端,同一个页面可以有多个page指令
page指令语法:
<%@ page 属性1="属性值",属性2="属性值2",...属性n="属性值n"%>
属性 | 描述 | 默认值 |
language | 指定jsp页面的脚本语言 | java |
import | 通过该属性来引用脚本语言中使用到的类文件 | 无 |
contentType | 用来指定jsp页面所采用的的编码方式 | text/html, ISO-8859-1 |
2)include指令:将一个外部文件嵌入到当前的jsp文件中,同时解析这个文件中的jsp语句
3)taglib指令:使用标签库定义新的自定义标签,在jsp页面中启用定制行为。
2.jsp注释
1)HTML注释<!-- html注释-->//客户端可见
2)jsp注释<%-- html注释--%>//客户端不可见
3)jsp脚本注释
//单行注释
/**/多行注释
3.jsp脚本
在jsp页面中执行java代码
<%java代码%>
4.jsp声明
在jsp页面中定义变量或者方法
<%!java代码%>
5.jsp表达式
在jsp页面中执行的表达式
<%=表达式%>//此处的表达式不以分号结束
6.jsp页面的生命周期
用户首先发出请求Index.jsp,服务器判断是否是第一次发出这个请求,如果是第一次的话,jsp引擎把这个jsp文件转化为一个servlet文件,生成字节码文件,并且执行jspInit()方法。(自己可以在myeclipse中发布一个项目后可以在tomcat相应的work目录中查看到该*.jsp.class字节码文件)生成的字节码文件被解释并且执行,调用jspService()方法。如果不是第一次请求的话,就说明字节码文件已经存在就可以解释并执行字节码文件,调用jspService()方法。
7.jsp生命周期
jspService()方法被调用来处理客户端的请求,对于每一个请求,jsp引擎创建一个新的线程来处理该请求,如果有多个客户端同时请求该jsp文件,则jsp引擎会创建多个线程,每个客户端请求对应一个线程。以多线程的方式执行可以大大的降低对系统的资源需求,提高系统的并发量和响应时间,但是也需要注意多线程的同步问题所带来的的困扰,由于该servlet始终存在于内存中,所以响应是特别快的。
语法应用举例:打印99乘法表
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>JSP基本语法应用举例</title>
</head>
<body>
<%!
//返回九九乘法表对应的HTML代码,通过表达式来调用,在页面上显示
String printMultiTable1()
{
String s = "";
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
s+=i+"*"+j+"="+(i*j)+" ";
}
s+="<br>"; //追加换行标签
}
return s;
}
//JSP内置out对象,使用脚本方式调用,打印九九乘法表
void printMultiTable2(JspWriter out) throws Exception
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
out.println(i+"*"+j+"="+(i*j)+" ");
}
out.println("<br>"); //追加换行标签
}
}
%>
<h1>九九乘法表</h1>
<hr>
<%=printMultiTable1()%>
<br>
<% printMultiTable2(out);%>
<br>
</body>
</html>