利用JSP来做电子商务网站的过程

利用JSP来做电子商务网站的过程,第1张

JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(htm,html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(jsp)。

用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他 *** 作系统上运行。

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以 *** 作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP与JavaServlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP的10规范的最后版本是1999年9月推出的,12月又推出了11规范。目前较新的是JSP12规范,JSP20规范的征求意见稿也已出台。

JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

1.JSP技术的强势

(1)一次编写,到处运行。在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。

(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。

(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。

(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。

2.JSP技术的弱势

(1)与ASP一样,Java的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。

(2)Java的运行速度是用class常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是“最低性能价格比”了。从另一方面,它还需要硬盘空间来储存一系列的java文件和class文件,以及对应的版本文件。

JSP九种内置对象:

request,response,out,session,application,config,pagecontext,page,exception

一request对象:该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。

二response对象:对客户的请求做出动态的响应,向客户端发送数据。

三.session对象

1什么是session:session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。

2.session对象的ID:当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。

四.aplication对象

1.什么是application:

服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

2.application对象常用方法:

(1)publicvoidsetAttribute(Stringkey,Objectobj):将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。

(2)publicObjectgetAttribute(Stringkey):获取application对象中含有关键字的对象。

五.out对象

out对象是一个输出流,用来向客户端输出数据。out对象用于各种数据的输出。

六.Cookie

1什么是Cookie:

Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。

举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。

如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:windowscookies(在Window2000中则是C:DocumentsandSettings您的用户名Cookies)

Cookie是以“关键字key=值value“的格式来保存纪录的

2.创建一个Cookie对象,调用Cookie对象的构造函数可以创建Cookie。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。

Cookiec=newCookie(“username”,”john”);

3.JSP中如果要将封装好的Cookie对象传送到客户端,使用response的addCookie()方法。

格式:responseaddCookie(c)

4.读取保存到客户端的Cookie,使用request对象的getCookies()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。

一句话,JSP就是Java在网页设计方面一个很广泛的应用

要是要做毕业论文,最好买一本书学学里面的程序

1session对象:
指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是>GLOBALASA只能在根目录下,只有一个文件,当然可以放这两个对象喽。
在上一篇中作者给大家详细介绍了 ASP 内建对象 Response 的使用方法,在这一篇中作者将继续给大家介绍另两个非常实用且重要的 ASP 的内建对象 Application 和 Session。
在 ASP 的内建对象中除了用于发送、接收和处理数据的对象外,还有一些非常实用的代表 Active Server 应用程序和单个用户信息的对象。
让我们先来看看 Application 对象。在同一虚拟目录及其子目录下的所有 asp 文件构成了 ASP 应用程序。我们非但可以使用 Application 对象,在给定的应用程序的所有用户之间共享信息,并在服务器运行期间持久的保存数据。而且,Application 对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
下面就让我们一起来学习 Application 对象。
一、属性
虽然 Application 对象没有内置的属性,但我们可以使用以下句法设置用户定义的属性也可称为集合。
Application(" 属性 / 集合名称 ")= 值
我们可以使用如下脚本声明并建立 Application 对象的属性。
< %
Application("MyVar") = "Hello"
Set Application("MyObj") = ServerCreateObject("MyComponent")
%>
一旦我们分配了 Application 对象的属性,它就会持久地存在,直到关闭 WEB 服务器服务使得 Application 停止。由于存储在 Application 对象中的数值可以被应用程序的所有用户读取,所以 Application 对象的属性特别适合在应用程序的用户之间传递信息。
二、方法
Application 对象有两个方法,它们都是用于处理多个用户对存储在 Application 中的数据进行写入的问题
1、Lock 方法禁止其他客户修改 Application 对象的属性。
Lock 方法阻止其他客户修改存储在 Application 对象中的变量,以确保在同一时刻仅有一个客户可修改和存取 Application 变量。如果用户没有明确调用 Unlock 方法,则服务器将在 asp 文件结束或超时后即解除对 Application 对象的锁定。
让我们来看看下面这段用 Application 来记录页面访问次数的程序 :
< %
Dim NumVisitsNumVisits=0
ApplicationLockApplication("NumVisits") = Application("NumVisits") + 1
ApplicationUnlock
%>
欢迎光临本网页,你是本页的第 < %= Application("NumVisits") %> 位访客 !
将以上脚本保存在你的 asp 文件中,就轻而易举地给你的页面添加了一个计数器。
2、和 Lock 方法相反,Unlock 方法允许其他客户修改 Application 对象的属性。
在上面的例子中,上述例子中,Unlock 方法解除对象的锁定,使得下一个客户端能够增加 NumVisits 的值。
三、事件
1、Application_OnStart
Application_OnStart 事件在首次创建新的会话 ( 即 Session_OnStart 事件 ) 之前发生。当 WEB 服务器启动并允许对应用程序所包含的文件进行请求时就触发 Application_OnStart 事件。Application_OnStart 事件的处理过程必须写在 Globalasa 文件之中。
Application_OnStart 事件的语法如下 :
< SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Application_OnStart
End Sub
< /SCRIPT>
2、Application_OnEnd
Application_OnEnd 事件在应用程序退出时于 Session_OnEnd 事件之后发生,Application_OnEnd 事件的处理过程也必须写在 Globalasa 文件之中。
下面让我们来看看在使用 Application 对象时必须注意的一些事项。
不能在 Application 对象中存储 ASP 内建对象。例如,下面的每一行都返回一个错误。
< %
Set Application("var1")=Session
Set Application("var2")=Request
Set Application("var3")=Response
Set Application("var4")=Server
Set Application("var5")=Application
Set Application("var6")=ObjectContext
%>
若您将一个数组存储在 Application 对象中,请不要直接更改存储在数组中的元素。例如,下列的脚本无法运行。
< % Application("StoredArray")(3) = "new value" %>
这是因为 Application 对象是作为集合被实现的。数组元素 StoredArray(3) 未获得新的赋值。而此值将包含在 Application 对象集合中,并将覆盖此位置以前存储的任何信息。建议您在将数组存储在 Application 对象中时,在检索或改变数组中的对象前获取数组的一个副本。在对数组 *** 作时,您应再将数组全部存储在 Application 对象中,这样您所做的任何改动将被存储下来。下列的脚本对此进行演示。
---asp8aasp---
< %
dim MyArray()
Redim MyArray(5)
MyArray(0)="hello"
MyArray(1)="some other string"
ApplicationLock
Application("StoredArray")=MyArray
ApplicationUnlock
ResponseRedirect "asp8basp"
%>
---asp8basp---
< %
LocalArray=Application("StoredArray")
LocalArray(1)=" there"
ResponseWrite LocalArray(0)&LocalArray(1)
ApplicationLock
Application("StoredArray")=LocalArray
ApplicationUnlock
%>
与 Application 对象具有相近作用的另一个非常实用的 ASP 内建对象就是 Session。我们可以使用 Session 对象存储特定的用户会话所需的信息。当用户在应用程序的页之间跳转时,存储在 Session 对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。
通过向客户程序发送唯一的 Cookie 可以管理服务器上的 Session 对象。当用户第一次请求 ASP 应用程序中的某个页面时,ASP 要检查 >相同点 : 都能用来储存数据
不同点:
1Application 储存在服务端,没有时间限制,服务器关闭即销毁(前提是自己没写销毁方法)
2Session 储存在服务端,客户端(浏览器)关闭即销毁(若长时间不使用 且 浏览器未关闭的情况下, 默认自动销毁时间为20分钟)
3Cookie 储存在客户端,由用户自己销毁

先声明这是转的 不是我自己写的: JSP由于其强大的生命力在web开发中有很广泛的应用,实际上在JSP开发中,JSP程序中只占用了很少的一部分,大部分是由JavaBean完成的,通过JavaBean可以封装业务逻辑,数据库处理等等,由于有了JavaBean才使得程序更为健壮,易于扩展。所以,详细的了解JavaBean的基础,对于我们开发出高质量的JSP应用程序是很有帮助 [一、JavaBean在JSP中的基本语法] JSP中JavaBean是通过标签<jsp:useBean>来声明实现的,基本语法如下: <jsp:userBean id="beanName" class="className" scope="page/request/session/application></jsp:userBean> 由于我们讨论的是生存周期,在上面语法中通过scope属性来实现的: scope="page/request/session/application scope的值代表 JavaBean的生存周期,也就是JavaBean的实例id在JSP程序中存在的范围。下面看看具体的scope四个值的含义: page-JavaBean对象保存在pageContext对象中,有page范围JavaBean实例只能在当前创建这个JavaBean的JSP文件中进行 *** 作, 这个实例只有在请求返回给客户端后或者转移到另外的JSP页面后才会释放掉。page范围的JavaBean常用于进行一次性 *** 作的JavaBean,这样的Bean用的最多,比如大部分表单提交,Bean的一些计算处理等都可以使用page范围的JavaBean request-JavaBean对象保存在request对象中,有request范围的JavaBean实例可以在处理请求所有JSP页面中都存在,这个对象只有在请求全部处理完毕后才会被释放掉,request范围的JavaBean常用于共享同一次请求的JSP页面中,比如判断用户登录功能,如果用户名密码合法就可以forward到一个合法页面中,否则就forward到一个出错页面,当然转移后的页面仍然能够得到用户的输入。 session-JavaBean对象是保存在session范围的JavaBean实例的生存周期是整个session,只有当session过期后才能释放掉,这样常用于共享同一session的JSP页面,比如购物车一般就是放在session中的或者登陆后的用户信息等也可以在session中,注意<%@page标签中不要设置session=false,否则在这个JSP页面中session将不会起作用,幸好JSP默认session=true,所以可以不必管它了。application-JavaBean对象保存在application对象中,有application范围的JavaBean对象的生存周期是整个application。这就意味着这样的JavaBean的生存周期是整个应用程序,当web Server停掉才会消失掉。这样的常用于共享同一application的JSP程序中,比如程序中一些经常用到配置东西如数据库连接URL,全局的计数器或者是聊天室中人员信息等。 [二、scope的具体应用] 上面讲了这么多,大家应用对JavaBean的生存周期有个基本的概念了,在这里我们结合几个简单的例子来看看scope在JavaBean中应用,以便大家能对scope有更深的了解,用来演示的是一个简单的积分处理程序,初始化为o,每一次访问会将积分加上10,我们使用了一个JavaBean文件,用于数值计算处理的,然后在前台使用几个scope设置不同的JSP文件调用这个JavaBean。 <核心的JavaBean文件> public class scope { //初始化成员变量,scope_count代表积分分值 int scope_count=10; public scope(){} //构造方法 public int TestNumber(){ scope_count+=10; return scope_count; } //设置scope_count的值 public void setNumber(int ber){ scope_sount=number; } } <page范围的演示> 下面是为了演示page范围的JSP文件pagejsp文件。 pagejsp <%@ page contentType="text/html";charset=gb2312"%> <html><head> <title>page范围积分程序演示</title> </head> <!--初始化JavaBean并生成一个scope的实例--> <jsp:useBean id="jinqiao" scope="page" class="comscope"/> <body> page范围积分程序演示<br> <center>您当前的积分为<%//调用scope中的TestNumber方法得到当前积分 outprintln(jinqiaoTestNumber());%> </center> </body> </html> 好了,启动web服务器,然后运行这个程序,使用浏览器并点击刷新按钮,看屏幕的变化,你会发现结果总是积分为20,这就说明了TestNumber方法只被执行了一欠,因为jinqiao对象的生存范围是page的,所以只在这个页面有效,每一次调用这个JSP页面都会重新生成一个jinqiao对象,当然积分不会变化了。 <request范围的演示> 下面是为了演示request范围的JSP文件requestjsp。 requestjsp <%@ page contentType="text/html";charset=gb2312"%> <html><head> <title>request范围积分程序演示</title> </head> <!--初始化JavaBean并生成一个scope的实例--> <jsp:useBean id="jinqiao" scope="request" class="comscope"/> <body> page范围积分程序演示<br> <center>您当前的积分为<%//调用scope中的TestNumber方法得到当前积分 outprintln(jinqiaosetNumber(18));%> <jsp:forward page=requestjsp/> </center></body></html> request1jsp <%@ page contentType="text/html";charset=gb2312"%> <html><head> <title>page范围积分程序演示</title> </head> <!--初始化JavaBean并生成一个scope的实例--> <jsp:useBean id="jinqiao" scope="request" class="comscope"/> <body> request范围积分程序演示<br> <center>您当前的积分为<%//调用scope中的TestNumber方法得到当前积分 outprintln(jinqiaoTestNumber());%> </center> </body> </html> 好了,启动web服务器,然后运行这个程序,使用浏览器并点击刷新按钮,看屏幕的变化,你会发现结果总是积分为28为什么会有这样一个结果呢,因为首先我们在requestjsp文件中调用了jinqiao对象setNumber方法设置积分值为18,然后我们将请求转移到request1jsp页面,因为同一相应还没有处理完毕,所以在request1jsp中得到的仍然是同一个jinqiao实例,然后通过jinqiao的TestNumber方法将jinqiao的积分18+10,所以就得到了28了。注意的是<jsp:forward>标签是用来将请求转移的两个页面中的Bean声明包括id名字,request范围等要一模一样才行,这样JSP程序才会认为你要调用的是同一个JavaBean实例 <session范围的演示> 下面是为了演示session范围的JSP文件sessionjsp文件, sessionjsp <%@ page contentType="text/html";charset=gb2312"%> <html><head> <title>session范围积分程序演示</title> </head> <!--初始化JavaBean并生成一个scope的实例--> <jsp:useBean id="jinqiao" scope="session" class="comscope"/> <body> session范围积分程序演示<br> <center>您当前的积分为<%//调用scope中的TestNumber方法得到当前积分 outprintln(jinqiaoTestNumber());%> </center> </body> </html> 好了,启动web服务器,然后运行这个程序,使用浏览器并点击刷新按钮,看屏幕的变化,你会发现结果是变化的,开始时是:您当前的积分为20,然后就是30,40。。,这就说明了TestNumber()方法被执行了多次,因为jinqiao对象生存范围是session的,所以在整个session有效,每一次刷新这个jsp页面都会调用同一个jinqiao对象,所以积分都是同一个了, 另外,为了更方便的理解session,可以将上面的sessionjsp文件完整的拷贝一份生成session1jsp文件,在浏览器中执行sessionjsp文件,看积分值的变化,然后还使用同一个浏览器,输入session1jsp文件,你会发现session1jsp和sessionjsp文件的积分值是一模一样的。重新开一个浏览器,注意不用浏览器菜单功能,而是直接从桌面双击一个IE浏览器,而两个浏览器分别运行sessionjsp,session1jsp文件,刷新多次后,你会发现两个浏览器的积分值不一样了,为什么呢?很简单,因为重新打开一个浏览器就相当于重新开一个session。session不同,积分值当然也不同了。 <application范围的演示> applicationjsp <%@ page contentType="text/html";charset=gb2312"%> <html> <head> <title>application范围积分程序演示</title> </head> <!--初始化JavaBean并生成一个scope的实例--> <jsp:useBean id="jinqiao" scope="application" class="comscope"/> <body> session范围积分程序演示<br> <center>您当前的积分为<%//调用scope中的TestNumber方法得到当前积分 outprintln(jinqiaoTestNumber());%> </center> </body> </html> 好了,启动web服务器,然后运行这个程序,使用浏览器并点击刷新按钮,看屏幕的变化,你会发现结果是变化的,和前面的session几乎一样,开始时,你当前的积分为20,然后就是30、40。。,这就说明了TestNubmer()方法被执行了多次,但是它和session有什么不同呢? 为了解决这个问题,可以将上面的applicationjsp文件完整的拷贝一份生成applicationjsp文件,重新开一个浏览器,注意不用浏览器的菜单功能,而是直接从桌面双击一个IE浏览器,两个浏览器分别运行applicationjsp和application1jsp文件中,刷新多 次后,你会发现两个浏览器的积分值完全一样,这就是application的区别了,很简单因为重新打开一个浏览器只是重新开了一个session,application是针对于整个服务器应用程序而言的,应用程序没有关闭,jinqiao对象是全局的,所以积分值当然一样了,只有将web服务器重新启动后,才会重新生成一个jinqiao对象,积分值才会重新计算。 [三、总结] 本文重点阐述了JSP中的JavaBean的生命周期(scope)问题,到这里,通过前面的例子演示相信大家对于JavaBean的生成周 期概念已经比较熟悉了,只要再经过一段时间的实际应用,相信大家对于JSP中使用JavaBean都得心应手。~


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10610337.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存