JSP页面主要由指令标签、HTML、标记语言、注释、嵌入Java代码和JSP动作标签组成。
目录
- 脚本Scriptlet
- 指令标签
- 注释
- JSP的执行流程
1、脚本Srciptlet
脚本Scriptlet即为嵌入的java代码。一般有三种格式,分别用于定义局部变量和方法、全局变量和方法和用于输出表达式。格式为:
<% 局部变量(java代码) %>
<%! 全局变量,定义方法 %>
<%= 输出表达式 %>
以下分别举例:
//<% %>用法演示
<%
//定义局部变量name
String name = "Emove";
//用out对象打印到网页上
out.print("this is "+name);
init();
%>
//<%! %>用法演示
<%!
public String bookName;//全局变量
//定义全局方法
public void init(){
bookName = "JSP程序设计";
}
%>
//<%= %>用法演示
//输出全局变量的值
<%= "this is "+bookName %>
注:JSP中out.println()不能换行,如想换行,在网页代码中用<br />标签即可。
2、指令标签
指令标签不会产生任何内容输入到网页中,主要用于定义整个JSP页面的相关信息。例如使用的语言,导入的类包,指定错误处理页面等。指令标签分别有page指令、include指令和taglib指令。
基本语法:<%@指令 属性名="值"... %>
1、page指令
这是JSP页面最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP页面被服务器解析成Servlet时会转成相应的java代码
<%@ page language="java" import="java.util.Date" pageEncoding="UTF-8"
contentType="text/html; charset=UTF-8"%>
page指令的属性
language:jsp页面使用的脚本语言,默认为Java
import:用于导入类或包
pageEncoding:JSP文件的编码格式,如果设置为ISO-8859-1,那么网页就不支持中文字符,会出现乱码,建议设置为UTF-8
contentType:浏览器解析JSP的编码
extends:用于设置JSP页面继承的Java类,所有的JSP页面执行之前都会被服务器解析成Servlet。该属性不常用,而且有可能影响服务器的性能优化
注:JSP引擎会自动引入下面的包
java.util.*;
javax.servlet.*;
javax.servlet.jsp.*;
javax.servlet.http.*;
2、include指令
include指令用于文件包含。该指令可以在JSP页面中包含另一个文件的内容,但是它只支持静态包含,也就是说被包含文件中的所有内容都被原样包含到该JSP页面中。
常用<%@include file="xxx.jsp"%>,以下是用法演示
<%@page language="java" import="java.util.Date" pageEncoding="UTF-8"%>
<%
Date date= new Date();
String dateString;
dateString = String.format("%Y年%tm月%td日",date,date,date);
%>
<%=dateString%>
<%@page language="java" import="java.util.*" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!document>
<html>
<head>
<title>include指令演示</title>
</head>
<body>
当前日期是:
<%@include file="date.jsp"%>
</body>
</html>
3、taglib标签
该指令用于加载用户自定义的标签。其语法格式如下:
<%@taglib prefix="fix" uri="tagUriorDie"%>
prefix:用于设置加载自定义标签的前缀
uri:用于指定自定义标签的描述符文件的位置
3、注释
html注释<!-- 注释 --> 可以被用户通过查看源码所观察到
java注释 // /* ..... */
jsp注释<%-- 注释 --%>
4、JSP的执行流程
第一次访问:服务端将jsp翻译成java,再将java(servlet文件)编译成calss文件
第二次访问:直接访问class文件
(如果服务端代码修改了,将会在访问时重新翻译和编译)
注:Jsp和Servlet文件可以互相转换