Java Web应用开发项目教程 课件 第六章 基于MVC模式的订单模块_第1页
Java Web应用开发项目教程 课件 第六章 基于MVC模式的订单模块_第2页
Java Web应用开发项目教程 课件 第六章 基于MVC模式的订单模块_第3页
Java Web应用开发项目教程 课件 第六章 基于MVC模式的订单模块_第4页
Java Web应用开发项目教程 课件 第六章 基于MVC模式的订单模块_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb应用开发计算机与软件学院第6章基于MVC模式的订单模块■本章要点:

前台订单操作功能设计与实现后台订单操作功能设计与实现Servlet控制器设计与实现模型JavaBean业务操作设计与实现MVC开发模式JSP与Servlet关系6.1使用JSP+Servlet+JavaBean

实现订单操作■功能分析与设计前台:会员查看自己所有的订单在前台JSP页面(cartSelect.jsp)可以提交四种请求:

1.查看自己的所有订单

2.在自己所有的订单中查看已经出货的订单

3.在自己所有的订单中查看尚未出货的订单

4.查看自己某一订单的详细信息6.1使用JSP+Servlet+JavaBean

实现订单操作■功能分析与设计功能图6.1使用JSP+Servlet+JavaBean

实现订单操作■功能分析与设计操作流程6.1使用JSP+Servlet+JavaBean

实现订单操作■功能分析与设计

后台管理员:后台JSP页面,可以提交六种请求:

1.查看商城所有的订单

2.查看所有已经出货的订单

3.查看所有尚未出货的订单

4.查看某一订单的详细信息

5.对某一订单进行出货操作

6.删除某一订单6.1使用JSP+Servlet+JavaBean

实现订单操作■功能分析与设计功能图6.1使用JSP+Servlet+JavaBean

实现订单操作■功能分析与设计

●MVC开发模式

通常这种分层方式被称为MVC(ModelViewController)三层结构。请求由Controller(控制器)开始,分发给对应业务操作,Model(模型)代表的数据模型承担业务操作,最后将得到的结果送到View(视图)层显示。6.1使用JSP+Servlet+JavaBean

实现订单操作■订单显示开发流程(orderList.jsp)

登录会员点击“查看订单”菜单,向Servlet容器发送请求,Servlet容器接收客户请求,查询会员所有订单信息,最后将响应结果转发到订单显示页面。订单显示页面如下:6.1使用JSP+Servlet+JavaBean

实现订单操作■Servlet容器根据orderAction区分客户请求主要涉及:查当前用户订单:orderAction="orderAbstract"))返回:list=order.selectOrderByName(curUserName)orderAction.equals("orderDelivered")返回:list=order.selectOrderByNameAndDeliverySign(用户,出货标志);某个订单详细信息:orderAction="orderDetail"))返回:list=orderDetail.selectOrderDetailByNumber(orderId);6.1使用JSP+Servlet+JavaBean

实现订单操作■开发流程1.添加“查询订单”入口,发起的http请求。2.在类OrderDao.java中,定义查询会员订单的方法。3.创建Servlet控制器类OrderServlet.java,重写doPost()方法,在方法中完成业务逻辑:(1)获取会员请求类别信息,存到orderAction中;(2)响应http查询订单请求,执行相应的业务逻辑;(3)调用方法,从后台取得会员所有订单资料;(4)转发页面至orderList.jsp页面,显示订单信息。4.修改配置文件web.xml。5.创建订单显示页面orderList.jsp页面,从request中取得订单信息并显示。6.1使用JSP+Servlet+JavaBean

实现订单操作■显示订单详细开发流程概述(orderItemList.jsp

控制器orderAction和orderId的值,确定需执行的操作;其中第一个参数确定是显示详细订单信息,第二个参数是订单编号;形如,http://localhost:8080/estore/OrderServlet?orderAction=orderDetail&orderId=2014100711402202921386.1使用JSP+Servlet+JavaBean

实现订单操作■编程详解orderItemList.jsp1.添加查询入口,传递订单号orderId,发起http请求。2.添加方法OrderDetailDao.selectOrderDetailByNumber(StringorderId)。3.在doPost()中响应http“订单详细信息”请求,并完成业务处理。4.新建orderItemList.jsp页面,从request中取得订单详细集合,遍历集合,显示订单信息。6.1使用JSP+Servlet+JavaBean

实现订单操作■Servlet控制器OrderServlet.java的实现Servlet与JspJSP是一种特殊的Servlet,所有的JSP页面最终都会被服务器转换成Servlet来执行。JSP页面被请求时,服务器会先根据JSP页面生成Java文件,然后使用jdk的编译器将此文件编译,得到的class文件处理用户的请求并返回响应。再次请求JSP页面,服务器先检查JSP文件是否被修改过修改:重新生成Java,重新编译没有修改:直接运行上次的class文件

6.1使用JSP+Servlet+JavaBean

实现订单操作■Servlet控制器OrderServlet.java的实现●JSP文件运行过程图6.1使用JSP+Servlet+JavaBean

实现订单操作示例第一步:编写HelloServlet.java类,编译成class放在WEB-INF/classes下。packageservlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassHelloServletextends

HttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();out.println("hello");}}HelloServlet在doGet()方法中获取response(响应),写入“hello”。6.1使用JSP+Servlet+JavaBean

实现订单操作示例第二步:修改WEB-INF目录下的web.xml,添加HelloServlet的配置信息。<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><servlet><servlet-name>HlloeServlet</servlet-name><servlet-class>servlet.HelloServlet</servlet-class></servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name><url-pattern>/HelloServlet</url-pattern></servlet-mapping></web-app>6.1使用JSP+Servlet+JavaBean

实现订单操作示例运行结果如下:6.1使用JSP+Servlet+JavaBean

实现订单操作示例编写一个效果与HelloServlet完全一样的hello.jsp放在WEB-INF目录下运行结果6.1使用JSP+Servlet+JavaBean

实现订单操作示例Hello.jsp文件编译后所在文件目录图

在Catalina/localhost/org/apache/jsp目录下,可以看到两个文件,分别是hello_jsp.class和hello_jsp.java。6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第一步)6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第二步)6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第三步)6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第四步)

1)为OrderServlet添加方法和完善doPost()方法和doget()方法

2)OrderServlet控制器根据操作元素orderAction的值确定执行相应原动作:前台已经响应了orderList和orderDetails,和按出货状态查询的请求代码,后台主要涉及到下列标识orderDelivered,deliverySign是订单发货标志selectAllOrder是查询所有用户订单Despatch是根据获取的orderId设置出货状态deleteOrder是根据获取的orderId删除指定订单等实现了管理员对订单的增删改查要求。6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第四步)为OrderServlet添加方法和完善doPost()方法和doget()方法

if(orderAction.equals("despatch")){//根据获取的orderId出货Listlist=newArrayList();Stringi=request.getParameter("i");if(i!=null)request.setAttribute("i",i);order.updateSignOrder(request.getParameter("orderId").toString());//更改出货状态list=order.selectAllOrder();//刷新订单显示request.setAttribute("AllOrder",list);request.getRequestDispatcher("pages/admin/order/orderSelect.jsp").forward(request,response);}6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第四步)为OrderServlet添加方法和完善doPost()方法和doget()方法

//后台所有客户订单显示if(orderAction.equals("selectAllOrder")){//查询所有订单Listlist=newArrayList();Stringi=request.getParameter("i");if(i!=null)request.setAttribute("i",i);list=order.selectAllOrder();request.setAttribute("AllOrder",list);request.getRequestDispatcher("pages/admin/order/orderList.jsp").forward(request,response);}6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第四步)为OrderServlet添加方法和完善doPost()方法和doget()方法if(orderAction.equals("deleteOrder")){//根据获取的orderId删除指定订单Listlist=newArrayList();Stringi=request.getParameter("i");if(i!=null)request.setAttribute("i",i);order.deleteOrder(request.getParameter("orderId").toString());//删除指定orderId订单list=order.selectAllOrder();//所有订单重新读取继续显示request.setAttribute("AllOrder",list);request.getRequestDispatcher("pages/admin/order/orderList.jsp").forward(request,response);}6.1使用JSP+Servlet+JavaBean

实现订单操作■创建Servlet类OrderServlet.java(第四步)为OrderServlet添加方法和完善doPost()方法和doget()方法其它增删改查的功能均与上述例子类似//若上述标志均不满足,则显示主页面else{//没有对应的action,显示主页面out.println("<script>parent.location.href='/estore/pages/product/main.jsp';</script>");}out.flush();out.close();…6.1使用JSP+Servlet+JavaBean

实现订单操作■模型和JavaBean

根据OrderServet方法调用请求,在OrderDao.java中添加相应的方法:6.1使用JSP+Servlet+JavaBean

实现订单操作■Servlet技术特性分析

Servlet可完成如下功能:

(1)创建动态完整的HTML页面(2)创建可嵌入的HTML片段(3)与其它服务器资源(包括数据库和基于Java的应用程序)进行通信(4)实时处理多个客户的请求(5)对特殊的处理采用MIME类型过滤数据,如图像转换(6)将定制的处理提供给所有服务器的标准例行程序。例如,Servlet可以修改如何认证用户6.2Servlet知识总结■Servlet的生命周期初始化 服务器创建一个Servlet实例并且调用Servlet的init()方法初始化Servlet装入:如果已配置自动装入选项,则在服务器启动时自动装入客户机首次向Servlet发出请求重新装入Servlet请求处理 服务器调用Servlet的service()方法,service()方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service()方法可以调用其它方法来处理请求,例如doGet()、doPost()或其它的方法。终止 当服务器不再需要Servlet,或重新装入Servlet的新实例时,服务器会调用Servlet的destroy()方法。6.2Servlet知识总结■JavaServletAPIinit()方法

在Servlet的生命期中,仅执行一次init()方法。在服务器装入Servlet时执行的。可以进行配置,在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()service()方法

service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。 在HttpServlet中已存在service()方法。缺省的服务功能是调用与HTTP请求的方法相应的do功能。Servlet编程:覆盖doXxx()方法,GET:doGet()6.2Servlet知识总结■

JavaServletAPI

destroy()方法

destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法。

GetServletConfig()方法

GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext接口提供有关servlet的环境信息。

GetServletInfo()方法

GetServletInfo()方法是一个可选的方法,它提供有关servlet的信息,如作者、版本、版权。6.2Servlet知识总结■创建HTTPServlet类

四个步骤:

1)扩展HttpServlet抽象类

2)重载适当的方法。如覆盖(或称为重写)doGet()或doPost()方法

3)用HttpServletRequest对象获取请求信息,常用方法:

getParameterNames()getParameter()getParameterValues()4)生成HTTP响应。使用HttpServletResponse对象生成响应,“响应”对象含有getWriter()方法以返回一个PrintWriter对象。使用PrintWriter的print()和println()方法以编写Servlet响应来返回给客户机。或者,直接使用out对象输出有关H

温馨提示

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

评论

0/150

提交评论