serlvlet与jsp_第1页
serlvlet与jsp_第2页
serlvlet与jsp_第3页
serlvlet与jsp_第4页
serlvlet与jsp_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JSP与SERVLET学习上的建议n 多多动手实践,总结经验,与人交流多多动手实践,总结经验,与人交流n听(看)明白。听(看)明白。n动手实践。动手实践。n总结经验,记录下来。总结经验,记录下来。n与人交流,讲出来。与人交流,讲出来。为什么学习JavaEE JSP在在JSP页面上嵌套大量的页面上嵌套大量的Java代码,不易维护代码,不易维护当业务需求发生变化的时候,不易扩展当业务需求发生变化的时候,不易扩展我们的网站现在需要进行一些改动,把原来的我们的网站现在需要进行一些改动,把原来的改成改成项目已经开发的很好了,但是我们想增加项目已经开发的很好了,但是我们想增加功能功能什么是JavaEEJa

2、vaSE JSP ServletJavaBean EJBJDBCJNDIXMLStruts Hibernate JSFn 解决方法:解决方法:JavaEE的使用的使用n 定义:定义:JavaEE(Java Enterprise Edition)SpringWeb ServiceJavaEE与后续课程关系n Struts、Hibernate、Spring,它们都是框架,它们都是框架n框架,即框架,即Framework。其实就是某种应用的半成品,就是一组组件,用。其实就是某种应用的半成品,就是一组组件,用来完成自己的系统来完成自己的系统n简单说就是使用别人准备好的一切,来实施自己的项目简单说就是使

3、用别人准备好的一切,来实施自己的项目毛坯房就类似一个框架毛坯房就类似一个框架毛坯房毛坯房装修后的房子装修后的房子可以按照自己的意图装修可以按照自己的意图装修Java EEStruts Hibernate Spring应用程序应用程序JavaEE是基础是基础JavaEE与后续课程关系与后续课程关系JavaEE体系结构n JavaEE分层结构分层结构n表示层表示层-HTML页面页面n中间层中间层-Servlet等组件等组件n数据层数据层-Database(JDBC、JNDI等)等)表示层表示层中间层中间层数据层数据层平房式服务机构平房式服务机构楼房式服务机构楼房式服务机构n 服务机构(银行)办公区

4、域结构服务机构(银行)办公区域结构所有工作区所有工作区域都在一起域都在一起结构清晰结构清晰管理方便管理方便一层:服务大厅一层:服务大厅二层:办公室二层:办公室三层:资料室三层:资料室比比对对JavaEE体系结构n JavaEE体系结构体系结构-三层体系结构三层体系结构表示层表示层中间层中间层Web 服务器服务器数据层数据层数据库表示层技术n 页面显示技术页面显示技术nHTMLnJavaScriptnAjax技术技术 页面显示技术页面显示技术 function test()alert(document.form1.username.value); JavaScript的用法的用法HTML的的FO

5、RM表单表单中间层技术请求请求ServletJavaBeanJSP页面页面执行执行调用调用转向转向响应响应JSTL使用使用n Servlet、JSP与与JavaBean访问访问返回数据返回数据客户端客户端中间层技术n JSPn显示动态内容的服务器网页显示动态内容的服务器网页n JSTLn辅助辅助JSP显示动态内容的标准标签库显示动态内容的标准标签库n Servletn接收客户请求,并做出响应的接收客户请求,并做出响应的Java程序程序nServlet是中间件技术的重要部分,它控制着其他的组件是中间件技术的重要部分,它控制着其他的组件n JavaBeannJavaEE的模型组件的模型组件n 中间

6、层框架技术中间层框架技术nStruts框架框架nStruts框架主要是扩展了框架主要是扩展了Servlet数据层技术n JDBC技术技术nJDBC(Java Database Connectivity ):Java 数据库连接数据库连接nJDBC用来访问数据库和操作数据库表中数据用来访问数据库和操作数据库表中数据n 数据层框架技术数据层框架技术nHibernateJavaBeanJDBC访问访问返回数据返回数据Hibernate访问访问返回数据返回数据JavaBean系统集成技术n JAX-WS技术技术nJAX-WS (Java API for XML Web Services) 是是 Jav

7、aEE 平台的重要组平台的重要组成部分成部分nJAX-WS 简化了使用简化了使用 Java 技术开发技术开发 Web服务的工作服务的工作n JNDI技术技术nJNDI(Java Naming and Directory Interface:Java命名和目录接口)命名和目录接口)是一组在是一组在Java应用中访问命名和目录服务的应用中访问命名和目录服务的API应用程序应用程序JNDI名称名称对象对象电子书店系统n 前台用户模型前台用户模型n重点重点购物车的实现购物车的实现n使用的技术使用的技术Servlet、HttpSession、JDBC、JSTLHTTP协议的定义n HTTP协议协议 超文

8、本传输协议超文本传输协议n无状态协议无状态协议n不用记录谁发出的请求不用记录谁发出的请求,只需给出响应只需给出响应n适用于传输文件适用于传输文件n用于通过用于通过 Internet 发送请求消息和响应消息发送请求消息和响应消息n使用端口接收和发送消息,默认为使用端口接收和发送消息,默认为80端口端口我想同其他我想同其他“人人”交流,交流,怎么办?怎么办?我只会我们我只会我们计算机自己计算机自己的语言的语言对了,我可以使用对了,我可以使用HTTP协议和协议和“别人别人”交谈了交谈了双方进行交谈双方进行交谈提问提问回答回答HTTP协议的演示(2-1)n 在在eclipse中创建项目中创建项目n点击

9、菜单点击菜单“文件文件”“新建新建”“项目项目”n选择选择“MyEclipse”“Web Project”“下一步下一步”n写入工程名称,写入工程名称,Root URL 改为改为“/store”“完成完成”n创建创建index.html和和test.jspHTTP协议的演示(2-2)n 数据的提交和接收数据的提交和接收 index用户名用户名: 密密 码码:HTML文件的文件的FORM表单表单test你输入的用户名是:你输入的用户名是: 你输入的密码是:你输入的密码是: 获取客户端录入数据获取客户端录入数据index.htmlTest.jspGet请求格式n Get请求请求n请求格式请求格式以

10、请求行的形式以请求行的形式(地址重写地址重写)提交数据提交数据提交数据在地址栏可见,不安全提交数据在地址栏可见,不安全具有长度的限制,具有长度的限制,255个字符以内个字符以内monitor监控工具监控工具请求消息请求消息请求行请求行标题信息标题信息方法方法资源名称资源名称版本版本GET/POSTbar01.jpgHTTP/1.1浏览器类型浏览器类型内容类型内容类型User-Agent: Mozilla/4.0 (compatible; MSIE 4.0: Windows XP Accept: image/gif, image/jpeg, text/*, */*Get响应格式n Get请求请求

11、n响应格式响应格式把页面代码和内容返回给浏览器把页面代码和内容返回给浏览器monitor监控工具监控工具响应消息响应消息 状态行状态行标题信息标题信息版本版本状态代码状态代码说明说明HTTP/1.1200OK服务器服务器软件软件修改修改日期日期大小大小(字节字节)内容内容类型类型Server: JavaWebServerLast modified: Tuesday, 07-Sep-04 1:14:34 GMTContent-length: 100Content-type: text/plainPost请求和响应格式n Post请求请求n请求、响应格式请求、响应格式与与Get请求不同,地址栏没有

12、变化请求不同,地址栏没有变化数据在地址栏不可见,安全数据在地址栏不可见,安全理论上没有长度限制理论上没有长度限制TCP/IP Monitor监控工具监控工具HTTP协议的使用n 在在JSP页面上打印信息页面上打印信息n“你好,你好,ACCP!” 和系统当前时间和系统当前时间MyJSP你好你好,ACCP!今天是今天是对时间进行格式化对时间进行格式化演示示例演示示例1:使用使用 JSP打印当前时间打印当前时间为什么需要Servletn 使用使用JSP技术如何编写服务器动态网页?技术如何编写服务器动态网页?n 在在JSP技术出现之前如何编写服务器动态网页?技术出现之前如何编写服务器动态网页?请求请求

13、 响应响应JSP 页面页面 运行运行执行执行Java代码代码 HTML代码代码 生成生成JSP 使用使用 Java 生成动态内容生成动态内容运行运行Servlet程序程序什么是Servlet(2-1)n 定义:定义:Servlet 是一个是一个 Java程序,是在服务器上程序,是在服务器上 运行以处理客户端请求并做出响应的程序运行以处理客户端请求并做出响应的程序请求请求 响应响应Servlet 运行运行于服务器端于服务器端什么是Servlet(2-2)n 初识初识Servletimport java.io.*;import javax.servlet.*;import javax.servle

14、t.http.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charset=gb2312);PrintWriter out = response.getWriter();out.println();out.println( Servlet);out.pri

15、ntln( );out.println(你好,欢迎来到你好,欢迎来到Servlet世界世界);out.println( );out.println();out.close(); 继承继承HttpServlet类类Servlet输出输出HTML标签和内容标签和内容导入所导入所需的包需的包处理请处理请求的方求的方法法将数据将数据发送给发送给客户端客户端Servlet与JSP关系n Servlet与与JSP之间的关系之间的关系nJSP在服务器上转译的文件在服务器上转译的文件out.write(rn);out.write( rn);out.write( MyJsp.jsprn);out.write(

16、rn);out.write( rn);out.write( This is my JSP page. rn);out.write( rn);out.write(rn); MyJsp This is my JSP page. MyJsp.jspMyJsp_jsp.java(.jsp转译后的转译后的.java文件文件)JSP转译后的转译后的.java文件与文件与Servlet的处理方式一样的处理方式一样Servlet是是JSP技术的基础技术的基础 演示示例演示示例1:Tomcat下下MyJsp_jsp.java如何创建Servletn 前台页面的创建前台页面的创建nFORM表单的编写表单的编写n

17、后台后台Servlet的创建的创建n使用使用Eclipse的的Servlet向导创建向导创建Servlet代码模板代码模板n根据表单提交方法,确定接收方法根据表单提交方法,确定接收方法n接收请求数据、处理数据、返回响应页面接收请求数据、处理数据、返回响应页面FORM表单的method属性n FORM表单提交的方法表单提交的方法nGet和和Post MyJsp This is my JSP page. MyJsp FORM的方法有哪些?的方法有哪些?Get | PostGet 与与 Post有什么区别?有什么区别?Get、Post提交数据与提交数据与Servlet有什么关系吗?有什么关系吗?使用

18、向导创建Servletn 在在Eclipse下如何创建下如何创建Servletn在在Eclipse下如何创建下如何创建Servletn首先在缺省包(首先在缺省包(src)下创建)下创建y2javaee.sg.ch02包包n在上述包中使用向导创建在上述包中使用向导创建Servlet 演示示例演示示例2:创建创建Servlet步骤步骤Servlet编程模式(3-1)n Servlet编程基本模式编程基本模式n处理处理Get和和Post请求请求import java.io.IOException;import javax.servlet.*;import javax.servlet.http.*;p

19、ublic class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /doGet方法体内容方法体内容 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /doPost方法体内

20、容方法体内容 使用使用Get方法提交,触发方法提交,触发doGet()方法方法使用使用Post方法提交,触发方法提交,触发doPost()方法方法Servlet编程模式(3-2)n Servlet编程基本模式编程基本模式nServlet如何接收数据如何接收数据import java.io.IOException;import javax.servlet.*;import javax.servlet.http.*;public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request,

21、HttpServletResponse response) throws ServletException, IOException public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException /doPost方法体内容方法体内容参数为表单元素名称参数为表单元素名称接收数据与接收数据与JSP相同相同如果是使用如果是使用Get方法提交数据方法提交数据String userName = request.getParameter(user

22、Name);String userPass = request.getParameter(userPass);/doGet方法体内容方法体内容如果是使用如果是使用Post方法提交数据方法提交数据doPost(request,response);Servlet编程模式(3-3)n Servlet编程的基本模式编程的基本模式n根据结果,转向其他页面或资源根据结果,转向其他页面或资源import java.io.IOException;import javax.servlet.*;import javax.servlet.http.*;public class HelloServlet extend

23、s HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String userName=request.getParameter(userName);String userPass=request.getParameter(userPass);if (userName = accp & userPass = 123) response.sendRedirect(success.jsp);else r

24、esponse.sendRedirect(failure.jsp);使用使用response重定向到其他页面重定向到其他页面与与JSP相同相同Servlet的生命周期(2-1)n Servlet的生命周期由的生命周期由Servlet容器容器(如:如:Tomcat)控制控制n容器如何处理请求容器如何处理请求HTTP请求请求容器请求请求 响应响应 12Servlet实例实例 Servlet通过通过URL找到找到执行执行service(请求,响应请求,响应)34doGet(请求,响应请求,响应)5响应响应6Servlet的生命周期(2-2)n 生命周期的各个阶段生命周期的各个阶段实例化实例化 Ser

25、vlet 容器创建容器创建 Servlet 的实例的实例初始化初始化 该容器调用该容器调用 init() 方法方法服服 务务 如果请求如果请求 Servlet,则容器调用,则容器调用 service() 方法方法销毁实例之前调用销毁实例之前调用 destroy() 方法方法销销 毁毁 生命周期相关方法public class HelloServlet extends HttpServlet public void init() throws ServletException System.out.println(初始化时第一次调用初始化时第一次调用! !); public void doGet

26、(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException PrintWriter out=response.getWriter(); out.println(); out.println( HelloServlet); out.println( ); out.println(你好你好! ! +new Date(); out.println( ); public void doPost(HttpServletRequest request, HttpServlet

27、Response response) throws ServletException, IOException doGet(request,response); public void destroy() System.out.println(“释放资源释放资源! !);初始化方法初始化方法doGet()方法方法doPost()方法方法销毁方法销毁方法程序演示n 运行运行HelloServletn启动启动Tomcat服务服务n在地址栏内输入:在地址栏内输入:http:/localhost:8080/store/HelloServletn运行结果运行结果演示示例演示示例3:HelloServle

28、t常见错误如果程序运行结果如下:如果程序运行结果如下:出现了乱码,什么原因呢?出现了乱码,什么原因呢?public class HelloServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charSet=GBK);/设定中文设定中文PrintWriter out = response.getWrit

29、er(); /使用输出流,输出信息使用输出流,输出信息 设定中文的语句,哪里有错误吗?设定中文的语句,哪里有错误吗?charset而不是而不是charSetServlet的部署(2-1)n 每个每个Servlet为一个组件,必须部署到为一个组件,必须部署到Tomcat中才能运行中才能运行n与与JSP相同相同n 在在Tomcat中部署中部署n部署要遵守容器特定的规定部署要遵守容器特定的规定Servlet的部署(2-2)n 在在Tomcat中如何部署中如何部署tomcatwebappsstoreWEB-INFindex.htmltest.jsplibclasses*.jarHelloServlet

30、.classweb.xml显示页面显示页面第三方第三方jar文件文件.java编译后编译后的的.class文件文件程序配置文件程序配置文件必须的必须的tomcat主目录主目录文档根目录文档根目录Servlet的配置n 在在web.xml文件中配置文件中配置Servletn 如何访问如何访问Servlet HelloServlet y2javaee.sg.ch02.HelloServlet HelloServlet /HelloServlet 两个名称必须相同两个名称必须相同为了方便使用为了方便使用Servlet,取个别名,取个别名完整的包名完整的包名+类名类名访问访问Servlet的的URL常

31、见错误n web.xml文件常见错误文件常见错误nservlet-mapping中的中的name与与servlet-name中的中的name不一致不一致n添加多个添加多个mapping映射映射 Helloservlet y2javaee.sg.ch02.HelloServlet HelloServlet /HelloServlet 请指出哪里有错误?请指出哪里有错误?servlet-name不一致不一致 HelloServlet y2javaee.sg.ch02.HelloServlet HelloServlet /HelloServlet HelloServlet /HelloServlet

32、2 多余的多余的mapping请指出哪里有错误?请指出哪里有错误?转向控制n 数据的传递方式数据的传递方式n从页面到从页面到Servletnrequest.getParameter(“param”); n从从Servlet到到Servlet或或JSPJSP页面页面nRequestDispatcher对象的对象的forward()方法方法nJSP的的forward动作动作实质是实质是RequestDispatcher技术技术String pass = request.getParameter(password);String user = request.getParameter(loginNa

33、me);if (user.equals(accp) & pass.equals(accp) request.setAttribute(loginname, user);RequestDispatcher dispatcher = request.getRequestDispatcher(/ch02/ok.jsp);dispatcher.forward(request, response); else response.sendRedirect(/ch02/register.jsp);定义一个转发器定义一个转发器进行转发进行转发存储要传递的数据存储要传递的数据常见错误n 运行运行ch02文件夹下

34、文件夹下register.jspn 修改方法修改方法错误在哪里?错误在哪里?没有上下文根路径没有上下文根路径把路径写全把路径写全HTTP协议1、HTTP协议有什么特点?协议有什么特点?n 无状态无状态访问访问访问访问我刚刚被访问了两次,但是我我刚刚被访问了两次,但是我不知道,是一个人访问了两次?不知道,是一个人访问了两次?还是两个人各访问一次还是两个人各访问一次HTTP协议不记录用户的信息协议不记录用户的信息2、 什么是无状态什么是无状态 ?HTTP是无状态协议(3-1) 3、如何显示张三和李四分别访问某一网页多、如何显示张三和李四分别访问某一网页多 少次?少次?请求请求请求请求响应响应响应响

35、应张三张三李四李四为了区分用户,需要为了区分用户,需要为不同用户作登记为不同用户作登记HTTP是无状态协议(3-2)购买购买2个商品个商品张三张三李四李四4、在线购物系统中如何对用户进行区分?、在线购物系统中如何对用户进行区分?购买购买3个商品个商品一共购买了一共购买了5个商品,个商品,钱应该从谁的帐户上扣呢?钱应该从谁的帐户上扣呢?HTTP是无状态协议(3-3)Web程序能不能程序能不能像银行卡号那样,根据像银行卡号那样,根据卡号锁定一个用户呢?卡号锁定一个用户呢?请求请求响应响应响应的时候,由服务器响应的时候,由服务器给我分配一个唯一给我分配一个唯一ID号,号,这样就能区别不同的用户了这样

36、就能区别不同的用户了再次请求的时候,再次请求的时候,我带着我带着ID号,号,告诉服务器告诉服务器“我是谁我是谁”如何标识用户?如何标识用户?会话跟踪(2-1)n HttpSession对象对象n服务器为每个会话创建一个服务器为每个会话创建一个HttpSession对象对象n每个会话对象都有一个唯一的每个会话对象都有一个唯一的IDn把用户的数据保存在相应的把用户的数据保存在相应的HttpSession对象内对象内第一次请求第一次请求响应响应服务器创建一个服务器创建一个HttpSession对象对象并把该对象的并把该对象的ID返回给用户返回给用户同时,服务器在内存中开辟同时,服务器在内存中开辟一空

37、间,用来保存该对象数据一空间,用来保存该对象数据把把ID发送给客户端发送给客户端第二次请求把第二次请求把ID一一起发送给服务器起发送给服务器根据根据ID号服务器寻找号服务器寻找内存中相应的数据内存中相应的数据会话跟踪(2-2)请求请求 1请求请求 2请求请求 n.n 什么是会话什么是会话n当前浏览器与服务器间多次的请求、响应关系,被称作一个会话当前浏览器与服务器间多次的请求、响应关系,被称作一个会话使用会话的事例public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletEx

38、ception, IOException HttpSession session = request.getSession(true); Object count = session.getAttribute(COUNTER);int counter = 0;if (count = null) counter = 1; /将第一次计数存入将第一次计数存入session session.setAttribute(COUNTER, new Integer(1); else counter = (Integer) count).intValue(); counter+;/计数加一计数加一/将计数存入

39、将计数存入sessionsession.setAttribute(COUNTER, new Integer(counter); 取出取出session对对象内存储的值象内存储的值把数据存储在把数据存储在session对象内对象内记录不同用户的访问次数记录不同用户的访问次数获得获得session对象对象会话的创建和使用 public HttpSession getSession(); public HttpSession getSession( boolean value);n 会话的创建会话的创建n使用使用HttpServletRequest 的的 getSession() 方法创建会话,方法

40、创建会话, 语法如下:语法如下:n 会话的使用会话的使用n使用使用HttpSession接口的方法,进行接口的方法,进行n保存数据:保存数据:n取出数据:取出数据:public void setAttribute(String param,Object value);public Object getAttribute(String param);获取获取session对象的方法对象的方法getSession( )getSession(boolean bool )getSession( true )truefalse返回与当前关联的返回与当前关联的会话,如果没有就会话,如果没有就创建后将其返回

41、创建后将其返回返回与当前关联返回与当前关联的会话,如果没的会话,如果没有返回有返回null使用时,将其转换成原来数据类型使用时,将其转换成原来数据类型session对象的存在周期n session对象的存在周期对象的存在周期nsession的创建的创建n浏览器访问服务器时,服务器为每个浏览器创建不同的浏览器访问服务器时,服务器为每个浏览器创建不同的session对象对象nsession的关闭的关闭n调用调用session. invalidate()方法方法,使使session对象失效对象失效n访问时间间隔大于非活动时间间隔,访问时间间隔大于非活动时间间隔, session对象失效对象失效n关闭

42、浏览器时,关闭浏览器时,session对象失效对象失效请求请求在内存开辟空间在内存开辟空间保存数据信息保存数据信息清空内存内当前浏清空内存内当前浏览器相关数据信息览器相关数据信息现场编程 在登录页面用户已录入用户名,现编写一个在登录页面用户已录入用户名,现编写一个Servlet接接 收该数据,并把用户名值保存在收该数据,并把用户名值保存在HttpSession对象内对象内public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

43、String userName=request.getParameter(userName);HttpSession session=request.getSession();if (userName!=null & .equals(userName)session.setAttribute(userName, userName);elseresponse.sendRedirect(index.html);.实现电子书店的购物车n 需求描述需求描述 查看所有商品查看所有商品选择商品选择商品放入购物车放入购物车继续购物继续购物结账结账满载而归满载而归电子书店演示n 显示所有书籍的列表显示所有书籍

44、的列表 n 点击某本书,显示书籍的详细信息点击某本书,显示书籍的详细信息n 添加当前书籍到购物车添加当前书籍到购物车电子书店的数据库设计n 数据库设计数据库设计n数据库名:数据库名:booksn数据库表:数据库表:titles电子书店的实体对象设计n 对象的设计对象的设计-书书n属性属性n方法(方法(getter、setter方法方法-为了得到和设置属性值)为了得到和设置属性值)实体类n 书籍类书籍类-BookBean.javaimport java.io.Serializable;public class BookBean implements Serializable private St

45、ring ISBN;/ISBN编号编号private String title;/书名书名private String copyright;/版权版权private String imageFile;/封面图像封面图像private int editionNumber;/版本版本private int publisherID;/出版商出版商IDprivate double price;/价格价格public void setISBN(String isbn) / 设定设定ISBN编号编号ISBN = isbn;public String getISBN() / 返回返回ISBN编号编号retu

46、rn ISBN;使用使用get方法,获得属性值方法,获得属性值BookBean类的私有属性类的私有属性标识该类可序列化标识该类可序列化 使用使用set方法,设置属性值方法,设置属性值电子书店的购物车设计n 购物车的设计购物车的设计-书籍清单书籍清单n书籍名称书籍名称n购买数量购买数量n书籍价格书籍价格n小计小计n总计总计数据库连接类n 数据库连接类:数据库连接类:ConnectionManager.javapublic class ConnectionManager /打开数据库连接打开数据库连接 public static Connection getConnction() Connecti

47、on dbConnection = null;try Class.forName(driver); dbConnection = DriverManager.getConnection(url, user, pass); catch (Exception e) e.printStackTrace();return dbConnection; /关闭数据库连接关闭数据库连接 打开数据库连接,与打开数据库连接,与JSP相同相同演示示例演示示例2:数据库连接类数据库连接类ConnectionManager.java数据库访问类n TitlesBean.javapublic List getTitle

48、s() List titlesList = new ArrayList(); try connection = ConnectionManager.getConnction(); titlesQuery = connection .prepareStatement(select* form titles); ResultSet results = titlesQuery.executeQuery(); while (results.next() BookBean book = new BookBean(); book.setISBN(results.getString(isbn); . /设置

49、其他的属性值设置其他的属性值 titlesList.add(book); catch (Exception exception) exception.printStackTrace(); return titlesList;返回数据列表返回数据列表演示示例演示示例3:数据库访问类数据库访问类TitlesBean.java读取行数据读取行数据, ,并存入并存入List中中显示所有书籍信息的页面n 显示所有商品列表显示所有商品列表-books.jsp % TitlesBean titlesBean = new TitlesBean(); List titles = titlesBean.getTi

50、tles(); session.setAttribute( titles, titles ); /显示显示titles内数据内数据 for(int i=0;i A href=displayBook.jsp?isbn= IMG height=110 src=/store/images/ 调用方法,得到数据列表调用方法,得到数据列表把数据列表存入到把数据列表存入到session中中演示示例演示示例4:显示书籍列表显示书籍列表books.jsp显示书籍详细信息n 显示书籍详细信息显示书籍详细信息-displayBook .jsp%List titles = (List) session.getAtt

51、ribute(titles); int size = titles.size();BookBean book = null;String isbn = request.getParameter(isbn);int i = 0;while (i IMG src=/store/images/ /从从session中得到数据列表中得到数据列表从请求从请求URL中得到请求数据中得到请求数据通过通过isbn在列表中查找在列表中查找bool对象对象从从book中取得相关数据中取得相关数据演示示例演示示例5:书籍详细信息书籍详细信息displayBook.jsp购物车的设计分析n 设计分析设计分析n购物车中

52、对象的设计购物车中对象的设计n使用使用Servlet实现添加书籍到购物车实现添加书籍到购物车n使用使用JSP实现查看购物车的书籍列表实现查看购物车的书籍列表选择商品选择商品放入购物车放入购物车继续购物继续购物结账结账满载而归满载而归本章要完成内容本章要完成内容购物车如何设计呢?购物车如何设计呢?购物车中对象的设计n 对象的设计对象的设计书籍本身信息书籍本身信息书籍购买数量书籍购买数量书籍名称书籍名称书籍编号书籍编号书籍价格书籍价格书籍版本号书籍版本号BookBean购买书籍的数量购买书籍的数量public class CartItemBean implements Serializable p

53、rivate BookBean book; /当前书籍当前书籍 private int quantity; /购物车中的数量购物车中的数量 public CartItemBean( BookBean bookToAdd, int number ) book = bookToAdd; quantity = number; public void setQuantity( int number ) quantity = number; public int getQuantity() return quantity; /其他的其他的setter、getter方法方法对象属性对象属性构造方法构造方法

54、属性的属性的getter、setter方法方法演示示例演示示例1:购物车商品信息类购物车商品信息类CartItemBean.java购物车的实现(2-1)n 使用购物车存放商品使用购物车存放商品装入购物车装入购物车方便存取商品方便存取商品购物车的实现(2-2)n 使用使用Map实现购物车实现购物车BookBeanHashMapsessionkeyvalue存放到存放到存放到存放到书籍数量书籍数量CartItemBeanisbncartMap回顾 什么是什么是Map?Map的特点是什么?的特点是什么? Map的对象如何创建?的对象如何创建? 如何向如何向Map中添加数据?中添加数据? 如何从如何

55、从Map中取数据?中取数据?实现添加书籍到购物车n 添加书籍到购物车添加书籍到购物车 n获得获得session对象对象n从从session中取出中取出BookBean对象对象n创建创建HashMap对象对象,并添加一个条目到并添加一个条目到Map中中public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session = request.getSession(false); BookBean boo

56、k = (BookBean)session.getAttribute(bookToAdd); Map cart = new HashMap(); cart.put(book.getISBN(), new CartItemBean(book, 1); session.setAttribute(cart, cart);获得获得session对象对象从从session中取出书籍信息中取出书籍信息把数据存入到把数据存入到session中中实现添加书籍到购物车n 判断购物车中是否存在该书籍判断购物车中是否存在该书籍n存在:数量加一存在:数量加一n不存在:添加条目到不存在:添加条目到Map中中 HttpS

57、ession session = request.getSession(false); Map cart = (Map) session.getAttribute(cart); if (cart = null) cart = new HashMap(); session.setAttribute(cart, cart); BookBean book = (BookBean) session.getAttribute(bookToAdd); CartItemBean cartItem = (CartItemBean) cart.get(book.getISBN(); if (cartItem !

58、= null) cartItem.setQuantity(cartItem.getQuantity() + 1); else cart.put(book.getISBN(), new CartItemBean(book, 1); 如果如果session中存在该书籍,数量加中存在该书籍,数量加1如果如果session中不存在该书籍,添加条目数量为中不存在该书籍,添加条目数量为1判断判断session中是否存在中是否存在cart对象对象演示示例演示示例2:向购物车中添加商品向购物车中添加商品AddBookToCart.java查看购物车的书籍列表n 转向转向viewCart.jspn从从sessi

59、on中取出中取出Mapn从从Map中取出中取出CartItemBean数据数据Map cart = (Map) session.getAttribute(cart);Set cartItems = cart.keySet();Object isbn = cartItems.toArray();BookBean book;int i = 0;while (i isbn.length) cartItem = (CartItemBean) cart.get(String)isbni); book = cartItem.getBook(); /在页面上显示在页面上显示book数据,如数据,如:book

60、.getTitle(); i+;viewCart.jsp从从session中取出中取出Map得到得到Map中中key值的值的Set集合,再转换成数组,集合,再转换成数组,以便使用循环进行遍历以便使用循环进行遍历通过通过key值取值取value演示示例演示示例3:显示购物车内商品显示购物车内商品viewCart.jspSet介绍 Set接口继承关系和常用方法接口继承关系和常用方法Collection接口接口Set接口接口HashSet类类TreeSet类类int size( )boolean isEmpty() Object toArray() boolean add(Object o) 继承继

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论