概念

JSP 是是基于Java 语言的一种Web应用开发技术,是运行在服务端的语言
jsp引擎:tomcat服务器,这个服务器负责运行JSP,并将运行结果返回给用户

JSP页面结构(重点)

JSP基本语法 - 图1
image.png``

jsp内容

脚本标识

JSP表达式

表达式用于向页面中输出信息,其语法格式如下
<%= 表达式%>

  1. <body>
  2. <%
  3. double x=0.9,y=3;
  4. %>
  5. <p> Sin(<%=x%>)除以<%=y%>等于<%=Math.sin(x)/y%> </p>
  6. <p> <%=y%>的平方是: <%=Math.pow(y,2)%> </p>
  7. </body>

该方法输出的HTML标记符在页面中同样起作用

JSP声明标识

声明标识用于在JSP页面中定义全局的变量或方法,其语法格式如下
<%! 声明变量或方法的代码 %>
可以被整个JSP页面访问,所以通常使用该标识定义整个JSP页面都需要引用的变量或方法。在当前的JSP页面中有效,它的生命周期时从创建开始到服务器结束。

  1. <body>
  2. <%!
  3. int i=0;
  4. %>
  5. <%
  6. i++;
  7. %>
  8. <p> 您是第 <%=i%> 个访问本站的客户。</p>
  9. </body>

JSP代码片段/脚本程序

代码片段就是在JSP页面中嵌入的Java代码或是脚本代码,其语法格式如下
<% Java代码或是脚本代码 %>
代码片段将在页面请求的处理期间被执行,代码片段中声明的变量称为JSP页面的局部变量。在当前的JSP页面中有效,它的生命周期时页面关闭后销毁。

  1. <body>
  2. <%!
  3. int count=0; //被客户共享的count
  4. synchronized void setCount() { //synchronized修饰的方法
  5. count++;
  6. }
  7. %>
  8. <%
  9. setCount(); //程序片调用同步方法
  10. out.println("您是第"+count+"个访问本站的客户");
  11. %>
  12. </body>

指令标识

定义

JSP指令是为JSP引擎而设计的,指令标识主要用于设定整个JSP页面范围内有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中,对于客户端浏览器是不可见的。

语法格式

**<%@ 指令名 属性1=“属性值1” 属性2=“属性值2” … %>**
或者
<%@ 指令名称 属性1=“属性值1”%> ``<%@ 指令名称 属性2=“属性值2”%>

page指令

最常用的指令
<%@ page attribute="value" %>
包括contentType、import、language、session、buffer、auotFlush、isThreadSafe、pageEncoding
对整个JSP页面有效,与其书写的位置无关

具体属性

language属性
定义JSP页面使用的脚本语言,目前只取java,JSP页面默认有该指令
<%@ page language="java" %>

import属性:
为JSP页面引入Java运行环境提供的包中的类
<%@ page import="java.io.*", "java.util.Date" %>

contentType属性:
确认JSP页面响应的MIME类型和JSP页面字符的编码
<%@ page contentType="text/html;charset=GB2312" %>
charset:设置服务器发送给客户端时的内容的编码

pageEncoding属性:
决定JSP页面的字符编码方式,如果pageEncoding属性不存在,就由contentType属性中的 charset决定;如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。
<%@ page pageEncoding= “UTF-8” %>


contentType的charset设置的编码是指服务器发送给客户端时的内容编码
pageEncoding是jsp文件本身的编码,是指定web容器将jsp编译成java文件时采用什么编码读取jsp文件
_而客户端访问一个jsp文件要经过如下三个阶段:_1、(第一次访问时)web容器将jsp编译成java文件,这个阶段编译器会根据pageEncoding设置的编码读取jsp文件,翻译成统一的utf-8的Servlet类,如果pageEncoding设置错误或未设置,编译出来的java文件就会出现中文乱码。_2、由javac将java源码编译成class字节码,javac用utf-8编码读取java源码,编译成utf-8编码的二进制文件。_3、web容器载入class字节码文件,将内容输出结果到客户端,这一过程内容的编码为contentType设置的编码。

include指令

通过文件包含指令include包含其他文件,可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。(先包含,即原样插入,再整体编译)
<%@ include file= "文件相对 url地址" %>
image.pngimage.png

taglib指令

<%@ taglib prefix=“tagPrefix” tagdir=“tagdir”%>
tag用于指定标签库文件存放位置
prefix用于指定被调用的tag文件的前缀,JSP页面使用带前缀的Tag标记调用相应的Tag文件。
Tag文件:
image.png
tag引入:
image.png


动作标识(重点 别忘了闭合)

JSP指令标识不同的是,JSP动作标识在请求处理阶段起作用。
<jsp:actionName attribute="value" />
image.png

用来包含静态和动态的文件,把指定文件插入正在生成的页面
<jsp:include page=“文件的url” />


param子标识

(后包含,即先编译后,再整体插入)
指令标记在编译时就将子文件载入;
动作标记在运行时才将子文件载入;
image.png

可以作为其他标识的子标识,用于为其他标识传递参数格式,标识不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标识的子标识来使用。
<jsp:param name="参数名" value="参数值" />
image.pngimage.png

(重点)

<jsp:forward page="相对 URL 地址" />

子标识

停止当前页面的继续执行,而转向执行page属性指定的JSP页面

jspforward和response.sendRedirect区别

jspforward response.sendRedirect
服务器内部的跳转 由客户端进行跳转
request对象相同,可以获取到原来参数 request对象不同
地址栏无变化 地址栏有变化
后面的语句不会执行 后面的语句继续执行
速度快 速度慢

<jsp:useBean id="bean的名字" class="创建bean的类" scope="bean的有效范围"/>


JSP注释

html中的注释:
带有JSP表达式的注释: //单行注释内容 / 多行注释内容/