JSP简介:
JSP全称:Java Server Pages,是运行在java服务器中的页面
JSP的本质是一个Servlet,Servlet能做的JSP都可以。
JSp必须运行在服务器中,不能直接在浏览器打开。
JSP是Web网页的技术标准,主要语法组成包括:指令,html模板元素,脚本片段(小脚本),表达式,声明,注释,后缀是*.jsp。
JSP的运行原理:
- 第一次访问JSP页面时,服务器会将XXX.jsp文件翻译成XXX_jsp.java文件,再把该文件编译为XXX_jsp.class 文件,
- 以后再访问该jsp页面只要文件内容没有进行改变就不会再次进行翻译和编译
- 由于jsp本质是一个servlet但是你又没有自己手动给他配置web.xml他却能运行,
原因是:Tomcat中的web.xml会默认注册所有的*.jsp。
基本语法:
- 指令:
语法格式:<%@%>
常用指令:<%@ page %> <%@ include %> <%@ taglib %>
- 模板元素:
html&css&js等
- 脚本片段:
语法格式:<%%>
作用:在_jspService()中,书写java代码
- 表达式:
语法格式:<%=%>
作用:与out.print()和Servlet中的Writer作用一致。
- 声明:
语法格式:<%!%>
作用:在class(index_jsp)中,书写java代码
- 注释:
java: // /**\/
html:<!-- -->
jsp:<%-- --%>
常用指令:
- page指令
语法
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
属性
- language:语言,值为java且仅java。
- contentType:与response.setContentType()作用一致,设置浏览器编码。
- pageEncoding:设置Jsp页面的编码字符集。
- import:导包
- isErrorPage:设置当前页面是否为错误页面,默认值"false"。
- true:设置当前页面为错误页面,可以使用exception内置对象,捕获异常 。
- false:设置当前页面不是错误页面,不可以使用exception内置对象,捕获异常 。
- errorPage:设置当前页面错误时的跳转目标页面。错误需要在_jspService()中才可以捕获。
- include指令
语法:<%@include file="被包含文件的路径" %>
作用:将目标文件包含到当前文件中。
特点:被包含的文件不会被翻译&编译。(先包含,再翻译)PS:就是不会生成java文件和class文件
常用动作标签:
- 转发动作标签
- 语法:\<jsp:forward>\</jsp:forward>
- 作用:在页面中用于转发操作
<jsp:forward page="target.jsp">
<jsp:param value="paramValue" name="paramName"/>
</jsp:forward>
注意:如果转发动作标签不需要设置请求参数,该标签开始与结束标签内部,不允许书写任何内容,(包括空格)
- 动态包含动作标签
- 语法:<jsp:include page="target.jsp">
- 作用:动态包含,将其他页面包含到当前页面中。
特点:被包含的文件同时会被翻译&编译。(先翻译,再包含)
动态包含与静态包含的区别
@include指令 | jsp:include标签 | |
---|---|---|
特点 | 静态包含 | 动态包含 |
语法的基本形式 | <%@ include file=”…”%> | <jsp:include page=”…”/> |
包含动作发生的时机 | 翻译期间 | 请求期间 |
是否生成java文件 | 不生成 | 生成 |
合并方式 | 代码复制 | 合并运行结果 |
包含的内容 | 文件实际内容 | 页面输出结果 |
代码冲突 | 有可能 | 不可能 |
编译次数 | 1 | 包含的文件 + 1 |
适用范围 | 适用包含纯静态内容(CSS,HTML,JS),或没有非常耗时操作。或大量java代码的jsp | 包含需要传递参数。含有大量java代码,运算,耗时很长的操作。 |