2023年11月28日发(作者:)
C/S与B/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公司于1999年6月推出的新
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、将动态内容的生成和显示进行分离2、JSP使用简便3、JSP扩展方便4、JSP
容易和其他技术集成5、可靠且移植方便
搭建环境步骤
:1、下载并安装JDK<配置环境变量>
2、下载并安装Tomcat(配置虚拟目录,虚拟目录即为保存网站资源如JSP等文件的目录,配
置虚拟目录分为如下几个步骤。
第一步:在磁盘的任意位置创建一个文件夹,如“E:JavaWebAPP”。该文件夹即为虚拟目录
地址。
第二步:在虚拟目录中创建一个名为“WEB-INF”的文件夹,并在该文件夹中创建一个
文件。
第三步:打开Tomcat安装目录conf文件夹中的,找到文件最末端的“”,
在其上面一行添加如下代码。
第四步:为了使得虚拟目录生效,还需要使Tomcat服务器重新加载文件,所以
必须重启Tomcat服务器。)
下面通过一个简单的JSP程序来验证虚拟目录是否配置成功。
<%
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规范版本。至于Maven和JSTL支
持,则根据实际情况来选择是否添加。
第三步:完成项目配置后,单击【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 Scriptlets、JSP表达式。
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属性设置为false。autoFlush属性的默
认值为true。其属性配置语法格式如下。<%@ page autoFlush="true | false"%>
isThreadSafe用来指定该JSP文件是否支持多线程使用。如果设置为true,则表示该JSP
属性
文件支持多线程的使用,如果设置为false,就是表示该JSP文件只能一次处理一个用户的请
求。isThreadSafe属性的默认值为true。其属性配置语法格式如下。
<%@ page isThreadSafe="true | false"%>
info用来设置该JSP文件的相关信息,可以是任何的信息字符串,并通过
属性
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指令包含两个属性,分别为uri和prefix。其中uri属性用来指定标签库的存放位置,
prefix属性用来指定该标签库使用的前缀。示例代码:
JSP基本动作元素包括
JSP动作元素分为如下五类。
第一类是与存取JavaBean有关的,包括如下三个动作元素。
第二类是JSP基本动作元素,也是JSP 1.2就开始有的动作元素,包括如下六个动作元素。
第三类是JSP 2.0新增的动作元素,主要与JSP document有关,包括如下六个动作元素。
第四类也是JSP 2.0新增的动作元素,主要用来动态的生成XML元素标签的值,包括如下三
个动作元素。
第五类也是JSP 2.0新增的动作元素,主要用来Tag File中,包括如下两个动作元素。
| false”> 其中page属性用来指定被包含文件的URL地址。flush属性用来指定缓冲区满时,是否进行 清空。如果设置为true,那么缓冲区满时将进行清空;如果设置为false,那么缓冲区满时 不会进行清空。flush属性的默认值为false。 任何处理。 <%@ page language="java" contentType="text/html;charset=gb2312"%> 使用jsp:include动态元素包含静态文件 果加到JSP页面中。 <%@ page language="java" contentType="text/html;charset=gb2312"%> 使用jsp:include动态元素包含动态文件 当前日期与时间: 所以的被包含文件包含进来之后,然后再进行编译等处理,可以简单的称其为先包含再处理。 而使用 包含进行,可以简单的称其为先处理再包含。 动作元素 页面。这种跳转为服务器端跳转,所以用户的地址栏不会发生任何的变化。 使用 <%@ page language="java" contentType="text/html;charset=gb2312"%> 使用jsp:forward动作指令实现服务器端跳转。 动作元素 语法格式如下。 用来设定传递参数的值。 <%@ page language="java" contentType="text/html;charset=gb2312"%> 使用include动作元素包含一个包含JSP文件,并传递参数
示例:
动作元素
Applet传递参数;
Applet时,在页面上打印输出的错误提示信息。
JSP内置对象分类:根据各对象的作用不同,可以将这九个对象分为如下四类。
第一类:与Servlet有关的内置对象。包括page和config两个对象。
第二类:与Input/Output有关的内置对象,包括out、request和response三个对象。
第三类:与Context有关的内置对象,包括session、application和pageContext三个对象。
第四类:与Error有关的内置对象。仅包括exception这一个对象。
在JSP中可以通过setAttribute()和getAttribute()这两个方法来设置和取得属性,从而实现数
据的共享。JSP中提供了四种属性保存范围,分别为page、request、session以及application。
page范围,就是指设置的属性只在当前页面有效。通过使用pageContext的setAttribute()方
法来设置属性,并通过pageContext的getAttribute()方法来取得属性。示例:
request范围,就是指属性在一次请求范围内有效。如果页面从一个页面跳转到另一个页面,
那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户端单击超链接跳转到其他
页面,或者通过浏览器地址栏浏览其他网页。如果使用服务器端跳转
仍然有效。通过使用request的setAttribute()方法来设置属性,并通过request的getAttribute()
方法来取得属性。示例:
session范围,也就是指客户端浏览器与服务器一次会话范围内,如果和服务器断开连接,
那么这个属性也就失效了。通过使用session的setAttribute()方法来设置属性,并通过session
的getAttribute()方法来取得属性。示例:
application范围,也就是指在整个服务器范围,直到服务器停止以后才会失效。通过使用
application的setAttribute()方法来设置属性,并通过application的getAttribute()方法来取得
属性。示例:
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相关的更多信息,如session的ID、session
的生成时间等。示例:
通过application对象getMajorVersion()方法,可以很方便地获得主要的Servlet API版本和次
要Servlet API版本。同时通过其getServerInfo()方法,可以获得服务器版本。
示例:
调用application对象的其他方法可以获得更多信息,如文件的MIME类型、获得指定Local
的Application context等。示例:
语句对象Statement可以用来执行SQL语句,从而实现数据库操作。可以通过调用连接对象
的createStatement()方法来创建并获得语句对象Statement。它包含两个主要方法,分别为
executeUpdate()方法和executeQuery()方法。其中executeUpdate()方法主要用来执行数据的
更新操作,如添加记录、更新记录和删除记录;executeQuery()方法主要用来执行数据查询
操作,如查询记录。
通过语句对象Statement的executeQuery()方法用来执行数据查询操作。其中executeQuery()
方法接受一个查询SQL语句,返回一个ResultSet结果集对象。
ResultSet结果集对象包含了所以查询得到的记录。可以通过ResultSet结果集对象的next()
方法来获得一笔一笔的数据。每次调用next()方法,光标都会向下移动,也就是光标指向下
一条数据。如果只要获得第一笔数据,则只需调用一次next()方法就可以了;如果要获得多
条数据,则可以使用循环语句来逐条取出。当光标指到了指定的位置,这时还需要取出每个
字段的数据。这时就必需根据字段的数据类型来调用ResultSet结果集对象相应的getXXX()
方法。比如字段类型为int类型,这时就可以调用getInt()方法。在调用getXXX()方法时还需
要指定查询字段的位置,如果为第一个字段,则指定参数为1,依此类推。
示例:获得所有记录 、获得指定字段记录、获得指定起始位置和条数的记录


发布评论