2023年11月28日发(作者:)

C/SB/S的比较

C/S模式的优点1、响应速度快2、客户操作界面设计个性化,直观、简单、方便3、开发具

有针对性

C/S模式的不足1、缺少通用性,业务变更不灵活2、分布功能弱,不能够实现快速部署安

装和配置3、兼容性差

B/S模式的优点1、具有分布式特点2、业务扩展简单方便3、维护简单方便

B/S模式的不足1、个性化特点降低2、无法满足快速操作及数据感知的要求3页面动态刷

新,响应速度明显降低4、专用打印输出难以实现,尤其对票据打印,难以实现套打输出

JSP技术

就是Servlet技术的高级抽象,可以理解为Servlet的等价物,但它不仅拥有Servlet

的所有特性与优点,同时也可认为是兼顾了客户端的Servlet技术,更增加了程序开发上的

弹性。Java Server Pages的缩写,是由Sun Microsystem公司于19996月推出的新

JSP

技术。通过在传统的HTML中,利用插入JSP脚本代码从而构成JSP页面。JSP是基于Java Servlet

以及整个Java体系的Web开发技术,利用这一技术来构建安全的、跨平台的动态Web站点,

而且目前在不断进行更新和优化。

JSP运行机制

:可以把执行JSP页面的执行分成两个阶段,一个是转译阶段,一个是请求

阶段。 转译阶段:JSP页面转换成Servlet类。 请求阶段:Servlet类执行,将响应结果发送

至客户端。

1.用户(客户机)访问响应的JSP页面,如localhost:8080/Prj_test/ch02/HelloJSP.jsp

2.服务器找到相应的JSP页面。

3.服务器将JSP转译成Servlet的源代码。

4.服务器将Servlet源代码编译为class文件。

5.服务器将class文件加载到内存并执行。

6.服务器讲class文件执行后生成HTML代码发送给客户机,客户机浏览器根据响应的HTML

代码进行显示。

技术特点

1、将动态内容的生成和显示进行分离2JSP使用简便3JSP扩展方便4JSP

容易和其他技术集成5、可靠且移植方便

搭建环境步骤

1、下载并安装JDK<配置环境变量>

2、下载并安装Tomcat(配置虚拟目录,虚拟目录即为保存网站资源如JSP等文件的目录,配

置虚拟目录分为如下几个步骤。

第一步:在磁盘的任意位置创建一个文件夹,如“E:JavaWebAPP”。该文件夹即为虚拟目录

地址。

第二步:在虚拟目录中创建一个名为“WEB-INF”的文件夹,并在该文件夹中创建一个

文件。

第三步:打开Tomcat安装目录conf文件夹中的,找到文件最末端的“

在其上面一行添加如下代码。

第四步:为了使得虚拟目录生效,还需要使Tomcat服务器重新加载文件,所以

必须重启Tomcat服务器。)

下面通过一个简单的JSP程序来验证虚拟目录是否配置成功。

</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.087px;font-family:宋体;'>第一个</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.039px;font-family:Calibri;'>JSP</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.18px;font-family:宋体;'>程序</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.064px;font-family:Calibri;'>

<%

n("Hello,World!"); //网页上输出Hello,World!语句

%>

3下载并安装Eclipse 4下载并安装MyEclipse

5使用MyEclipse进行Web开发

5.1 使用MyEclipse新建Web项目

第一步:运行MyEclipse开发环境,Package视图中单击右键,选择New|Web Project

打开【New Web Project

第二步:在【Project Name】文本框中输入Web项目的名称。Source folder】文本框用来输

入项目源文件的储存文件夹,一般采用默认文件夹,也就是是“src”Web root folder】文

本框中用来输入Web项目文件的存放的文件夹,一般也采用默认文件夹,也就是WebRoot

Context root URL】文本框用来输入访问该站点的根路径,在默认情况下为“/”加上项目名

称。J2EE Specification Level】用来选择J2EE规范版本。至于MavenJSTL

持,则根据实际情况来选择是否添加。

第三步:完成项目配置后,单击【Finish】按钮,完成Web项目的创建。在Package视图窗

口中将能看到该项目名,单击该项目名即可展开该项目,并能看到项目中的所有文件以及类

库等信息。

5.2 MyEclipse中新建JSP页面

第一步:Package视图中找到Web项目中的WebRoot文件夹,单击右键选择New|JSP

第二步:选择完成后,将打开【Create a new JSP page】对话框。

第三步:在其中的【File Name】文本框中输入JSP文件的文件名,单击【Finish】按钮完成

JSP页面的新建。这时MyEclipse会自动打开新建的JSP页面。

5.3 MyEclipse整合Tomcat

第一步:单击“Window”菜单。在弹出的菜单选项中选择【Rreference】菜单项。

第二步:在【Rreference】窗口中展开左边导航树中的【MyEclipse Enterprise Work】选项,

再展开【Servers】子选项,选择当中的【Tomcat

第三步:在右边的窗口中选择Tomcat的版本,这里选择单击“Configure Tomcat6.x”来配置

Tomca6.x版本的服务器。

第四步:要整合Tomcat,显然应该选中【Enable】单选框,表示该Tomcat服务器为可用。

在【Tomcat base directory】文本框中输入Tomcat的安装目录,或者单击【Browse】按钮来

在本地磁盘中选择Tomcat的安装目录。指定正确的Tomcat安装目录后,下面的两个文本框

会自动进行输入,无需再设置。第五步:单击右边的【Apply】按钮提交,单击【OK】按钮

完成配置。

5.4 MyEclipse部署项目

第一步:在Eclipse主界面中单击部署Web应用的工具按钮。

第二步:在该对话框的Project”下拉列表中选择需要部署的Web应用。单击右边的Add

按钮,将打开用来选择Web服务器的对话框。

第三步:在【Server】下拉列表中选择开始配置好的【Tomcat 6.x】服务器,其他选项采用默

认配置。单击Finish按钮,完成服务器的配置,页面回到Web应用部署对话框,单击OK

按钮完成Web应用部署。

第四步:Web应用部署完成后,单击Eclipse主界面工具栏中的按钮旁的小三角,出现下拉

菜单。选择【Tomcat 6.x|Start】菜单项。启动Tomcat服务器。

第五步:打开浏览器,访问登录页地址“localhost:8080/Prj_test/FirstJSP.jsp”

JSP脚本元素包含JSP声明语句、JSP ScriptletsJSP表达式。

JSP声明语句<%!作为开始,以%>作为结束,其语法格式为:<%! 声明语句 %>。使用声

明语句声明的变量为全局变量,如果有多个用户在执行此JSP页面时,将共享该变量。

JSP Scriptlets<%作为开始,以%>作为结束,其中包含有效的符合Java语法规则的Java

码,其语法格式为:<% Java代码 %>。在JSP Scriptlets中可以包含多个语句,如:方法、变

量、表达式等。

JSP表达式通过<%=为开始,以%>结束,其语法格式为:<%= Java代码 %>JSP表达式中的

代码会首先执行,然后转换成字符串并显示到网页上。

JSP的注释分为两类,一类为可以在客户端显示的注释,即HTML注释;一类是不能在客户

端显示的注释,即JSP注释。

HTML注释使用作为结束,中间包含的代码即为注释部分。

JSP注释使用<%- -作为开始,以--%>作为结束,中间包含的代码即为注释部分。

JSP指令元素

page主要用来设定JSP页面的全局属性,该配置将作用于整个JSP页面,甚至包括静态

指令

包含的文件。其语法格式如下。<%@ page 属性1 = “属性值1” 属性2 = “属性值2”%>

language主要用来声明所使用的脚本语言种类,目前暂时只能使用Java语言。language

属性

属性的默认值也是java。其属性配置语法格式如下。<%@ page language="java">

extends用来指定该JSP页面生成的Servlet是继承于哪个父类,设定时必须指定该类的

属性

全名,即包名加类名。其属性配置语法格式如下。<%@ page extends="继承的父类"%>

import用来指定导入的Java包,和Java语言基础中的import语句作用类似。不过有些

属性

包在JSP编译时就已经导入了,可以不用再进行导入,默认导入的包如下。

.*; t.*; .*; .*;

import属性的配置语法格式如下。<%@ page import="导入的包名" %>

示例代码:

session用来指定该JSP页面中是否可以使用session对象。如果设置为true,则表示该

属性

JSP页面中可以使用session对象;如果设置为false则表示该JSP页面中不可以使用session

对象。session属性的默认值为true。其属性配置语法格式如下。

<%@ page session="true | false "%>

buffer用来指定输出流是否具有缓冲区,以及设置缓冲区大小。如果设置为none,则

属性

表示输出流不具有缓冲功能;如设置为具体的数据,如“40KB”,则表示设置的缓冲区大小

40KB。其默认值为8KB。其属性配置语法格式如下。<%@ page buffer="none | 40KB"%>

autoFlush用来指定缓冲区是否自动进行强制输出。如果设置为true,那么当缓冲区满

属性

的时候仍然能够输出正常;如果设置为false,那么当缓冲区满的时候,将会产生异常。如

buffer属性设置为none,那么就不能将autoFlush属性设置为falseautoFlush属性的默

认值为true。其属性配置语法格式如下。<%@ page autoFlush="true | false"%>

isThreadSafe用来指定该JSP文件是否支持多线程使用。如果设置为true则表示该JSP

属性

文件支持多线程的使用,如果设置为false就是表示该JSP文件只能一次处理一个用户的请

求。isThreadSafe属性的默认值为true。其属性配置语法格式如下。

<%@ page isThreadSafe="true | false"%>

infoJSP

vletInfo方法来取得该信息。其属性配置语法格式如下。

<%@ page info=“JSP文件相关信息”%>示例代码:

errorPage用来设置如果当前JSP文件发生异常错误时,网页重新跳转到能够处理异常

属性

JSP文件。其属性配置语法格式如下。<%@ page errorPage="错误处理页面"%>

isErrorPage用来指定该JSP文件是否为能够处理异常的JSP文件,其默认值为false。其

属性

属性配置语法格式如下。<%@ page isErrorPage="true | false"%>

contentType用来指定该JSP文件的MIME格式,以及网页编码格式。语法格式如下。

属性

<%@ page contentType="text/html;charset=ISO-8859-1"%>示例代码:

pageEncoding用来指定网页的编码格式。其属性配置语法格式如下。

属性

<%@ page pageEncoding=” ISO-8859-1”%>示例代码:

isELIgnored用来指定该JSP文件是否支持EL表达式。如果设置为true则表示JSP文件

属性

讲忽略EL表达式,也就是EL表达式不会被执行;如果设置为false,则表示EL表达式不会

被忽略,该EL表达式将会被执行。语法格式如下。<%@ page isELIgnored="true | false"%>

include指令

用于在JSP文件中插入一个包含文本或者代码的文件。包含的文件可以是一个

HTML文件,或者是一个文本文件,当然也可以是一个JSP文件。使用include指令包含文件,

将会被包含的文件所执行的结果插入到JSP文件放置include指令的位置。只有当被包含的

文件执行完成,该JSP文件才会恢复执行。include指令的语法格式如下。

<%@ include file=”被包含文件地址”%>

其中include指令只有一个属性值,也就是file,其属性值为被包含文件的URL地址。

taglib指令

用来声明此JSP文件使用了自定义的标签,同时引用所指定的标签库以及设置标

签库的前缀。其语法格式如下。<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix"%>

taglib指令包含两个属性,分别为uriprefix。其中uri属性用来指定标签库的存放位置,

prefix属性用来指定该标签库使用的前缀。示例代码:

JSP基本动作元素包括

JSP动作元素可以用来动态的包含文件、网页跳转以及使用JavaBean组件。

JSP动作元素分为如下五类。

第一类是与存取JavaBean有关的,包括如下三个动作元素。

第二类是JSP基本动作元素,也是JSP 1.2就开始有的动作元素,包括如下六个动作元素。

第三类是JSP 2.0新增的动作元素,主要与JSP document有关,包括如下六个动作元素。

第四类也是JSP 2.0新增的动作元素,主要用来动态的生成XML元素标签的值,包括如下三

个动作元素。

第五类也是JSP 2.0新增的动作元素,主要用来Tag File中,包括如下两个动作元素。

动作元素的语法格式如下包含文件URL地址” flush=”true

| false”>动作元素包含两个属性,pageflush

其中page属性用来指定被包含文件的URL地址。flush属性用来指定缓冲区满时,是否进行

清空。如果设置为true,那么缓冲区满时将进行清空;如果设置为false,那么缓冲区满时

不会进行清空。flush属性的默认值为false

动作元素用来包含静态的文件时,那么只是单纯的加到JSP页面中,不会进行

任何处理。

<%@ page language="java" contentType="text/html;charset=gb2312"%>

</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.069px;font-family:宋体;'>包含静态文件</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.042px;font-family:Calibri;'>

使用jsp:include动态元素包含静态文件

动作元素用来包含的文件为动态的文件,那么会先进行处理,然后将处理的结

果加到JSP页面中。

<%@ page language="java" contentType="text/html;charset=gb2312"%>

</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.069px;font-family:宋体;'>包含动态文件</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.042px;font-family:Calibri;'>

使用jsp:include动态元素包含动态文件

当前日期与时间:

动作元素和<%@ include%>指令元素的区别:使用<%@ include%>指令元素是将

所以的被包含文件包含进来之后,然后再进行编译等处理,可以简单的称其为先包含再处理。

而使用动作元素是先将所以的代码处理完成之后,再将处理完成的代码的结果

包含进行,可以简单的称其为先处理再包含。

用来转移用户的请求,使得用户请求的页面从一个页面跳转到另一个

动作元素

页面。这种跳转为服务器端跳转,所以用户的地址栏不会发生任何的变化。

动作元素的语法格式如下。跳转文件URL地址” >

使用动作元素实现页面跳转

<%@ page language="java" contentType="text/html;charset=gb2312"%>

jsp:forward</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.058px;font-family:宋体;'>动作指令</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.042px;font-family:Calibri;'>

使用jsp:forward动作指令实现服务器端跳转。

用来传递参数,一般与作用联合使用。其

动作元素

语法格式如下。参数名” value=”参数值”/>

动作元素包含两个属性,一个是name用来设定传递参数的名称;一个是value

用来设定传递参数的值。

动作元素搭配动作元素

<%@ page language="java" contentType="text/html;charset=gb2312"%>

</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.179px;font-family:宋体;'>包含</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.039px;font-family:Calibri;'>JSP</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.087px;font-family:宋体;'>文件并传递参数</span><span style='font-size:15.84px;color:#000000;letter-spacing:-0.064px;font-family:Calibri;'>

使用include动作元素包含一个包含JSP文件,并传递参数

示例:

三个动作元素,一般都是搭配起来使用。其中

用来在JSP中嵌入Java插件;动作元素用来给Bean或者

动作元素

Applet传递参数;动作元素用来指定当浏览器不支持或无法启动Bean或者

Applet时,在页面上打印输出的错误提示信息。

JSP内置对象分类:根据各对象的作用不同,可以将这九个对象分为如下四类。

第一类:与Servlet有关的内置对象。包括pageconfig两个对象。

第二类:与Input/Output有关的内置对象,包括outrequestresponse三个对象。

第三类:与Context有关的内置对象,包括sessionapplicationpageContext三个对象。

第四类:与Error有关的内置对象。仅包括exception这一个对象。

JSP中可以通过setAttribute()getAttribute()这两个方法来设置和取得属性,从而实现数

据的共享。JSP中提供了四种属性保存范围,分别为pagerequestsession以及application

page范围,就是指设置的属性只在当前页面有效。通过使用pageContextsetAttribute()

pageContextgetAttribute()

request范围就是指属性在一次请求范围内有效。如果页面从一个页面跳转到另一个页面,

那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户端单击超链接跳转到其他

页面,或者通过浏览器地址栏浏览其他网页。如果使用服务器端跳转,则该属性

仍然有效。通过使用requestsetAttribute()方法来设置属性,并通过requestgetAttribute()

方法来取得属性。示例:

session范围,也就是指客户端浏览器与服务器一次会话范围内,如果和服务器断开连接,

那么这个属性也就失效了。通过使用sessionsetAttribute()方法来设置属性,并通过session

getAttribute()方法来取得属性。示例:

application范围,也就是指在整个服务器范围,直到服务器停止以后才会失效。通过使用

applicationsetAttribute()方法来设置属性,并通过applicationgetAttribute()方法来取得

属性。示例:

request对象包括一系列方法用来获得客户端请求参数。

示例:

通过request对象的getParameterNames()方法可以获得所有的参数名称。

示例: 前面接收到参数都只有一个

参数值,在有些情况下一个参数可能拥有多个参数值,比如多选框,多选列表。要接收多个

参数值,就需要使用request对象的getParameterValues()方法。

示例:

通过response对象的sendRedirect()方法设置页面重定向,从而实现页面跳转。这种跳转将

改变浏览器地址栏信息,所以也称为客户端跳转。示例:

通过response对象的addIntHeader()方法添加一个标题为Refresh的标头,并指定刷新间隔

时间,从而实现页面自动刷新。示例:

通过response对象的addHeader()方法添加一个标题为Refresh的标头,并指定页面跳转时

间及跳转页面,从而实现页面自动跳转。示例:

通过out对象的print()方法和println()方法进行页面输出,不同的println()方法输出完成后,

会在字符串后面添加换行标记。示例:

通过out对象的getBufferSize()方法可以获得缓冲区的大小,而通过getRemaining()方法可以

获得缓冲区剩余大小。通过这两个值可以很容易地求得缓冲区使用大小。

示例:

通过session对象的setMaxInactiveInterval()方法可以设置session的生命周期,可以通过

getMaxInactiveInterval()方法来获得session的生命周期。示例:

调用session对象的其他方法可以获得与session相关的更多信息,如sessionIDsession

的生成时间等。示例:

通过application对象getMajorVersion()方法,可以很方便地获得主要的Servlet API版本和次

Servlet API版本。同时通过其getServerInfo()方法,可以获得服务器版本。

示例:

调用application对象的其他方法可以获得更多信息,如文件的MIME类型、获得指定Local

Application context等。示例:

语句对象Statement可以用来执行SQL语句,从而实现数据库操作。可以通过调用连接对象

createStatement()方法来创建并获得语句对象Statement。它包含两个主要方法,分别为

executeUpdate()方法和executeQuery()方法。其中executeUpdate()方法主要用来执行数据的

更新操作,如添加记录、更新记录和删除记录;executeQuery()方法主要用来执行数据查询

操作,如查询记录。

通过语句对象StatementexecuteQuery()方法用来执行数据查询操作。其中executeQuery()

方法接受一个查询SQL语句,返回一个ResultSet结果集对象。

ResultSet结果集对象包含了所以查询得到的记录。可以通过ResultSet结果集对象的next()

方法来获得一笔一笔的数据。每次调用next()方法,光标都会向下移动,也就是光标指向下

一条数据。如果只要获得第一笔数据,则只需调用一次next()方法就可以了;如果要获得多

条数据,则可以使用循环语句来逐条取出。当光标指到了指定的位置,这时还需要取出每个

字段的数据。这时就必需根据字段的数据类型来调用ResultSet结果集对象相应的getXXX()

方法。比如字段类型为int类型,这时就可以调用getInt()方法。在调用getXXX()方法时还需

要指定查询字段的位置,如果为第一个字段,则指定参数为1,依此类推。

示例:获得所有记录 、获得指定字段记录、获得指定起始位置和条数的记录