1. jsp概要
jsp的全称是java server pages,java的服务器页面
jsp的主要作用是代替servlet程序回传html页面的数据,因为servlet程序回传html页面数据是一件非常繁琐的事情,开发成本和维护成本都极高
jsp页面本质上是一个servlet程序
当我们第一次访问jsp页面的时候,tomcat服务器会帮我们把jsp页面翻译成一个java源文件,并对他进行编译成.class字节码。
打开源码发现,HttpJspBase类直接继承了HttpServlet类
底层实现也是通过输出流,把html页面数据回传给客户端
2. jsp的三种语法
2.1 jsp头部的page指令
< % @ page import = "java.util.Map" % >
< % @ page contentType= "text/html;charset=UTF-8" pageEncoding= "utf-8"
errorPage= "b.jsp" autoFlush= "false" extends = "javax.servlet.HttpServlet" buffer= "6kb" language= "java" % >
属性
描述
language
表示jsp翻译后是声明语言文件,暂时只支持java
contentType
表示jsp返回的数据类型是声明,也是源码中response.setContentType()参数值
pageEncoding
表示jsp页面文件本身的字符集
import
用于导包,导类
autoFlush
是给out输出流使用,设置当out输出流缓冲区满了后,是否自动刷新缓冲区,默认true
buffer
是给out输出流使用,设置out缓冲区的大小,默认8kb
errorPage
设置当jsp页面运行时出错,自动跳转去的错误页面路径
isErrorPage
设置当前jsp页面是否是错误信息页面,默认false。如果是true可以获取异常信息
session
设置访问当前jsp页面,是否会创建HttpSession对象,默认是true
extends
设置jsp翻译出来的Java类默认继承谁
2.2 jsp中的常用脚本
2.2.1声明脚本(很少使用)
< % ! 声明java代码 % >
作用:可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块、内部类等
< % ! private Integer id;
private String name;
private static Map< String, Object> map;
% >
< % !
static {
map = new HashMap < String, Object> ( ) ;
map. put ( "key1" , "value1" ) ;
map. put ( "key2" , "value2" ) ;
}
% >
< % !
public int abc ( ) {
return 123 ;
}
% >
< % !
public static class A {
private int id;
}
% >
2.2.2 表达式脚本(常用)
< %= 表达式 % >
作用:在jsp页面上输出数据
特点:所有的表达式脚本都会被翻译到_jspService()方法中
表达式脚本都会被翻译成为out.print()输出到页面上
由于表达式脚本翻译的内容都在_jspService()方法中,所以_jspService()方法中的对象都可以直接使用
表达式脚本中的表达式不能以分号结束
< %= 12 % > < br/ >
< %= 1.123 % > < br/ >
< %= "我是字符串" % >
< %= map% >
< %= request. getParameter ( "username" ) % >
2.2.3 代码脚本
< %
Java语句
% >
作用:可以在jsp页面中编写java语句写需要的功能
特点:代码脚本翻译后都在_jspService()方法中
代码脚本由于翻译到_jspService()方法中,所以在此方法中的现有对象都可以直接使用
还可以由多个代码脚本块组合完成一个完整的java语句
代码脚本还可以和表达式脚本一起组合使用
< %
int i = 11 ;
if ( i == 12 ) {
System. out. println ( "i==12" ) ;
} else {
System. out. println ( "i!=12" ) ;
}
% >
< table border= "1" cellspacing= "0" >
< %
for ( int j = 0 ; j < 10 ; j++ ) {
% >
< tr>
< td> 第< %= j% > 行< / td>
< / tr>
< br