(1) JSP+Servlet重点知识点一遍过!!

第一章 JSP简介

  • JSP以JAVA技术为基础
  • 网络应用中最常见的模式是B/S模式,即需要获取信息的用户使用浏览器向服务器发送请求,服务器对此做出响应,将有关信息发送给用户的浏览器。在B/S模式中,服务器上必须有所谓的Web应用程序,服务器通过运行这些Web应用程序来响应用户的请求,因此,基于B/S模式的网络程序的核心就是设计服务器端的Web应用程序。
  • Web应用程序必须有一个软件来统一管理和运行,这样的软件叫做JSP引擎或JSP容器。
  • Tomcat是一个免费·的开源JSP引擎,也称作Tomcat服务器。

1.1JSP页面

1.webapps下的Web服务目录

  • 通过标记符号"<%","%>"加入的JAVA程序片,一个JSP页面按照文本文件保存,扩展名为 .jsp。
  • 文件的命名必须符合标识符的规定,即名字可以由字母、下划线、美元符号和数字组成,并且第一个字符不能是数学。
  • Tomcat服务器安装目录的webapps目录下的任何一个子目录都可以作为一个Web服务目录。

2.新建Web服务目录

  • 新建Web服务目录中可以将Tomcat服务器所在计算机的某个目录(非webapps下的子目录)设置成一个Web服务目录,并且为该Web服务目录指定虚拟目录,即隐藏Web服务目录的实际位置,用户只能通过虚拟目录访问Web服务目录中的JSP页面。
  • 可以通过修改Tomcat服务器安装目录下conf文件夹中的server.xml文件来设置新的web服务目录。
  • xml文件是区分大小写的,不可以将写成

3.相对目录

  • Web服务目录下的目录称为该web服务目录下的相对web服务目录。

1.2 JSP运行原理

  • 当服务器上的一个JSP页面第一次被请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,并且编译这个JAVA文件生成字节码文件。
  • 字节码文件的主要工作是:(1)把JSP页面中的HTML标记符号交给客户的浏览器负责显示;(2)负责处理JSP标记,并且将有关的处理结果发送到客户的浏览器(3)执行“<%”和“%>”之间的Java程序片,并且把执行结果交给客户的浏览器显示(4)当多个客户请求一个JSP页面的时候,Tomcat服务器为每个客户启动一个线程,该线程负责执行常驻内存的字节码文件来响应相应客户的请求。这些线程由Tomcat服务器来管理,将CPU的使用权在各个线程之间进行快速切换,以保证每个线程都有机会执行字节码文件
  • 如果对JSP页面进行了修改、保存,那么Tomcat服务器会生成新的字节码文件。

1.3 JSP与JAVA Servlet的关系

  • Java Servlet 是Java语言的一部分,提供用于服务器编程的API。
  • Java Servlet 就是编写在服务器端创建对象的Java类,一般称为Servlet类。Servlet类的对象习惯上称为一个servlet。
  • 当客户请求一个JSP页面时,Tomcat服务器自动生成Java文件、编译Java文件,并且用编译得到的字节码文件在服务器端创建一个servlet。但是JSP技术不是Java Servlet 技术的全部,它只是Java Servlet技术的一个成功应用。

第二章 JSP语法

2.1 JSP页面的基本结构

一个JSP页面可由五种元素组合而成:
(1)普通的HTML标记符
(2)JSP标记,如指令标记、动作标记。
(3)变量和方法的声明
(4)Java程序片
(5)Java表达式

  • 当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应相应用户的请求。这些线程由Tomcat服务器来管理,将CPU的使用权在各个线程之间快速切换,以保证每个线程都有机会执行字节码文件。
  • 字节码文件的任务为:(1)把JSP页面中普通的HTML标记符号,交给用户端的浏览器执行显示。(2)JSP标记、变量和方法声明、Java程序片由服务器负责处理和执行,将需要显示的结果发送给用户端的浏览器。(3)Java表达式由服务器负责计算,并且将结果转换为字符串,然后交给用户端的浏览器负责显示。

2.2 变量和方法的声明

  • 在“<%!”和“%>”标记符号之间声明变量和方法。
  • 在“<%!”和“%>”标记符之间声明变量,即在“<%!”和“%>”之间放置Java的变量声明语句。
  • 变量的类型可以是Java语言允许的任何数据类型,将这些变量称为JSP页面的成员变量。
  • JSP引擎为每个用户启动一个线程,这些线程由JSP引擎来管理。
  • 在“<%!”和“%>”标记符之间定义方法,所定义的方法在整个JSP页面有效,可以在Java程序片中被调用。

2.3 Java程序片

  • 可以在“<%”和“%>”之间插入Java程序片。
  • 一个JSP页面可以有许多程序片,这些程序片将被JSP引擎俺顺序进行。
  • 在程序片中声明的变量称作JSP页面的局部变量
  • JSP引擎将JSP页面转译成Java文件时,将各个程序片的这些变量作为类中某个方法的变量,即局部变量。
  • JSP引擎使用多线程来处理程序片,特点如下:
    (1)操作JSP页面的成员变量。任何一个线程对JSP页面成员变量操作的结果,都会影响其他线程。
    (2)调用JSP页面的方法。Java程序片中可以出现方法调用语句,所调用的方法必须是JSP页面曾定义的方法。
    (3)一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。当一个线程将Java程序片执行完毕,运行在该线程中的Java程序片的局部变量释放所占的内存。
  • 当一个线程在执行Java程序片期间调用synchronized方法时,其他线程在其Java程序片中调用这个synchronized方法时就必须等待,直到正在调用synchronized方法的线程调用执行完该方法。
  • 一个JSP页面中的Java程序片会按其在页面中的顺序被执行,而且某个Java程序片中声明的局部变量在其后继的所有Java程序片以及表达式部分内都有效。

2.4 Java表达式

  • 可以在“<%=”和“%>”之间插入一个表达式,这个表达式必须能够求值。表达式的值由服务器负责计算,并且将计算结果用字符串形式发送到用户端显示。
  • 在编写JSP页面时,要把Java表达式按普通的文本来使用。

2.5 JSP中的注释

  • 在“<! – ”和“–>”之间加入注释内容:
<!--   注释内容   -->
  • 在标记符号“<%–”和“–%>”之间加入注释内容:
<%--  注释内容   --%>

2.6 JSP指令标记

  • page指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来,可以用一个page指令指定多个属性的值,如:
<%@ page 属性1=“属性1的值”    属性2=“属性2的值”  ...  %>
  • page指令的作用对整个JSP页面有效,与其书写的位置无关。习惯上把page指令写在JSP页面的最前面。

2.6.1 page指令标记

1.contentType属性

  • 当用户请求一个JSP页面时,Tomcat服务器负责解释执行JSP页面,并且将某些信息发送到用户的浏览器,以便用户浏览这些信息。Tomcat服务器同时负责通知用户的浏览器使用怎样的方法来处理所接收到的信息。

  • contentType属性值确定JSP页面响应的MIME类型和JSP页面字符的编码。

  • JSP页面使用page指令只能为contentType指定一个值,不允许两次使用page指令给contentType属性指定不同的属性值。

2.language属性

  • language属性定义JSP页面使用的脚本语言,该属性的值目前只能取“java”。
  • language属性的默认值为“Java”
<%@ page   language="java"   %>

3.import属性

  • 此属性的作用为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及方法定义部分以及表达式部分使用包中的类。可以为该属性指定多个值,该属性的值可以是某包中的所有类或一个具体的类
<%@ page   import=“java.io.*  ,"java.util.Date”  %>

JSP页面默认import属性已经有如下的值:

“java.lang.*”、“javax.servlet. *”、“javax.servlet.http.*”

当为import指定多个属性值时,如:

<%@ page   import=“java.io.*   %>

那么JSP引擎将JSP页面转译成的Java文件中会有如下的import语句:

import  java.util.*;

4.session属性
session属性用于设置是否需要使用内置的session对象。session的属性值可以是true或false,session属性默认的属性值是true;
5.buffer属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到用户端显示。buffer属性用来指定out设置的缓冲区的大小或者不使用缓冲区。

<%@ page   buffer=“24KB”  %>

buffer属性的默认值是8KB。

6.autoFlash属性
autoFlash属性指定out的缓冲区被填满时,缓冲区是否自动刷新。
当autoFlash属性取值flase时,如果out的缓冲区填满,就会出现缓存溢出异常,当buffer的值是“none”时,autoFlash的值就不能设置为Flase。

7.isThreadSafe属性
isThreadSafe属性用来设置JSP页面是否可多线程访问。isThreadSafe的属性值可取true或false。
8.into属性
into属性的属性值是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串,如:

<%@ page   info=“we are students”  %>

2.6.2 include指令标记

如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:

<% @  include file= "文件的URL "  % >

include指令标记的作用是在JSP页面出现该指令的位置处,静态插入一个文件。被插入的文件必须是可以访问或者是可以使用的。
静态插入:当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。
合并后的JSP页面就两次使用page指令为contentType属性设置了不同的属性值,导致出现语法错误。因为JSP页面中的page指令只能为contentType指定一个值。

2.6 JSP动作标记

动作标记是一种特殊的标记,它影响JSP运行时的功能。
2.6.1 include动作标记

< jsp:include page=" 文件的URL" / >

< jsp :include page=" 文件的URL">
		param 子标记
< /jsp:include>

当include动作标记不需要param子标记时,必须使用第一种形式。

尽管include动作标记和include指令标记的作用都是处理所需要的文件,但是处理方式和处理时间是不同的。include指令标记是在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖当前的JSP页面,其优点是页面的执行速度快;而include动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面,其优点是可以使用param子标记更加灵活地处理所需要的文件,但是缺点是执行速度慢一些。

2.6.2 param动作标记
param标记为其他标记提供附加信息,是param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。

< jsp:param  name="名字"  value=“指定给param的值”>

2.6.3 forward动作标记

< jsp:forward  page=" 要转向的页面"  />

< jsp:forward  page=" 要转向的页面">
	param 子标记
< /jsp:forward >

该指令的作用是:从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。

注意:当forward动作标记不需param子标记时,必须使用第一种形式。

forward标记可以使用param动作标记作为子标记,向转向页面传送信息。forward动作标记指定的要转向的JSP文件可以使用Tomcat服务器提供的request内置对象获取param子标记中name属性所提供的值。
注意:当前页面使用的forward动作标记转向后,尽管用户看到了转向后的页面的效果,但浏览器地址栏中显示的仍然是转向前的JSP页面的URL地址。

2.6.4 useBean 动作标记

该标记用来创建并且使用一个Javabean,是一个非常重要的一个动作标记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值