第一章 JSP 概述
1.1 静态网页和动态网页
静态网页:是指用HTML 标记语言等来编排,页面中的内容固定不变,存盘后一般以*.html 、*.htm 等文件形式存在的网页。
动态网页:是指网页中的关键内容在服务器端动态生成的网页。 区别:一个动态网页会被服务器当作一个程序来执行,网页中静态内容服务器不作任何处理,直接输出给客户端,动态网页部分的代码会被服务器识别并执行;而静态网页则不会被服务器视为程序,网页中的内容不会被服务器运行。
URL 的格式由三部分组成:
第一部分是协议(或称为服务方式),
第二部分是存有该资源的主机IP 地址或域名(包括端口号),
第三部分是资源的具体地址。
1.2 Servlet 与JSP
Servlet 称为Java 的服务器端应用小程序,是Sun 的服务器端组件技术之一。Servlet 的基本功能与CGI 类似,属于Web 服务器扩展,是Java 平台下实现动态网页的基本技术,具有占用资源少、效率高、可移植性和安全性强等特点。 Servlet 应用模型如图
JSP 与Servlet 的关系
Servlet 向客户端返回的内容需要用out.print()输出,不便于网页版面的设计和修改。为了解决这个问题,Sun 制订了JSP 技术规范,JSP 网页版面的设计与维护可通过DreamWeaver 等工具软件来实现,比Servlet 要直观和容易。
Servlet 客户端 EJB 组件
JavaBean 组
数据库
JDBC
JSP页面最终会被JSP服务器编译成一个Servlet程序来运行。
1.3上机实验环境的搭建
安装J2SE1.5
安装Tomcat
Tomcat5.5的文件夹结构
第二章JSP基本语法
JSP页面的基本结构
1)普通的HTML标记符。
2)JSP标记:如,指令标记、动作标记。
3)变量和方法的声明。
4)Java 程序片。
5)Java 表达式。
把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。
JSP标签、数据和方法声明、Java程序片由服务器负责执行,将需要显示的结果发送给客户的浏览器。
Java 表达式由服务器负责计算,并将结果转化为字符串,然后交给客户的浏览器负责显示。
2.1声明变量
在“<%!”和“%>”标记符之间声明变量,即在“<%!”和“%>”之间放置Java的变量声明语句,变量的类型可以是Java 语言允许的任何数据类型,我们将这些变量称为JSP页面的成员变量
“<%!”和“%>”之间声明的变量在整个JSP页面内都有效。
在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个共享的变量,并且一个线程需要修改这个变量时,我们应对这样的问题作出处理,否则可能发生混乱。
2.2声明方法
在“<%!”和“%>”之间声明方法,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效。
当多个客户同时请求一个JSP页面时,他们可能使用方法操作成员变量,对这种情况应给予注意。
通过synchronized方法操作一个成员变量
2.3Java 程序片
一个JSP页面可以有许多程序片,这些程序片将被JSP引擎按顺序执行。
在一个程序片中声明的变量称做JSP页面的局部变量,它们在JSP页面内的所有程序片部分以及表达式部分内都有效。这是因为JSP引擎将JSP页面转译成Java文件时,将各个程序片的这些变量作为类中某个方法的变量,即局部变量。
一个客户的局部变量和另一个客户的局部变量被分配不同的内存空间
2.4表达式
可以在“<%=”和“%>”之间插入一个表达式
注意:不可插入语句,“<%=”是一个完整的符号,“<%”和“=”之间不要有空格
这个表达式必须能求值。
表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。2.5JSP中的注释
HTML注释:在标记符号“”之间加入注释内容:
JSP引擎把HTML注释交给客户,因此客户通过浏览器查看JSP的源文件时,能够看到HTML 注释。
JSP 注释:在标记符号“<%--”和“--%>”之间加入注释内容:
<%-- 注释内容--%>
JSP引擎忽略JSP注释,即在编译JSP页面时忽略JSP注释。
2.6JSP 指令标签
page 指令用来定义整个JSP页面的一些属性和这些属性的值。
<%@ page 属性1= “属性1的值” 属性2= “属性2的值” ……%>
page指令只能给import属性指定多个值;其它属性只能指定一个值
language属性
定义JSP页面使用的脚本语言,该属性的值目前只能取"java"。
import 属性
该属性的作用是为JSP页面引入Java核心包中的类,
" https://www.doczj.com/doc/7c16810103.html,ng.*"、"javax.servlet.*"、"javax.servlet.jsp.*"、"javax.servlet.http.*"
contentType 属性
定义JSP页面响应的MIME(Multipurpose Internet Mail Extention)类型和JSP页面字符的编码。属性值的一般形式是:
“MIME类型”或“MIME类型;charset=编码”,
session 属性
用于设置是否需要使用内置的session对象。
buffer属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。
buffer属性可以取值“none”,设置out不使用缓冲区。Buffer属性的默认值是8kb。auotFlush 属性
指定out的缓冲区被填满时,缓冲区是否自动刷新。
当buffer的值是“none”时,auotFlush的值就不能设置成false。
isThreadSafe 属性
用来设置JSP页面是否可多线程访问。
info 属性
该属性为JSP页面准备一个字符串,属性值是某个字符串。
getServletInfo();
include 指令标签
<%@ include file= “文件的名字” %>
该指令标签的作用是在JSP页面出现该指令的位置处,静态插入一个文件。被插入的文件必须是可访问和可使用的,即该文件必须和当前JSP页面在同一Web服务目录中。所谓静态插入,就是当前JSP页面和插入的部分合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java类文件。
必须保证新合并成的JSP页面符合JSP语法规则
taglib 指令标签
<%@taglib uri=“URIToTagLibrary” prefix=“tagprefix” %>
uri:Uniform Resource Identifier(URI)根据标签的前缀对自定义的标签进行唯一的命名,URI 可以是一个相对或绝对的路径。
prefix:在自定义标签之前的前缀
2.7JSP 动作标签
include 动作标签
或
page:属性为一相对路径,或者代表相对路径的表达式。
flush:而默认值是false。
可以通过
param动作标签
param标签以“名字—值”对的形式为其它标签提供附加信息,这个标签与jsp:include、jsp:forward、jsp:plugin标签一起使用。
param动作标签:
forward 动作标签
forwar指令:
或
该指令的作用是:从该指令处停止当前页面的继续执行,而转向其它的一个JSP页面。
plugin 动作标签
第三章JSP 内置对象
JSP的内置对象有:resquest 、response、session、application 、out。
3.1request 对象
Request内置对象代表了客户端的请求信息,主要用于接受客户端通过HTTP协议传送给服务器端的数据。在客户端的请求中如果有参数,则该对象就有一个参数列表。它通常是HttpServletRequest的子类,其作用域就是一次Request请求。Request对象包括很多方法,主要有:
略
Get方法和post方法的主要区别是:使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中,而post方法提交的信息不会显示在地址栏中。
当用request对象获取客户提交的汉字字符时,会出现乱码问题,
String str=request.getParameter("girl");
byte b[]=str.getBytes(“ISO-8859-1”);
str=new String(b);
获取HTML表单提交的数据
其中