JavaWeb应用商品的管理.ppt_第1页
JavaWeb应用商品的管理.ppt_第2页
JavaWeb应用商品的管理.ppt_第3页
JavaWeb应用商品的管理.ppt_第4页
JavaWeb应用商品的管理.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

项目四网上商城商品的管理,3.任务实施(1)任务1商品添加(2)任务2MVC模式实现网上商城商品信息的管理,2.相关知识(1)Servlet的基本概念(2)Servlet的建立、配置、调用方法(3)MVC开发模式的建立方法,1.项目引入,课程目标,了解Servlet技术原理,了解Servlet的生命周期、结构;掌握开发Servlet的常用类、接口及其方法;掌握编写、配置和调用Servlet的方法;掌握Servlet的典型应用。,能力目标,能编写Servlet类;能在web.xml中配置servlet;能使用MVC模式进行项目开发,项目引入,网上商城商品后台管理是商城管理的一项重要工作,可以浏览已加入的所有商品信息,并能随时添加新的商品,对现有商品信息进行修改,对不需要的商品进行删除,同时能查看商品的详细信息等等。本项目主要是利用JSPServlet+JavaBean(MVC)模式进行项目开发,通过学习,可以掌握MVC设计思想。,任务4.1使用Servlet添加商品信息,本任务主要是了解JSP中如何访问Servlet,在Servlet中如何访问JSP,在表单中如何向Servlet提交信息,Servlet如何接收请求的信息。应用Servlet技术,添加某一商品的信息到数据库中。,4.1.1任务相关知识点,(1)Servlet的基本概念和生命周期;(2)Servlet的基本结构;(3)Servlet的配置方法;(4)Servlet的使用方法;。,4.1.1相关知识Servlet的基本概念,2019/11/19,7,Servlet是JavaWeb服务器端可用于执行的应用程序,由支持JSP/Servlet的服务器的Servlet引擎负责管理运行。当客户请求一个Servlet时,引擎会将class文件载入内存,如果有多个客户同时访问一个Servlet,则会启用多线程,比CGI启用多进程方式的效率要高很多。Servlet是使用JavaServletAPI编写的Java程序。Servlet要符合相应规范和接口才能在Servlet容器中运行。,4.1.1相关知识Servlet的基本概念,2019/11/19,8,Servlet也可以直接用来编写处理客户端请求的代码。但是编写困难:页面展现的部分会与程序代码混合,不易维护与分工在Servlet中可以控制输出HTML代码,则所有的HTML代码必须一行一行输出。参见示例:SimpleServlet.java因此,在Servlet的基础上推出了jsp技术,但我们为什么还要讨论Servlet呢?理由还是为了让前台的页面表示与后台的业务逻辑处理分的更清,以便更方便地对代码进行维护,更具体的讨论在后面进行。,Servlet开发步骤:编写继承HttpServlet的Servlet类;在Servlet类中重写doGet、doPost方法,并在方法中编写相应的程序代码;在web.xml中进行配置servlet、servlet-mapping;运行。Servlet本身也是一个java类,所以必须存放在WEB-INF/classes之下(在此位置的程序无法直接访问,需映射地址)。另外注意:servlet中用到的包为扩展包,所以在使用时需要指定classpath:%Tomcat%commonlibservlet.jar;,2019/11/19,9,4.1.1相关知识Servlet的开发和部署,一个简单Servlet实例,文件SimpleServlet.javapackagecn.wxgyxy.lx.servlet;importjava.io.*;/HttpServlet属于javax.servlet.http包下;ServletException属于javax.servlet包下importjavax.servlet.*;/HttpServletRequest、HttpServletResponse存放在javax.servlet.http包下importjavax.servlet.http.*;publicclassSimpleServletextendsHttpServlet/表示处理get请求publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsIOException,ServletExceptionPrintWriterout=resp.getWriter();out.println();out.println();out.println(THEFIRSTSERVLET);out.println();out.println();out.println(HelloWorld!);out.println();out.println();out.close();publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsIOException,ServletExceptionthis.doGet(reqt,resp);,2019/11/19,10,一个简单Servlet实例,要访问Servlet程序就必须有一个地址,只能通过WEB映射解决。配置文件web.xml。/在web.xml文件内部起作用的名字simple/Servlet程序所在的包.类名称cn.wxgyxy.lx.servlet.SimpleServlet/Servlet映射地址/在web.xml文件内部起作用的名字,此名字与上面的一致simple/具体的映射路径,前面必须有一个/demo注意:只要是web.xml文件修改,则必须重新启动服务器。访问地址:http:/localhost:8080/demoservlet/demo(假设项目名为demoservlet),2019/11/19,11,4.1.1相关知识Servlet的基本结构,2019/11/19,12,Servlet的基本结构为:通常一个Servlet会扩展HttpServlet,并根据是由GET或POST方法发送而覆盖doGet方法或doPost方法。如果希望Servlet方法对GET或POST方法请求采取相同的动作,只要简单的用doGet调用doPost方法。doGet或doPost方法都有两个参数分别是HttpServletRequest和HttpServletRespose对象。HttpServletRequest对象的方法可以得到输入信息。HttpServletRespose允许输出信息。Servlet需要导入package,即导入java.io.*、javax.servlet.*、javax.servlet.http.*等。,4.1.1相关知识Servlet的基本结构,2019/11/19,13,init方法该方法是HttpServlet类中的方法,可以被重写。以下是该方法的描述:publicvoidinit(ServletConfigconfig)throwsServletExceptionServlet第一次加载时,服务器初始化一个Servlet,即创建一个Servlet对象。这个对象调用init完成初始化工作。该方法在执行时,Servlet引擎会把一个ServletConfig类型的对象传递给init()方法,这个对象就被保存在Servlet对象中,直到Servlet对象被消灭。,service方法该方法是HttpServlet类中的方法,可以在Servlet中直接继承或重写该方法。以下是该方法的描述:publicvoidservice(HttpServletRequestrequest,HttpServletResposeresponse)throwsServletException,IOException当Servlet创建成功和初始化之后,Servlet就调用service方法来处理用户的请求并返回响应。其中第一个参数对象是HttpServletRequest类型对象,该对象封装了用户的请求信息,此对象调用相应的方法可以获取封装信息;另一个参数对象是HttpServletResponse对象,该对象用来响应用户的请求。,2019/11/19,14,4.1.1相关知识Servlet的基本结构,4.1.1相关知识Servlet的基本结构,doGet、doPost和doXxx方法HttpServlet类除了init,service,destroy方法外,还有两个很重要的方法doGet和doPost方法,用来处理客户的请求并作出响应。当服务器引擎第一次收到Servlet请求时候,会使用init方法初始化一个Servlet,以后每当服务器再接受到一个Servlet请求时候,就会产生一个新的线程,并在这个线程中调用service方法检查Http请求类型(GET、POST),同时根据用户的请求方式,对应的调用doGet或doPost方法。因此,在Servlet类中,不必重写service方法来响应客户,直接继承service方法即可。但可以重写doGet和doPost方法来响应请求,这样可以增加响应的灵活性,并降低服务器的负担。,2019/11/19,15,4.1.1相关知识Servlet生命周期,2019/11/19,16,一个Servlet是javax.servlet.http包中Httpservlet类的子类。Servlet的生命周期主要有三个过程组成:首先,当创建Servlet请求时候,Web应用服务器能动态的装载和实例化Servlet。即服务器会创建Servlet的一个实例,并调用Servlet的init()方法初始化。(初始化1次)一旦初始化了Servlet,Servlet就能随时等候处理请求。通常是调用service方法。Service方法会根据HTTP请求的类型调用doGet或doPost方法。(调用多次)当Web服务器关门或Servlet长时间不用时,调用destory方法,Servlet会释放它使用的任何资源。(销毁1次)注意:init方法只被调用一次,即在Servlet第一次被请求加载时调用该方法。当有客户请求同一Servelt时,Web服务器会启动一个新的线程,在该线程中,Servlet调用service方法响应客户的请求,也就是说,每个客户的每次请求都会调用service方法。,4.1.1相关知识Servlet生命周期,2019/11/19,17,生命周期全过程:加载实例化初始化处理请求退出服务,查看示例:LifeCycleServlet.java,并注意当多个用户访问时的运行结果。,4.1.1相关知识Servlet使用,2019/11/19,18,调用Servlet1.在浏览器地址栏中直接调用Servlet(演示)在浏览器地址栏中直接输入url地址::8080/ch4/helpHello2.在页面的form中调用Servlet3.页面超级链接调用Servlet访问Servlet4.使用标签请求转发到Servlet,2019/11/19,19,4.1.2任务实施,goodsAdd.html商品添加,Success.jsp成功页面,添加成功,数据库(goods表),GoodsBean.java表示goods表,ConnDB.java得到连接,界面(Veiw),模型(Model),操作数据库,添加请求,GoodsAddServlet.java处理添加,GoodsAddCl.jsp处理添加,4.1.2任务实施,完成以下任务:1.goodsAdd.html设计,该页面用表单提交某一商品的所有信息给GoodsAddServlet。2.设计GoodsAddServlet.java,该Servlet首先接收表单提交上来的信息,并将信息加入到数据库中,成功添加后,跳转到Success.jsp。在成功页面给出提示信息:“查看此商品”,点击查看则跳转到GoodsAddServlet,从数据库中获得此商品信息,之后在GoodsShow.jsp中显示。本项目中涉及从表单到访问Servlet,从Servlet跳转到JSP页面,从JSP页面到Servlet的各种情况下Servlet的应用。,2019/11/19,20,任务小结,Servlet具有生命周期,加载实例化初始化处理请求退出服务调用Servlet;Servlet要符合相应规范和接口才能在Servlet容器中运行;在创建Servlet后要使用必须在web.xml中进行布署才可使用。调用Servlet有多种形式:在浏览器地址栏中直接调用Servlet(演示)在页面的form中调用Servlet页面超级链接调用Servlet使用标签请求转发到Servlet,2019/11/19,21,课后习题,思考题(1)Servlet的生命周期是什么?(2)Servlet的基本结构是怎样的?(3)doGet、doPost方法分别在什么情况下执行?(4)如何布署Servlet?(5)如何调用Servlet?,任务4.2商品信息管理,在项目3中,尽管通过JavaBean技术已基本实现业务处理和表示层的分离,但还有一些JSP程序并没有实现页面显示功能,而是起到逻辑控制的作用,没有实现表示层和业务处理层的完全分开,这对具有团队协作开发的大型项目来说效率较低。本任务引入控制器control的概念,利用JSPServletJavaBean模式(MVC),实现电子商城中商品信息的浏览、修改、删除等操作管理,初步掌握MVC编程思想。,4.2.1任务相关知识点,(1)doGet、doPost方法功能的实现;(2)HttpServletRequest、HttpServletResponse对象的使用;(3)利用RequestDispatcher对象实现页面跳转。,4.2.1相关知识ServletAPI,2019/11/19,25,ServletAPI是一组Java类与接口,它定义了Web客户端和WebServlet之间的标准接口。Servlet常用类与接口的层次关系:,4.2.1相关知识Servlet常用接口,2019/11/19,26,HttpServletRequest:Servlet引擎使用ServletRequest来向Servlet提供有关客户请求的信息。从ServletRequest接口派生的接口,如HttpServletRequest接口,能够提供进一步的与协议相关的数据。所以HttpServletRequest接口类型的对象常用方法为:publicObjectgetAttribute(Stringname);返回请求中指定属性的值,如果该属性不存在,就返回一个空值。publicvoidsetAttribute(Stringname,Objectobject);在请求中添加一个属性,该属性可以被其他可以访问这个请求对象的对象使用。publicHttpSessiongetSession(booleancreate);返回当前HTTP会话,如果不存在,则创建一个新的会话,create参数为true。publicStringgetParameter(Stringname);返回该属性的属性值publicStringgetParameterValues(Stringname);返回该属性的所有参数值的一个String数组publicRequestDispatchergetRequestDispatcher();返回一个RequestDispatcher对象doGet、doPost方法中的一个参数就是HttpServletRequest类型的。具体示例:UserManaSys_mvc项目中的LoginClServlet.java,4.2.1相关知识Servlet常用接口,2019/11/19,27,HttpServletResponse:Servlet引擎使用ServletResponse向客户端传送经过MIME编码的数据。发送文本数据时,使用getWriter方法返回PrintWriter对象;发送二进制数据时,使用getOutputStream方法返回ServletOutputStream对象HttpServletResponse接口类型对象常用方法:publicServletOutputStreamgetOutputStream()throwsIOException;返回一个记录二进制的响应数据的输出流。如果这个响应对象已经调用getWriter,将会抛出IllegalStateException。publicPrintWritergetWriterthrowsIOException;返回一个PrintWriter对象用来记录格式化的响应实体。如果要反映使用的字符编码,必须修改响应的MIME类型。在调用该方法之前,必须设定响应的content类型。publicvoidsetContentType(Stringtype);设定响应的content类型,这个类型可能会在一些情况(例如当服务器发现有必要的情况下对MIME的字符设置)下被隐式地修改。为了保证能成功设定响应头的content类型,在响应被提交到输出流之前必须调用该方法。publicvoidsendRedirect(Stringurl);将用户重新定向到一个JSP页面或另一个Servlet。具体示例:UserManaSys_mvc项目中的LoginClServlet.java,4.2.1相关知识Servlet常用接口,2019/11/19,28,RequestDispatcher接口RequestDispatcher接口定义一个对象,从客户端接收请求,然后将它转发给服务器的可用资源(例如Servlet、CGI、HTML文件、JSP文件)。RequestDispacher接口中定义的方法为:publicvoidforward(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException;forward方法用来从这个Servlet向其它服务器资源传递请求。当一个Servlet对响应作了初步的处理,并要求其它的对象对此做出响应时,可以使用该方法。应用举例:RequestDispatcher_test.javapublicvoidinclude(ServletRequestrequest,ServletResponseresponse)throwsServletException,IOException用来包括发送给其他服务器资源的响应的内容。,4.2.1相关知识Servlet常用接口,2019/11/19,29,RequestDispatcher接口有三种方法可以得到RequestDispatcher对象。javax.servlet.ServletRequest的getRequestDispatcher(Stringpath)方法,其中path可以是相对路径。javax.servlet.ServletContext的getRequestDispatcher(Stringpath)方法,其中path必须以“/”开头,路径相对于当前的Servlet上下文。使用javax.servlet.ServletContext的getNamedDispatcher(Stringname)得到名为name的一个Web资源,包括Servlet和JSP页面。这个资源的名字在Web应用部署描述文件web.xml中指定。具体请看下面的示例,RequestDispatcher接口举例,web.xml:FirstServletorg.javaresearch.redirecttest.ServletOneSecondServletorg.javaresearch.redirecttest.ServletTwo,2019/11/19,30,RequestDispatcher接口,FirstServlet/firstservlet/SecondServlet/secondservlet/,2019/11/19,31,RequestDispatcher接口举例,其中定义了两个Servlet,名字分别为FirstServlet和SecondServlet,对应的类分别为ServletOne和ServletTwo。可以在浏览器中通过类似于下面的链接访问:http:/localhost:8080/servletdemo/firstservlet/使用1中方法,例如在firstservlet可以写入下面的代码:RequestDispatcherrd=request.getRequestDispatcher(secondservlet);rd.forward(request,response);此时控制权将转向到第二个Servlet了。使用2中的方法,可以从ServletContext中得到RequestDispatcherRequestDispatcherrd=getServletContext().getRequestDispatcher(“/secondservlet”);rd.forward(request,response);使用3中的方法,从上面的web.xml配置文件可以看到定义了两个Servlet,名字分别为FirstServlet和SecondServlet,所以可以得到命名的Dispatcher:RequestDispatcherrd=getServletContext().getNamedDispatcher(SecondServlet);rd.forward(request,response);在转发的过程中,可以将request、session对象设置的属性传递到下一个访问资源,具体的

温馨提示

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

评论

0/150

提交评论