基于Spring的Web应用程序开发校.docx
- 文档编号:28153356
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:17
- 大小:27.20KB
基于Spring的Web应用程序开发校.docx
《基于Spring的Web应用程序开发校.docx》由会员分享,可在线阅读,更多相关《基于Spring的Web应用程序开发校.docx(17页珍藏版)》请在冰豆网上搜索。
基于Spring的Web应用程序开发校
单元8 基于Spring的Web应用程序开发
Spring是一个轻量级的开源框架,Spring的一个最大的目的就是使JavaEE开发更加容易,Spring不同于Struts、Hibernate等单层框架,它致力于提供一个以统一的、高效的方式构造整个应用系统,并且可以将单层框架以最佳的组合揉和在一起,建立一个连贯的体系。
可以说Spring是一个提供了更完善开发环境的框架,可以为POJO(PlainOldJavaObject)对象提供企业级的服务。
【问题探析】
【问题1】使用实例解释“依赖注入”。
【问题2】AOP(面向切面编程)与OOP(面向对象编程)有何区别与关系?
【知识必备】
1.Spring概述
Spring是一个为了解决企业应用开发的复杂性而创建的开源框架,由RodJohnson创建。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
2.Spring框架的组成模块
Spring框架由七个定义明确的模块组成,如图8-2所示。
它们提供了企业级开发需要的所有功能。
每个模块都可以单独使用,也可以和其他模块组合使用,灵活方便的部署可以使开发的程序更加简洁。
(1)SpringCore模块
(2)SpringContext(应用上下文)模块
(3)SpringAOP模块
(4)SpringDAO模块
(5)SpringORM(对象/关系映射)集成模块
(6)SpringWeb模块
(7)SpringMVC框架
3.BeanFactory与ApplicationContext的比较
Spring的IoC容器就是一个实现了BeanFactory接口的可实例化类。
事实上,Spring提供了两种不同的容器:
一种是最基本的BeanFactory,另一种是扩展的ApplicationContext。
BeanFactory仅提供了最基本的依赖注入支持,而ApplicationContext则扩展了BeanFactory,提供了更多的额外功能。
BeanFactory(com.springframework.beans.factory.BeanFactory)是Spring框架最核心的接口,它提供了高级IoC的配置机制。
ApplicationContext(com.springframework.context.ApplicationContext)建立在BeanFactory基础之上。
几乎所有的应用场合我们都直接使用ApplicationContext而非底层的BeanFactory。
4.SpringIoC
Spring框架中的各个部分充分使用了依赖注入(Dependencyinjection)技术,使代码中不再有单实例垃圾和麻烦的属性文件,取而代之的是一致和优雅的程序代码。
Dependencyinjection是一个将行为从依赖中分离的技术,简单地说,它允许编程者定义一个方法函数依赖于外部其他各种交互,而不需要编码如何获得这些外部交互的实例。
这样就在各种组件之间解耦,从而获得干净的代码,相比依赖的硬编码,一个组件只有在运行时才调用其所需要的其他组件,因此在代码运行时,通过特定的框架或容器,将其所需要的其他依赖组件进行注入,即为主动推入。
依赖注入有如下3种实现方式,Spring支持后两种。
(1)接口注入
(2)Setter注入
(3)构造器注入
5.SpringAOP
AOP(AspectOrientedProgramming,面向切面编程)为我们带来了新的想法、新的思想和新的模式。
AOP是一个概念、一个规范,本身并没有设定具体语言的实现,这实际上提供了非常广阔的发展空间。
AspectJ是AOP的一个很悠久的实现,它能够和Java配合起来使用。
SpringAOP是继SpringIoC之后的Spring框架的又一特性,也是该框架的核心内容。
SpringAOP建立在Java的代理机制之上,Spring框架已经基本实现了AOP的思想,SpringAOP的接口实现了AOP联盟定制的标准化接口,这就意味着它已经走向了标准化,在众多的AOP实现技术中,SpringAOP最为成熟。
【操作必备】
(1)下载与配置Spring
Spring官方网站的网址是http:
//www.springsource.org,在该网站上可以获取Spring的最新版本的Jar包以及帮助文档,本书所使用的Spring开发包为spring3.1.1版本。
(2)下载并安装好数据库管理系统SQLServer2008。
(3)在MicrosoftSQLServer2008中创建数据库ECommerce,并在该数据库中创建“商品数据表”、“商品类型表”和“用户表”。
(4)从网上下载Servlet支持类库servlet-api.jar、JDBC支持类库sqljdbc4.jar和Hibernate支持类库的jar包。
(5)准备开发Web应用程序所需的图片文件、CSS样式文件和验证用的Javascript文件。
(6)启动Eclipse,设置工作空间为Unit08,然后进入Eclipse的开发环境。
(7)在Eclipse集成开发环境中配置与启动Tomcat服务器。
(8)新建动态Web项目,命名为task8-X,本单元有6个任务,每个任务创建一个独立的Web项目,命名分别为task8-1至task8-6。
(9)在Web项目中创建包,将其命名为“package08X”,本单元各个Web项目中的包分别命名为package081至package086。
(10)将Jar包文件servlet-api.jar和sqljdbc4.jar拷贝到各个Web项目的文件夹“WebContent\WEB-INF\lib”下,并在Eclipse集成开发环境的“项目资源管理器”刷新各个Web项目。
【基础应用】
【任务8-1】BeanFactory与ApplicationContext的应用
【任务描述】
(1)创建用户的JavaBean,将其命名为“UserInfo”。
(2)创建Spring的配置文件applicationContext.xml,在该配置文件中为JavaBean的属性赋值。
(3)使用BeanFactory加载JavaBean的配置,获取JavaBean,并输出其属性值。
(4)使用ApplicationContext加载JavaBean的配置,获取JavaBean,并输出其属性值。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task8-1,在该项目中创建包package081。
然后按照【操作必备】中介绍的方法导入Spring支持类库、Servlet支持类库servlet-api.jar。
2.创建用户实体类文件UserInfo.java
在包package081中创建实体类,将该实体类命名为“UserInfo”,该类封装了用户的详细信息,代码如表8-1所示。
3.创建Spring的配置文件applicationContext.xml
在Eclipse的【项目资源管理器】的子文件夹“src”中创建Spring的配置文件applicationContext.xml,该配置文件通过
其主要代码如表8-2所示。
4.创建Servlet类UserServlet8_11
在包package081中创建一个Servlet类,将其命名为“UserServlet8_11”,该类的doGet()方法中使用ClassPathResource类加载配置文件,使用类XmlBeanFactory读取配置信息加载JavaBean,调用BeanFactory类的getBean()方法获取JavaBean。
然后通过JavaBean对象的相应的getXXX()方法获取并输出用户信息,该方法的代码如表8-3所示。
5.创建Servlet类UserServlet8_12
在包package081中创建一个Servlet类,将其命名为“UserServlet8_12”,该类的doGet()方法中使用ClassPathXmlApplicationContext类加载配置文件,调用ApplicationContext类的getBean()方法获取JavaBean。
然后通过JavaBean对象的相应的getXXX()方法获取并输出用户信息,该方法的代码如表8-4所示。
6.创建JSP页面task8-11.jsp
在Web项目task8-1中创建名为“task8-11.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象UserServlet8_11,其代码如下所示。
forwardpage="UserServlet8_11">
forward>
7.创建JSP页面task8-12.jsp
在Web项目task8-1中创建名为“task8-12.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象UserServlet8_12,其代码如下所示。
forwardpage="UserServlet8_12">
forward>
8.运行程序输出结果
运行JSP页面task8-11.jsp,输出如图8-4所示所示的用户信息。
图8-4 JSP页面task8-11.jsp的运行结果
然后运行JSP页面task8-12.jsp,输出的用户信息如图8-4所示。
【任务8-2】使用JdbcTemplate类在商品数据表中查询数据
【任务描述】
JdbcTemplate类是Spring的核心类之一,该类在内部已经处理数据库资源的建立和释放,并可以避免一些常见的错误,简化了编写JDBC时所需的基础代码。
JdbcTemplate类可以直接通过数据源的引用实例化,然后在服务中使用。
使用JdbcTemplate类在商品数据表中查询数据。
【任务实施】
1.配置程序开发环境
首先新建动态Web项目task8-2,在该项目中创建包package082。
然后按照【操作必备】中介绍的方法导入Spring支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar。
2.创建商品实体类文件GoodsInfo.java
在包package082中创建实体类,将该实体类命名为“GoodsInfo”,该类封装了商品的详细信息,代码如表7-1所示。
3.创建类文件GoodsInfoDao.java
在包package082中创建类GoodsInfoDao,该类继承自JdbcDaoSupport类,主要用于对数据库进行操作,其代码如表8-5所示。
4.创建Spring的配置文件applicationContext.xml
在Eclipse的【项目资源管理器】的子文件夹“src”中创建Spring的配置文件applicationContext.xml,该配置文件通过
其主要代码如表8-6所示。
5.创建Servlet类GetInfoServlet
在包package082中创建一个Servlet类,将其命名为“GetInfoServlet”,该类的init()方法中使用ClassPathXmlApplicationContext类加载配置文件,然后调用BeanFactory类的getBean()方法获取GoodsInfoDao对象。
doGet()方法对应页面中的Get请求,这里让Get请求去执行doPost()方法,代码如下所示。
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);//让get请求执行post方法
}
doPost()方法对应页面中的Post请求,其代码实现查询“商品数据表”中的部分记录,然后转向到JSP页面printInfo.jsp。
Servlet类GetInfoServlet三个方法的代码如表8-7所示。
6.创建JSP页面printInfo.jsp
在Web项目task8-2中创建名为“printInfo.jsp”的JSP页面,该页面通过 forEach>标签将list列表中的所有信息显示在JSP页面中,其主要代码如表8-8所示。 7.创建JSP页面task8-2.jsp 在Web项目task8-2中创建名为“task8-2.jsp”的JSP页面,该页面用于将当前页面的请求转发给Servlet对象GetInfoServlet,其代码如下所示。 forwardpage="GetInfoServlet"> forward> 8.运行程序输出结果 运行JSP页面task8-2.jsp,输出如图8-5所示所示的商品信息。 【任务8-3】在Spring中利用DAO模式向商品数据表添加数据 【任务描述】 数据源对象DataSource主要用于操作数据库,通过它可以建立与数据库的连接,该数据源对象在Spring中提供了javax.sql.DataSource接口的实现,只需在Spring的配置文件中进行相关的配置即可。 利用DAO(DataAccessObject,数据访问对象)模式向商品数据表添加数据。 【任务实施】 1.配置程序开发环境 首先新建动态Web项目task8-3,在该项目中创建包package083。 然后按照【操作必备】中介绍的方法导入Spring支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar。 2.创建商品实体类文件GoodsInfo.java 在包package083中创建实体类,将该实体类命名为“GoodsInfo”,该类封装了商品的详细信息,代码如表7-1所示。 3.创建类文件GoodsInfoDao.java 在包package083中创建类GoodsInfoDao,该类中定义了一个用于操作数据库的数据源对象dataSource,通过该对象创建一个数据库连接,建立与数据库的连接。 该类中还定义了添加商品信息的addGoods()方法,其参数类型为GoodsInfo实体对象。 类文件GoodsInfoDao.java的代码如表8-9所示。 4.创建Spring的配置文件applicationContext.xml 在Eclipse的【项目资源管理器】的子文件夹“src”中创建Spring的配置文件applicationContext.xml,该配置文件中首先定义一个名称为“dataSource”的JavaBean,它是Spring中的类DriverManagerDataSource的实例,然后再配置GoodsInfoDao类,并且注入其dataSource属性值。 其主要代码如表8-10所示。 5.创建JSP页面AddGoodsInfo.jsp 在Web项目task8-3中创建名为“AddGoodsInfo.jsp”的JSP页面,该页面用于加载配置文件applicationContext.xml,获取JavaBean的实例,调用类GoodsInfoDao的addGoods()方法将数据添加到“商品数据表”中,其主要代码如表8-11所示。 JSP页面AddGoodsInfo.jsp中需要引入多个包,其代码如下所示。 <%@pagelanguage="java"contentType="text/html;charset=GB18030" pageEncoding="GB18030"%> <%@pageimport="org.springframework.context.support .ClassPathXmlApplicationContext"%> <%@pageimport="org.springframework.core.io.*"%> <%@pageimport="org.springframework.context.ApplicationContext"%> <%@pageimport="package083.*"%> 6.创建JSP页面task8-3.jsp 在Web项目task8-3中创建名为“task8-3.jsp”的JSP页面,该页面提供了添加商品数据的表单,并设置表单提交到AddGoodsInfo.jsp页面进行处理,其主要代码如表8-12所示。 7.运行程序输出结果 运行JSP页面task8-3.jsp,显示新增商品数据的表单,在各个文本框中输入对应的商品数据,其结果如图8-6所示。 然后单击【保存】按钮,显示“成功新增商品数据! ”的提示信息。 【渐进应用】 【任务8-4】应用SpringAOP的表单控制器验证用户登录 【任务描述】 表单在网页中有着非常重要的地位,在与用户交互时可以起到采集数据的作用。 在SpringMVC中提供了表单控制器(SimpleFormController)来获取表单中的信息。 只要把页中表单元素与JavaBean中的属性设置为相同的名称,表单控制器就会将表单中的数据封闭成一个JavaBean对象。 通过扩展SimpleFormController类并重写该类的onSubmit()方法,可以实现自定义的表单控制器,当表单被提交时会执行onSubmit()方法。 应用SpringAOP的表单控制器验证用户登录。 【任务实施】 1.配置程序开发环境 首先新建动态Web项目task8-4,在该项目中创建包package084。 然后按照【操作必备】中介绍的方法导入Spring支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar。 2.创建用户实体类文件UserInfo.java 在包package084中创建实体类,将该实体类命名为“UserInfo”,该类封装了用户名和密码,使用getter()方法获取数据,代码如表8-13所示。 3.创建控制器类UserLoginController 控制器类UserLoginControlle继承自SimpleFormController表单控制器类,并重写了onSubmit()方法,在该方法中对用户提交的用户名和密码进行验证,如果验证成功进入到欢迎页面,如果验证失败则返回到输入页面并显示出错误提示信息。 onSubmit()方法中传入了一个Object类型的对象,该对象封装了表单数据的实体对象。 类文件UserLoginController.java的代码如表8-14所示。 4.创建Spring的配置文件applicationContext.xml 在Eclipse的【项目资源管理器】的子文件夹“WEB-INF”中创建Spring的配置文件applicationContext.xml,该配置文件中首先配置了一个表单控制器UserLoginController,然后将commandClass参数设置为package084.UserInfo类型,这样在表单被提交时Spring会自动将表单中的数据封装到UserInfo类型的对象,并传递到onSubmit()方法中。 接下来还配置了formView和successView参数,这两个参数分别为输入信息的表单页面和表单处理完成后的转向页面。 其主要代码如表8-15所示。 5.创建与配置web.xml文件 在Eclipse的【项目资源管理器】的子文件夹“WEB-INF”中创建web.xml文件。 SpringMVC是一个基于用户请求驱动的Web框架,其设计核心就是用来转发用户请求的核心控制器DispatcherServlet。 其主要作用就是截获用户请求,所以它必须在应用程序启动时自动加载,并配置要截获的请求类型,这就需要在web.xml文件中对核心控制器进行配置。 web.xml文件的代码如表8-16所示。 6.创建JSP页面login8-4.jsp 在Web项目task8-4中创建名为“login8-4.jsp”的JSP页面,该页面提供了用户登录的表单,但在该页面中并没有设置action属性,由于SpringMVC的表单控制器从被请求时起就已经开始控制表单,表单的载入、提交和转向结果页面都是由表单控制器来控制,所以没有设置action属性也能被正确提交,其主要代码如表8-17所示。 7.创建JSP页面message.jsp 在Web项目task8-4中创建名为“message.jsp”的JSP页面,该页面用于显示欢迎信息,当用户登录成功时会转向该页面,其主要代码如下所示。 欢迎光临! ${userMap.userInfo.userName}登录成功。 8.创建页面userLogin.html 在Web项目task8-4中创建名为“userLogin.html”的页面,该页面只是作为程序运行的起始页面,是一个空页面,并没有编写功能代码。 9.运行程序输出结果 运行页面userLogin.html,显示用户登录页面,分别输入正确的用户名“admin”和密码“123456”,其结果如图8-7所示。 然后单击【登录】按钮,转向JSP页面message.jsp,并在该页面中显示“欢迎光临! admin登录成功。 ”的提示信息。 【任务8-5】应用JdbcTemplate实现用户注册功能 【任务描述】 JdbcTemplate类是Spring的核心类之一,该类提供了接口来方便访问和处理数据库中的数据,这些方法提供了基本的选项用于执行查询和更新数据库操作。 JdbcTemplate类实现了很多方法的重载特征,更新数据的常用方法是update(String)。 应用JdbcTemplate实现用户注册功能。 【任务实施】 1.配置程序开发环境 首先新建动态Web项目task8-5,在该项目中创建包package085。 然后按照【操作必备】中介绍的方法导入Spring支持类库、Servlet支持类库servlet-api.jar、数据库驱动包sqljdbc4.jar。 2.创建用户实体类文件UserInfo.java 在包package085中创建实体类,将该实体类命名为“UserInfo”,该类封装了用户的详细信息,代码如表7-6所示。 3.创建类文件UserDao.java 在包package085中创建类UserDao,该类用于操作数据库,在该类中声明一个JdbcTemplate类型属性,并添加getter()方法和setter()方法,用于将JdbcTemplate注入到UserDao,然后编写一个向用户表添加用户数据的方法addUser(),该方法中调用JdbcTemplate类的update()方法向用户表中插入用户数据,其代码如表8-18所示。 4.创建Spring的配置文件applicationContext.xml 在Eclipse的【项目资源管理器】的子文件夹“src”中创建Spring的配置文件applicationContext.xml,该配置文首先配置DataSource数据源,然后配置JdbcTemplate类,将数据源对象dataSource注入JdbcTemplate
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Spring Web 应用程序 开发