版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaWeb项目式开发教程使用JavaBean+JSTL实现商品查询基于Maven和MVC模式实现将商品加入购物车能培养良好的软件设计习惯,树立持续改进项目、优化代码的意识。
掌握在JSP中使用JavaBean的方法。掌握使用EL和JSTL替代JSP页面中嵌入的Java代码的方法。能应用JSPModel2
MVC模式开发JavaWeb项目。能基于前后端分离架构实现JavaWeb项目开发。学习目标项目6
构建高效的JavaWeb应用12使用基于前后端分离架构实现商品浏览3使用JavaBean+JSTL实现商品查询016.1
使用JavaBean+JSTL实现商品查询商品查询是每个在线购物网站必不可少的功能。游客或者会员可以根据自己的喜好浏览商品、查看商品详情,并可以根据商品名等查询商品。本任务实现商品查询功能,初次加载商品查询页时以表格形式输出所有商品信息。输入查询关键字,单击“提交”按钮,根据商品名称模糊查询,并输出符合条件的商品信息。任务说明6.1使用JavaBean+JSTL实现商品查询•为了提升JSP页面的代码简洁性,使用JavaBean技术进行封装,并使用EL和JSTL替代JSP页面中嵌入的Java代码。•使用JavaBean封装商品信息,包含商品编号、商品名称、价格、库存、销量、发货城市、商品描述等属性。使用JavaBean封装查询对象,包含商品结果集和商品名称关键字等属性。•使用JavaBean封装数据库连接、数据库查询方法。•在商品查询页中使用EL表达式和JSTL标签库访问JavaBean。任务分析相关知识010302JavaBeanJSTLEL6.1.1
JavaBeanJavaBean是可重复使用的软件组件,通过封装属性和方法,JavaBean可以是具有特定功能或处理某项业务的对象。JavaBean不仅可以大幅扩展Java程序的功能,还能够通过其组合快速生成新的应用程序。它具有如下特点。易于扩展、维护、使用、编写。具备很强的可移植性,但局限于Java平台。便于传输,可在本地或网络环境中使用。能以组件形式与其他模块协同工作。6.1.1
JavaBeanJavaBean是一个Java类,必须遵循以下规则。JavaBean是一个没有主方法的类,并且不需要继承于Object类。JavaBean类必须属于一个包,而不能是单独的一个类。JavaBean类的访问权限必须是public。JavaBean类必须包含一个无参的构造方法。JavaBean类中的属性的访问权限必须声明为private。用一组Setter方法和Getter方法设置和获取JavaBean类中的内部属性,这些方法的访问权限必须是public。6.1.1
JavaBeanJavaBean的定义在JSP中使用JavaBeanJSP提供了useBean、setProperty、getProperty三个动作标签来实现对JavaBean的应用。(1)useBean动作标签(2)setProperty动作标签(3)getProperty动作标签
例6-1定义一个封装会员登录信息的JavaBean。<jsp:useBeanid="JavaBean实例名"class="JavaBean类全限定名"scope="作用范围"/><jsp:setPropertyname="JavaBean实例名"param="参数名"property="属性名"value="{值|<%=表达式%>}"/><jsp:getPropertyname="JavaBean实例名"property="属性名"/>例6-2访问JavaBean的属性。例6-3使用setProperty动作标签的param属性赋值。例6-4使用property="*"实现赋值。6.1.1
JavaBean3.JavaBean的有效范围在使用useBean定义JavaBean时,scope属性的取值范围决定了JavaBean的生命周期,即JavaBean的存活时间。page范围:表示JavaBean的有效范围为当前页。session范围:表示JavaBean的有效范围为本次会话。request范围:表示JavaBean的有效范围为本次请求。application范围:表示JavaBean的有效范围为整个应用程序。6.1.2
ELEL是JSP2.0引入的简洁的语言,为了简化JSP页面中对象的访问方式,其主要特点如下。可以访问JSP的内置对象,即访问pageContext、request、session、application等对象。简化了对JavaBean的访问方式。简化了对集合的访问方式。可以通过关系、逻辑和算术运算符进行运算。可以进行条件输出。1.EL基本语法EL的语法非常简单,以“${”开始,以“}”结束。${表达式}例6-5使用EL表达式输出JavaBean的值。6.1.2
EL2.EL关键字EL定义了16个关键字,这些关键字具有特殊含义,并且EL中的标识符不能使用关键字
。3.EL隐式对象为了更加方便地进行数据访问,EL提供了11个隐式对象,这些对象类似于JSP的内置对象,可以通过对象名进行操作。andornotinstanceofeqgtneleltgedivmodemptytruefalsenull例6-6不同作用域下的隐式对象。例6-7param隐式对象的使用。6.1.2
EL类别EL隐式对象描述JSPpageContext表示JSP页面的上下文,可以获取JSP中的page、request、session、application对象,并且可以获取它们的方法作用域pageScope表示page作用域范围的Map对象requestScope表示request作用域范围的Map对象sessionScope表示session作用域范围的Map对象applicationScope表示application作用域范围的Map对象请求参数param封装request.getParameter()方法,获取request对象中的参数值,返回值为String类型paramValues封装request.getParameterValues()方法,获取request对象中所有同名参数值的集合,返回值为String数组请求头header获取HTTP请求头中一个具体的对象值,返回值为String类型headerValues获取HTTP请求头中所有对象的值的集合,返回值为String数组Cookiecookie获取当前请求的所有Cookie,并通过指定的Cookie名称访问初始化参数initParam获取Web应用初始化参数的Map对象6.1.3
JSTL1.安装和配置JSTL本书使用的是JSTL1.2,可以在MVN官方仓库下载和使用该版本。6.1.2
EL3.EL运算符EL提供了算术运算符、比较运算符、逻辑运算符、条件运算符和空运算符五种运算符。分类运算符说明算术运算符+加-减*乘/或
div除%或
mod取余逻辑运算符&&或
and交集||或
or并集!或
not非分类运算符说明比较运算符==或eq等于!=或ne不等于<或lt小于>或gt大于<=或le小于等于>=或ge大于等于空运算符${empty表达式}条件运算符${表达式A?表达式B:表达式C}6.1.3
JSTLJSTL(JavaServerPagesStandardTagLibrary,JSP标准标签库)是由Apache的Jakarta项目组开发的标准通用型标签库,是实现JavaWeb中常见的通用功能的定制标签库的集合。JSTL已纳入JSP2.0规范,是JSP2.0最重要的特性之一。JSTL提供的标签库主要分为五大类:核心标签库、国际化输出标签库(I18N标签库)、XML标签库、SQL标签库和EL函数标签库。标签库前缀URI简单描述核心标签库c/jsp/jstl/core输入输出、流程控制等标准Java核心功能I18N标签库fmt/jsp/jstl/fmt格式化数据操作,支持使用本地资源进行JSP页面的国际化XML标签库xml/jsp/jstl/xmlXML解析处理SQL标签库sql/jsp/jstl/sql数据库连接、查询等功能EL函数标签库fn/jsp/jstl/functions字符串处理6.1.3
JSTL2.核心标签库核心标签库是JSTL中最重要的标签库,也是最常用的标签库。核心标签库中的标签按功能分为表达式标签、异常标签、条件标签、迭代标签和URL标签和。JSTL前缀简单描述表达式标签out计算并输出变量或表达式的值set设置指定范围内的变量值remove删除指定范围内的某个变量和属性异常标签catch捕获内部代码抛出的异常条件标签if用于条件判断choose用于条件选择,一般和when标签、otherwise标签一起使用whenchoose标签內的一个分支otherwisechoose标签內的最后选择迭代标签forEach用于重复执行某一操作forTokens用于遍历使用分隔符分割字符串后的字符串集合URL标签import用于将一个静态或动态文件包含到当前JSP页面中redirect将客户端发出的request请求重定向到其他URL服务端url使用正确的URL重写规则构造一个URL6.1.3
JSTL要在JSP中使用JSTL的核心标签库,必须使用taglib指令进行导入。(1)表达式标签:out标签、set标签、remove标签(2)异常标签<%@taglibprefix="c"uri="/jsp/jstl/core"%><c:outvalue="EL表达式"[default="默认值"]/><c:setvar="变量名"value="变量值"[scope="存储范围"]/><c:removevar="变量名"scope="存储范围"/><c:catchvar="异常名称"></c:catch>例6-8JSTL表达式标签和异常标签的使用。6.1.3
JSTL(3)条件标签:
if标签
choose标签
when标签
otherwise子标签<c:iftest="条件"[var="变量名"][scope="变量范围"]> //执行代码</c:if><c:choose> <c:whentest="条件"> //执行代码 </c:when> <c:otherwise> //执行代码 </c:otherwise></c:choose>例6-9JSTL条件标签的使用。6.1.3
JSTL(4)迭代标签
forEach标签
forTokens标签<c:forEachvar="变量名"items="集合对象"varStatus="状态信息"> //执行代码</c:forEach><c:forEachbegin="begin"end="end"step="step">//执行代码</c:forEach><c:forTokensitems="字符串"delims="分隔符"var="变量名"varStatus="遍历状态"> //执行代码</c:forTakens>例6-10forEach标签迭代集合元素。例6-11forEach标签指定循环范围。例6-12forTokens标签的使用。6.1.3
JSTL(5)URL标签
import标签
redirect标签
url标签<c:redirecturl="定向资源URL">[<c:paramname="参数名"value="参数值"/>]</c:redirect><c:importurl="文件URL"[var="变量名"][scope="范围"][charEncoding="字符集"]/><c:urlvalue="URL地址"[var="变量名"][scope="范围"]>[<c:paramname="参数名"value="参数值"/>]</c:url>6.1.3
JSTL3.I18N标签库I18N标签库用于创建支持多种语言的国际化Web项目,并对数字、时间和日期的输出进行标准化。<%@tagliburi="/jsp/jstl/fmt"prefix="fmt"%>标签描述setLocale用于重写客户端指定的区域设置bundle加载本地资源包setBundle加载一个资源包,并将它存储在变量中message输出资源包中键映射的值formatNumber格式化数字formatDate格式化时间和日期例6-13I18N标签库的使用。实现步骤创建chap0601项目导入JAR包文件创建perties配置文件创建用于封装商品信息的JavaBean文件Product.java创建用于获取商品信息集合的JavaBean文件ProductList.java创建商品查询页面product-search.jsp新建css.css外部样式表文件启动服务,查看效果基于Maven和MVC模式实现将商品加入购物车026.2
基于Maven和MVC模式实现将商品加入购物车购物车是网上商城中最常见的应用,购物车能跟踪和记录用户所选的商品,并能随时提交订单,为用户网上购物提供了方便。购物车的主要功能是让用户在看到心仪商品时能够将其添加到购物车中,同时能让用户可以方便地查看和管理购物车内的商品。本任务完成一个能够将商品加入购物车的JavaWeb项目。单击对应商品后的“加入购物车”超链接,该商品如果存在于购物车中,则商品的数量增加;商品如果不存在,则向购物车中添加该商品。在商品列表页中,单击“查看购物车”超链接,请求指定会员的购物车并展示购物车中的商品。任务说明6.2基于Maven和MVC模式实现将商品加入购物车•将商品加入购物车功能是对指定会员(会员编号为1)的购物车进行操作。•使用Maven管理项目依赖。•整个项目结构遵循MVC的Model2模式的基本规则,创建Model层、DAO层、Controller层和View层。•在Model层中使用JavaBean技术封装商品信息和购物车信息。•在DAO层中封装对product表和cart表的操作。•在Controller层使用Servlet处理查看商品列表、将商品添加到购物车、查看购物车等请求。•在View层使用JSTL和EL技术优化JSP页面,展示商品信息和购物车信息。任务分析相关知识0102JSP开发模式Maven03基于Maven的MVC简单应用6.2.1
JSP开发模式在Web开发中,JSP最初是作为Servlet的一种简化形式出现的。为了更方便地使用JSP技术,其开发模式经历了从Model1模式到Model2MVC模式的演变过程。Model2MVC模式是经典MVC模式的一种扩展,它被特别调整以满足Web环境的需求。MVC模式Model1模式Model2MVC模式1
MVC模式MVC是20世纪70年代XeroxPARC(施乐公司帕洛阿尔托研究中心)为编程语言Smalltalk-80开发的一种设计模式。这种模式的基本原则是“关注点分离”,即将用户界面(UserInterface,UI)的设计与程序逻辑分离。基于MVC设计模式,可将应用程序分成三个互相独立的部分:Model(模型)、View(视图)和Controller(控制器)。这样可以让开发者独立开发和优化应用程序的不同方面。用户通过View交互操作,可以在View提供的用户界面上浏览数据或发送请求,View将用户的操作通知给Controller。
Controller评估用户的操作(可能还有其他输入),并与Model交互以更新状态。Model在自身状态变化后,将通知View和Controller,使它们能够相应地更新。View从中获取更新后的数据,并重新渲染用户界面。2
Model1模式Model1模式的View、Model和Controller全部集中在一个JSP页面中实现。对早期的Model1模式进行改进,将可以重复使用的组件从JSP页面中抽取出来交给JavaBean处理。当用户发送一个请求时,服务器通过JSP作为View调用被分离的JavaBean,这部分JavaBean负责相关数据的存取、逻辑运算等职责,并将执行结果返回给JSP页面作为用户的响应。3
Model2MVC模式Model2MVC模式与前面提到的MVC模式类似,但在JSP中,JSP页面充当View,让Servlet完成处理任务充当Controller,JavaBean则只处理数据访问。基于Model2MVC构建的Web项目,客户端浏览器的请求被传递到Controller,Controller通过执行业务逻辑来获取需要显示的数据内容,并决定哪些JSP页面将显示这些数据内容,即由View把Controller传递的内容呈现出来。3
Model2MVC模式Model2MVC和Model1的区别:• Model2MVC使用Controller来处理用户请求,而Model1在JSP中处理用户请求。• Model2MVC通过Controller访问Model中的JavaBean对象,以处理业务逻辑。• Model2MVC通过Controller对Model中的JavaBean进行赋值和取值。• Model2MVC通过Controller基于请求的URL分派request对象到各个View。• Model2MVC的View中不存在业务逻辑,JSP页的功能是提交用户输入、显示被实例化bean中的数据。6.2.2
Maven为了简化项目的依赖管理和构建流程,开发者通常会创建基于Maven的JavaWeb项目。通过Maven,项目的依赖管理、构建和发布可以实现自动化。什么是MavenMaven仓库Maven的下载和安装Maven的配置1
什么是MavenMaven是Apache下的一个开源项目,在JavaWeb开发中,它是一个非常重要的工具,特别是在大型项目和团队开发中。Maven可以管理项目的依赖、构建生命周期、配置插件等,有助于简化项目的构建和管理过程。(1)依赖管理(2)构建和打包(3)项目结构管理(4)生命周期管理(5)插件支持2
Maven仓库Maven仓库是存储构建Maven项目所需依赖的地方,Maven使用仓库来下载和管理项目的库(即依赖项),并将构建产物(如JAR文件、WAR文件)上传到仓库以供其他项目使用。(1)本地仓库(LocalRepository)本地仓库存储在开发者本地机器上的仓库,默认存储在用户目录下的.m2\repository文件夹中。(2)中央仓库(CentralRepository)中央仓库是Maven的官方公共仓库,包含了大量的开源库和框架。(3)私服(远程)仓库(PrivateRepository)企业内部或团队可以配置其他远程仓库,作为企业的私有仓库,用于存储企业内部或团员开发的库或一些特殊的依赖。3
Maven的下载和安装Maven的安装非常简单,从Maven官网下载安装包并解压到本地磁盘任何位置即可。由于Maven和IDEA各自独立迭代版本,不同版本间的兼容性问题频发,这影响了开发者的开发进度和效率。本书采用的IDEA的版本是IntelliJIDEA2021.1,所以选择Maven3.8.1进行下载和安装。IDEAMavenIDEA2024.xMaven3.9.6及以下所有版本IDEA2023.xMaven3.9.5及以下所有版本IDEA2022.xMaven3.8.5及以下版本IDEA2021.xMaven3.8.1及以下版本IDEA2020.xMaven3.6.3及以下版本4
Maven的配置Maven的配置包括全局配置和IDEA中的配置。Maven的全局配置文件settings.xml通常位于Maven安装目录下的conf文件夹中,也可以在用户目录下的.m2文件夹中找到(例如~\.m2\settings.xml)。主要配置项包括:(1)仓库设置:配置Maven使用的远程仓库和本地仓库路径。(2)代理设置:配置Maven通过代理服务器访问互联网。(3)镜像设置:配置Maven使用的镜像站点来加速下载依赖项。在IDEA中使用自行下载的Maven之前需要对其进行配置:(1)打开IDEA,选择“File|Settings”,打开“Settings”对话框。在左上方的搜索框中输入“maven”,找到Maven配置选项卡。(2)“Mavenhomepath”、“Usersettingsfile”和“Localrepository”配置是IDEA的默认配置,修改为自行下载的Maven。例6-14Maven全局配置。6.2.3
基于Maven的MVC简单应用以Model2MVC框架模式为规范,即以JavaBean+JSP+Servlet的形式来创建基于Maven的简单Web项目,Web项目结构如下。(1)Model层:以JavaBean形式创建实体类映射数据表,指定实体类的属性与数据表的字段对应。(2)DAO层:封装实体类的所有功能,可供其他层调用。(3)Servlet层:接收用户请求,根据业务逻辑实例化实体类,并返回给View。(4)View层:接收Servlet发送的信息,并将其展示到客户端的浏览器上。例6-15基于Maven的Model2MVC模式创建JavaWeb项目,输出所有商品信息。实现步骤创建chap0602项目修改Web项目基本配置创建perties配置文件创建用于封装商品信息的JavaBean文件Product.java创建用于封装购物车信息的JavaBean文件Cart.java创建用于封装购物车视图对象信息的JavaBean文件CartVo.java创建用于提供数据源对象的公共类文件DBUtil.java创建用于处理product表的数据库访问类文件ProductDao.java实现步骤创建用于处理cart表的数据库访问类文件CartDao.java创建用于处理请求商品列表信息的Servlet类文件ProductListServlet.java创建用于处理指定用户将商品添加到购物车请求的Servlet类文件CartAddServlet.java创建用于处理显示指定用户购物车信息请求的Servlet类文件MyCartServlet.java创建用于输出所有商品信息的页面文件product_list.jsp创建用于显示指定用户的购物车信息的页面文件mycart.jsp新建css.css外部样式表文件运行项目,查看效果基于前后端分离架构实现浏览商品036.3
基于前后端分离架构实现浏览商品在商城系统中,首页或商品列表页通常只展示商品的关键信息,如名称、价格和图片等。当用户对某个商品感兴趣时,通常会单击商品的名称或者图片进入商品详情页,查看该商品的详细信息,以便决定是否购买。本任务将基于前后端分离架构实现商品浏览功能。单击某个商品后的“查看详情”超链接,可以进入商品详情页查看该商品的名称和描述信息。任务说明6.3基于前后端分离架构实现浏览商品•整个项目采用前后端分离架构,前端负责提供用户界面和交互功能,后端则负责提供业务逻辑的API服务。•前后端通过API进行通信,API遵循RESTful规范,并使用JSON格式进行数据交换。•后端借助第三方库Gson处理JSON数据,实现高效的序列化和反序列化操作。•前端使用AJAX实现异步请求,确保页面与服务器的交互更加流畅。任务分析相关知识0102前后端分离架构后端实现RESTfulAPI03前端调用RESTfulAPI6.3.1
前后端分离架构什么是前后端分离前后端分离架构的技术RESTfulAPIJSON数据格式1
什么是前后端分离前后端分离是指将Web应用程序的前端(用户界面)和后端(业务逻辑和数据处理)开发和部署分开的一种设计和开发模式。具体来说,前端负责构建用户界面并与用户交互,后端负责处理业务逻辑、访问数据库、提供API等。在前后端分离的架构中,前端和后端通过API(通常是RESTfulAPI)进行通信。前端通过发送HTTP请求(如GET、POST)来请求或提交JSON格式数据,后端处理这些请求和数据,将结果同样以JSON格式返回给前端。前后端分离的劣势架构复杂数据同步复杂网络开销大接口安全问题前后端分离的优势利于团队协作和并行开发动态交互和异步更新代码分离和技术灵活性高2
前后端分离的技术(1)后端技术(Servlet+Gson)使用Servlet实现基于Maven的MVC模式的后端项目,负责处理请求、业务逻辑和数据访问,使用第三方库Gson来处理JSON数据。(2)前端技术(HTML+CSS+Jquery+AJAX)使用HTML+CSS展示用户界面,使用JQuery代码和AJAX与后端进行数据交换。3
RESTfulAPIREST(RepresentationalStateTransfer,描述性状态迁移)是一种基于Web的分布式系统架构风格,用来规范网络资源的访问方式。RESTfulAPI是遵循REST原则的一种WebAPI设计方式,通过HTTP实现。在设计RESTfulAPI时,每个资源都有一个唯一的URI(UniformResourceIdentifier,统一资源标识符)。访问所有商品信息的URL格式如下:访问指定商品的URL格式如下:/api/products/api/product/{id}注意:RESTful风格的URL格式和传统URL格式的不同之处在于,传统URL格式的参数使用”?”连接在请求路径之后,而RESTful风格的URL格式则将参数作为请求路径的一部分。3
RESTfulAPI状态码:200OK:成功处理请求。201Created:成功创建资源。400BadRequest:请求参数错误。404NotFound:资源不存请求方式举例说明HTTPGET/api/product/1获取参数为1的商品信息HTTPPUT/api/product/1更新参数为1的商品信息HTTPPOST/api/product新增商品信息HTTPDELETE/api/product/1删除参数为1的商品信息在设计RESTfulAPI时,可以使用GET、POST、PUT和DELETE处理四种不同的请求操作。在设计RESTfulAPI时,可以使用HTTP状态码来表示请求的处理结果,状态码能够直观地告知客户端请求的结果如何,从而帮助客户端决定下一步的操作。4
JSON数据格式前后端项目的通信通常需要遵循统一的数据格式,JSON(JavaScriptObjectNotation,JavaScript对象表示法)是常用的一种格式。JSON是一种轻量级的数据交换格式,既易于人类阅读和编写,又便于机器解析和生成。JSON的基本结构是由键值对组成的。数据类型示例字符串"name":"iPhone14"数字"price":999.99布尔值"available":true数组"features":["5G","128GBStorage","A15BionicChip"]对象"dimensions":{"height":146.7,"width":71.5,"depth":7.4}空值"discount":null例6-16设计所有商品信息的JSON数据格式。6.3.2
后端实现RESTfulAPI为了简化Java对象与JSON格式之间的转换过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年社区矫正对象风险评估考试题库及答案
- 2026年国家电网招聘之通信类考试卷附参考答案【基础题】
- 2026年江西宜春市辅警结构化面试题目
- 2026年广东建筑工程集团招聘试题及答案
- 2026年甘肃工程设计研究院公司招聘试题及答案
- 2026年蒂森克虏伯(中国)校招试题及答案
- 2026年唐山信息技术考试试题及答案
- 护理CPR考核试题及完整答案
- 医院财务工作总结与计划
- 医院放射科年终总结
- 手术室急危重症患者的抢救与配合
- 2025年vda63vda65考试试题及答案
- 2025年初中历史学科教师课程标准考试测试卷及参考答案(共三套)
- T/CECS 10245-2022绿色建材评价风机盘管机组
- 兼职安全管理人员协议书
- 医学工程课件
- 回弹法混凝土强度检测方法课件
- 应急物流管理 课件 第1、2章 应急物流概述;应急物流管理系统
- 安检服务礼仪培训
- 房产公证模板范文
- 食品香味知识培训课件
评论
0/150
提交评论