一、jsp简介
JSP全名是Java Server Pages java服务器页面
JSP本质:Servlet
作用:更好地展示动态WEB资源
修改后第一次访问JSP,才会有翻译和编译过程
何时使用HTML,何时使用JSP?
静态WEB资源:HTML,JSP
建议使用HTML。源码直接被浏览器解析执行
JSP第一次要经过翻译和编译过程,本质Servlet,单例的Servlet
如果内存中有大量Servlet,维护单例程序,效率就会特别低
动态WEB资源:JSP
二、jsp中的三种注释和显示范围
书写格式 HTML源码 Java源码 JSP文件
HTML注释
<!-- HTML注释--> √ √ √
Java注释
三种 × √ √
JSP注释 <%-- jsp注释 --%> × × √
三、JSP指令
JSP指令可以让我通过设置指令的属性,去节省很多的java代码,从而设置JSP文件。
1.Page指令
2.Include指令
3.Taglib指令
格式:
<%@ 指令名 属性名1=”属性值1” …. %>
1.page指令:
属性名称 取值or范围 描述
pageEncoding 当前页面 指定页面编码格式
通常被 contentType设置替代了。
如果设置了ContentType,pageEncoding的设置就没有意义了
contentType 响应正文类型 客户端浏览器根据该属性判断文档类型,例如:
HTML格式为text/html
纯文本格式为text/plain
JPG图像为image/jpeg
GIF图像为image/gif
Word文档为application/msword
一般固定为:
contentType="text/html; charset=UTF-8"
翻译后:
Response.setContentType("text/html; charset=UTF-8")
buffer 8kb jsp缓冲区大小
autoFlush true / false 是否自动刷新
errorPage 某个JSP页面的相对路径 指定一个错误页面,如果该JSP程序抛出一个未捕捉的异常,则转到errorPage指定的页面。errorPage指定页面的isErrorPage属性为true,且内置的exception对象为未捕捉的异常
如果页面正常,正常显示
页面有异常,请求转发到指定的页面
服务器内部发出的
路径写法同 请求转发路径(浏览器路径不变)
isErrorPage true / false 指定该页面是否为错误处理页面,如果为true,则该JSP内置有一个Exception对象的exception,可直接使用。默认情况下,isErrorPage的值为false
isErrorPage=”true”,翻译后的java文件中就有一个exception变量,这个变量中封装着上一个出错页面的异常信息。
默认false,默认没有exception变量
import 任何包名、类名 指定在JSP页面翻译成的Servlet源文件中导入的包或类。import是唯一可以声明多次的page指令属性。一个import属性可以引用多个类,中间用英文逗号隔开。
两种写法:
① import=”java.util.Map,java.util.List”
② import=”java.util.Map” import=”java.util.List”
翻译成java代码后:
Import java.util.Map;
Import java.util.List;
language java 指明解释该JSP文件时采用的语言,默认为Java
session true、false 指明该JSP内是否内置Session对象,如果为true,则说明内置Session对象,可以直接使用,否则没有内置Session对象。默认情况下,session属性的值为true。需要注意的是,JSP 引擎自动导入以下4个包:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
1、html中会默认获取到JSESSIONID的Cookie么?
不会。因为没有执行getSession()
2、Servlet中默认会获取JSESSIONID的Cookie么?
默认不会,除非主动调用request.getSession()
3、jsp中默认会获取JSESSIONID的Cookie么?
默认会。翻译后的java代码,默认是有session对象,会有getSession();
特殊情况下不会,session=false
2.include指令
1)静态包含:include指令
<%@ include file=”文件的地址-服务端路径” %>
适用于代码的复用。
即使JSP分别执行有错误,但只要合并后没有错误,就可以正常执行。
2)动态包含:include动作标签
<jsp:include page="relativeURL" />
要求两个JSP必须能够分别正常执行。
3.taglib指令
一般用来导入jstl表达式
1) 需要导入jar包到项目中
2) 还需要为某个JSP导入标签库
<%@ taglib prefix=”” url=””%>
Prefix:给导入的标签库,在当前JSP上起一个别名,外号
uri: 标签库的名称空间
例如:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>