Java中的动态网页
Servlet动态网页:Java代码(主) + html(辅) ,在Servlet中编写html代码
JSP动态网页:Java代码(辅) + html(主) ,在html中编写java代码
JSP的本质就是Servlet.
一、JSP基本语法
1)JSP模版元素
JSP中的<html>静态的标签,遵循的是html语法规则!
2)JSP表达式:其结果会显示在页面中
语法:<%="变量/常量"%>,字符串用" "号定界,无需分号结束,
类似于Servlet中resposne.getWriter().println("哈哈");
3)JSP中Java脚本片断
语法:<%一行、多行Java代码,以分号结束%>
生成的源码位于_jspService()方法中,多个JSP脚本片段可以相互访问,可以和html部分相互嵌套使用。
4)JSP声明属性或者方法
语法:<%! 声明实例变量或普通方法%>
5)JSP注释
语法:<%-- JSP特有的注释 --%>
JSP引擎不会将其翻译成Servlet源码,即忽略,这种注释浏览器端看不到
其它注释会被翻译进Sercvlet源码,这种注释浏览器端看得到,并且可以在里边写jsp脚本代码。
如:<!-- 该注释会显示在页面源码上 -->
二、JSP中的三大指令
JSP三大指令:page指令、include指令、taglib指令
1、page指令
用于设定整个JSP页面的属性和相关功能,page指令共有11个属性:
1)contentType属性和pageEncoding属性:
contentType属性指定JSP页面的MIME(是一个网络标准)和编码格式
<%@page contentType="text/html;charset=UTF-8"%>
pageEncoding属性用来指定JSP文件保存时选择的编码格式
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
2)import:在JSP中引入Java的包和类,多个包之间以逗号隔开
<%@ page import=" java.util.Date" %>
3)session:指定当前页面是否能获得当前用户的session对象,缺省是true,如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误。
<%@page session="true"%> 使用默认值,基本不用。
4)errorPage:如果当前页面发生异常,会重定向到errorPage所指定的页面进行处理
<%@ page errorPage="error.jsp" isErrorPage="false" %> 当前页面发生异常,并且没有对异常进行捕获的时候,跳转到error.jsp页面,不指定errorPage的话,画面上直接显示异常的相关信息
5)isErrorPage:允许指定的JSP页面为错误处理页面,配合exception,可以获取错误信息输出到jsp页面上。
6)language属性,指定页面中使用的脚本语言种类,目前只支持java
<%@ page language="java"%>
7)extends属性,用于指定该JSP生成的servlet继承自哪个父类,必须指定包名加类名
<%@ page extends="cn.jq.myservlet"%>,基本不用
8)buffer属性和autoFlush属性
buffer属性用来设置输出流缓冲区,缓冲区的作用就是为了提高IO性能,即减少write的次数。
autoFlush属性用来指定当输出流缓冲区满了时,是否自动刷新缓冲区,若为true,自动把缓冲区的内容输出到底层输出流,若为false,缓冲区满时,会抛出IO异常。基本不用
9)isThreadSafe属性,缺省值为true,指定该JSP文件是否支持多线程访问
<%@ page isThreadSafe="true"%> 此时,多个线程共用同一个servlet实例
<%@ page isThreadSafe="false"%> 此时,每个线程都有一个自己的servlet实例,比较消耗内存资源,所以不建议使用。基本不用
10)info属性,用来设置该jsp文件的介绍信息
<%@page info="This is a jsp page."%> 基本不用
11)isELIgnored属性,用来表示是否支持EL表达式
<%@page isELIgnored="true"%> 不支持EL表达式,EL表达式会被当做普通的html文本
<%@page isELIgnored="false"%> 支持EL表达式
2、include指令
静态包含:表示在JSP编译时插入一个包含文件或者代码的文件,是一种静态包含,静态包含(统一编译):<%@ include file="included.jsp"%>,file属性的值是相对地址。多个jsp文件会合并起来生成一个jsp_servlet文件。
动态包含:动态include(<jsp: include page="head.jsp"/>)
1)动态include的jsp文件独立性很强,是一个单独的jsp文件,多个jsp文件各自生成一个jsp_servlet文件。
2)动态包含总是检查被包含页面的变化,静态包含不一定检查被包含页面的变化.
3)动态包含可带参数,静态包含不能带参数.如:
扩展一下jsp标签,除了 <jsp: include以外,还有<jsp:forward page="path">转发。
3、taglib指令
声明JSP文件使用的标签库(JSP标准标签库,第三方标签库,自定义标签库)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 声明使用JSTL的核心标签库taglib指令让用户能够自定义标签,
知识点整理