项目7订单管理-1基本概念.ppt_第1页
项目7订单管理-1基本概念.ppt_第2页
项目7订单管理-1基本概念.ppt_第3页
项目7订单管理-1基本概念.ppt_第4页
项目7订单管理-1基本概念.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

VIP免费下载

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

文档简介

JAVA WEB应用开发,项目七 订单管理(application),工作任务,任务一 熟悉应用对象 任务1-1 application对象 任务1-2 pageContext对象 任务1-3 过滤器 任务二 订单生成 任务三 订单处理 任务四 订单查询,2,项目目标,任务一:支撑知识 理解application对象的应用 熟悉pageContext对象的使用 熟悉Servlet过滤器的使用 任务二:项目实战订单管理 订单生成 订单处理 订单查询,一、application 对象,application对象负责提供应用程序在服务器中运行时的一些全局信息 application作用域就是服务器启动到关闭的整段时间,在这个作用域内设置的信息可以被所有应用程序使用。 与session对象不同,session对象是每个客户访问时就会一次生成的,客户之间的会话是互相独立的,所有的客户的application对象都是同一个。,2019/9/7,4,application 对象方法,Object getAttribute(String name) 得到name指定的属性值。 void setAttribute(String name) 设置name指定的属性值。 getInitParameter(String name)得到由name指定的某个属性的初始值。 RequestDispatcher getRequestDispatcher(String uripath) 返回指定资源的RequestDispatcher对象 String getServletInfo() 获取服务器的相关信息 long getRealPath() 获取与虚拟路径相对应的实际路径 String getInitParameter(String name) 获取name 指定的初始化值,2019/9/7,5,计数器实例, 网页计数器 您是第位访问者 ,2019/9/7,6,application与session比较,来源 session来自javax.servlet.http.httpSession接口 application来自javax.servlet.servletContext接口 存储的数据 session存储的是不同用户的个别数据 application存储的是不同用户之间共享的数据 生存周期 session从客户第一次访问服务器到关闭浏览器为止 application从服务器启动,到服务器关闭为止,二、pageContext对象,pageContext是页面上下文对象,被封装成pageContext接口,管理对属于JSP特殊可见部分已命名对象的方法。 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者 pageContext的创建和初始化都是由容器来完成的,JSP页面中可直接使用。,2019/9/7,8,pageContext对象方法,forward(String relativeURL) 把页面重定向到其他页面。 getAttribute(String name ,int scope)根据名字name得到其属性值。 getException() 得到当前的exception对象。 getRequest() 得到当前的request对象。 getResponse() 得到当前的response对象。 getServletConfig() 得到当前页面的servletConfig对象。 getServletContext() 得到ServletContext对象,是所有页面共享的。 getSession() 得到页面的session对象,对应一次会话,同session。 findAttribute(String name) 查找名字为name的属性,范围依次为页面、请求、会话、应用程序。 setAttribute(String name ,int scope) 在指定的范围里设置一个属性的值。,2019/9/7,9, pageContext对象_例1 request设定的值: session设定的值: application设定的值: 范围1内的值: 范围2内的值: 范围3内的值: 范围4内的值: pageContext修改后的session设定的值: pageContext修改后的application设定的值: 值的查找: 属性name的范围: ,三、Servlet 过滤器,Servelt过滤器是可插入的一种Web组件,对经过过滤器的请求和响应数据进行处理,实现Web 应用中的一些非功能性需求。如:日志记录、提高性能、安全处理、会话处理和XSLT转换等。 过滤器处在客户端与所请求的资源(servlet或JSP)之间,过滤器不能独立执行,总要依附在所请求的资源上才能执行。,2019/9/7,11,Servlet 过滤器过滤过程,2019/9/7,12,Servlet 过滤器特性,Servlet过滤器有以下特性: Servlet过滤器将对应用程序处理的逻辑封装到某个类文件中,提供了可以容易从请求/响应链中添加或删除的模块化单元。 Servlet过滤器调用是动态的,过滤器在运行时由Servlet容器调用来拦截和处理请求和响应。 Servlet过滤器是通过XML文档声明配置的,也就是Web部署描述符(web.xml)。 Servlet过滤器是可重用的。过滤器可附加到一个或多个Servlet或JSP页面上,并且可以跨越不同的项目和应用程序使用。,2019/9/7,13,Servlet过滤器体系结构,过滤器API包含3个接口,分别是Filter、FilterConfig、FilterChain,它们在javax.servlet包中。 过滤器类要先实现Filter接口,然后使用这个过滤器类中的FilterChain和FilterConfig接口。该过滤器的一个引用将传递给FilterChain对象,允许过滤器把控制权传递给过滤链中的下一个资源。FilterConfig对象将由容器提供给过滤器,以允许访问该过滤器的初始化数据。,2019/9/7,14,Filter接口,所有的过滤器必须实现javax.servlet.Filter接口。这个接口包含三个方法,分别是:init、doFilter和destroy。 public void init(FilterConfig config) throws ServletException 这是过滤器的初始化方法,在过滤器第一次初始化时执行 Servlet容器创建Servlet过滤器实例后将调用这个方法 在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数,2019/9/7,15,Filter接口,doFilter方法完成实际的过滤操作。每当调用一个过滤器(即每次请求与此过滤器相关的Servlet或JSP页面)时,就执行其doFilter()方法。 public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws ServletException,IOException 第一个参数是大多数过滤逻辑处理的对象,提供了请求信息,若要处理HTTP请求,需要转换为HttpServletRequest 第二个参数表示响应对象 第三个参数激活与Servlet 或JSP相关的下一个过滤器,若没有另一个相关的过滤器,则激活Servlet或JSP本身,Filter接口,destroy()方法在销毁过滤器时使用。 public void destroy() Servlet容器在销毁过滤器实例时调用此方法,用以释放Servlet过滤器占用的资源,FilterConfig接口,FilterConfig接口类似于ServletConfig接口,用于在过滤器初始化时,向其传递信息。FilterConfig接口有容器实现,容器将其作为参数传入过滤器对象的init()方法中。 在FilterConfig接口,定义了4个方法: 1)public String getFilterName() 得到描述符中指定的过滤器的名字。 2)public String getInitParameter(java.lang.String name) 返回在部署描述中指定的名字为name的初始化参数的值。如果不存在返回null。 3)public Enumeration getInitParameterNames() 返回过滤器的所有初始化参数的名字的枚举集合。 4)public ServletContext getServletContext() 返回Servlet上下文对象的引用。,2019/9/7,18,FilterChain接口,FilterChain接口由容器实现,容器将其实例作为参数传入过滤器对象的doFilter()方法中。过滤器对象使用FilterChain对象调用过滤器链中的下一个过滤器。 FilterChain接口只有一个方法: public void doFilter(ServletRequest request,ServletResponse response) throws java.io.IOException 调用该方法将使过滤器链中的下一个过滤器被调用。如果是最后一个过滤器,会调用目标资源。,2019/9/7,19,Servlet过滤器步骤,建立一个过滤器有以下几个步骤: 首先创建一个Java类,实现Filter接口。 在doFilter()方法中实现过滤逻辑。 调用FilterChain对象,激活下一个相关的过滤器,或Servlet、JSP页面。 在web.xml中注册过滤器。,2019/9/7,20,Servlet过滤器步骤,1.创建Java类 public class MyFilter implements Filter public void destroy() / TODO Auto-generated method stub public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException / TODO Auto-generated method stub public void init(FilterConfig arg0) throws ServletException / TODO Auto-generated method stub ,Servlet过滤器步骤,2.实现过滤逻辑 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException / 过滤逻辑处理 HttpServletRequest request = (HttpServletRequest) request; /1.转换请求对象 /2.过滤逻辑(编码过滤、权限处理等) chain.doFilter(request,response) /3.激活下一个过滤器 ,Servlet过滤器步骤,3.注册过滤器Web.xml 过滤器名 完整的过滤器类名 初始化参数名 初始化参数值 过滤器名 URL值 ,Servlet 过滤器配置,在实现一个过滤器后,需要在部署描述符web.xml中对过滤器进行配置,主要通过filter和filter-mapping元素来完成。 filter元素用于在Web应用程序中注册一个过滤器对象。 filter-mapping 元素指定该过滤器对象所应用的URL。,2019/9/7,24,Servlet过滤器配置,filter元素 filter元素放置在filter-mapping、Servlet或Servlet-mapping元素之前。 filter元素包含的子元素主要有: filter-name:定义过滤器的名称 display-name:定义使用过滤器的简短名称 description:对过滤器的描述 filter-class:指定过滤器实现类的完整限定类名 init-param:过滤器的初始化参数。,2019/9/7,25,Filter 配置, 处理编码的Filter EncodingFilter EncodingFilter EncodingFilter 页面请求的编码值 encoding GB18030 ,2019/9/7,26,filter-mapping元素,filter-mapping元素用于指定过滤器关联的URL样式或者Servlet。它包含的子元素有: filter-name:必须与在filter元素中声明过的过滤器的名字相同。 url-pattern:指定过滤器关联的URL样式。 servlet-name:指定过滤器对应的Servlet。用户在访问url-pattern元素指定的URL上的资源或servlet-name元素指定的Servlet时,该过滤器才会被容器调用。 filter-mapping元素还可以包含0到4个dispatcher,指定过滤器对应的请求方式。,2019/9/7,27,Filter-mapping 配置示例, EncodingFilter /index.jsp REQUEST FORWARD ,2019/9/7,28,过滤器实例-Filter类,package com.my.filter; import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.*; / For Date class public class FirstFilter implements Filter public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws ServletException,IOException HttpServletRequest req = (HttpServletRequest)request; System.out.println(req.getRemoteHost() + “ tried to access “ +req.getRequestURL() + “ on “ + new Date() + “.“); chain.doFilter(request,response); public void init(FilterConfig config) throws ServletException public void destroy() ,2019/9/7,29,过滤器实例-Web.xml, FirstFilter com.my.filter.FirstFilter FirstFilter /* ,2019/9/7,30,常用过滤器实例:/zzheng/archive/2008/09/05/227305.html,四、订单管理,项目分析: 订单管理用户选中图书后,可以选择到收银台结账。 用户在结账前必须先登录 登录后用户填写订单信息 填写完成后生成订单列表 用户可以查看订单信息 管理员登录后可以查看订单信息,管理可以处理订单信息。,2019/9/7,31,订单生成,2019/9/7,32,订单管理,2019/9/7,33,项目实施生成订单,2019/9/7,34,数据关系分析,2019/9/7,35,数据关系分析,图书表 book: 存放的是图书的基本信息; 用户表 userinfo:存放的是用户登录的基本信息 收货人地址表:consigneeAddress:存放的是收货人的基本信息 订单表 orders: 存放的是订单的基础信息 订单商品表 orderLine:存放的是订单商品的详细信息 表之间的关系: Orders表中userid、addressid分别是userinfo、consigneeAddress的主键,orderid是orderLine表的外键。 OrderLine表中bookid是book表中的主键。,2019/9/7,36,订单处理过程分析,用户点击结算中心,进入生成订单流程; 用户登录,如果是非注册用户,需要注册; 登录后,用户需要输入收货人信息。 如果是第一次购物,则需要输入完整的用户信息; 如果不是第一次购物,则重数据库中读出最近一次的用户信息。(根据订单的时间判断)。 选择送货方式; 选择支付方式; 生成订单。,2019/9/7,37,1.订单生成设计,设计一个JavaBean 查询最近一次的收货人地址; 如果取到值

温馨提示

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

评论

0/150

提交评论