spring正和strust2、hibernate小案例

时间:2022-08-28 13:46:48

title: spring整合strust2、hibernate小案例
date: 2018-3-7 17:10:27
categories: Spring
tags: Spring


spring正和strust2、hibernate小案例

echo原创,欢迎转载,转载请声明文章来源。更多案例、资料请联系QQ:1280023003
这个案例主要为了整合三大框架,使用了annotation开发方案。该案例使用的数据库是MySQL,连接数据库的技术是c3p0。

主要实现了以下功能:

  • 1、一键查询所有客户
  • 2、添加用户(文件上传,上传一个头像)
  • 3、查询到所有客户之后,需要在每一个客户后面加上删除、订单详情
  • 4、删除客户
  • 5、查询对应客户的订单信息(使用了ajax异步加载和bootstrap模态框)
  • 6、删除订单
  • 7、查询订单,模态框显示订单

开发步骤如下:

1、导入三大框架基础jar包,连接数据库的jar包和日志包

2、在web.xml中配置相应的拦截器
- (1)、配置spring的监听器
- (2)、struts2核心拦截器

3、在src下创建applicationContext.xml和struts.xml,并且导入一个log4j.properties的日志文件,该文件可以在网上自行下载。案例原代理也会有

4、在applicationContext.xml中配置spring整合hibernate的信息,主要有以下三个模块。spring整合struts2的配置,可以留到之后编写方法的时候再进行配置。
- (1)、配置连接池
- (2)、配置管理sessionFactory
- ①、加载连接池
- ②、配置hibernate数据库基本操作
- ③、开启JPA注解自动扫描
- (3)、配置事务管理器

5、搭建项目基本层级结构
spring正和strust2、hibernate小案例

6、编写实体类,并使用JPA注解完成实体类的映射。该案例使用的注解开发,所以不需要配置相应的映射文件。(编写完成之后,服务器可以发布该项目,如果发布成功后,数据库会出现自动创建的表)

7、编写查询所有客户的代码index.jsp,页面中只需要一个超链接即可

8、编写action接受jsp页面请求。注意:如果action中配置了Namespace(“/”),那么,访问的路径应该为http://localhost:8080/ssh-test/findAllCustomer,前面固定,工程名后面是跟/加,切入点。

9、编写action对应的findAllCustomer方法,然后层级传递请求,最后实现数据库查询,返回一个customer的集合。将集合中的东西存入值栈,编写customerList.jsp来接受返回的客户信息。注意:action都继承ActionSupprot

10、显示信息之后调整customerList.jsp。在显示数据的代码后面添加删除客户、订单详情的按钮。在最上部添加一个添加客户的按钮

11、编写添加客户的页面addCustomer.jsp。通过添加客户的按钮跳转至该页面。该页面由于需要上传头像(图片),所以需要注意几个必须要的元素
- (1)、表单中有type=file的input上传文件框
- (2)、表单的提交方式必须是post
- (3)、表单上必须有:enctype=”multipart/form-data属性
- (4)、注意:接收参数时封装数据的元素名称最好全部和表单的name相同,不然无法实现上传功能。

12、编写对应的添加客户的方法。注意:添加客户需要实现上传头像的功能,所以最好不要在原来的action中直接写方法。因为上传文件需要封装一些参数,如果写在一个类里面会导致代码混乱。这里我们可以创建另外一个action类来实现,多创建一个类和多创建一个servlet是一样的。

13、编写方法来处理上传的图片,将图片存入服务器中

14、封装传入的参数,从服务器获取图片路径,存入数据库。

15、在action方法上面使用重定向再次查询所有客户。注意:这里不能使用转发,如果使用转发地址栏不会改变,再次刷新就会造成再次提交注册用户参数。

16、处理上传图片过大问题。在struts.xml中配置:<!-- 更改上传文件最大值 --> <constant name="struts.multipart.maxSize" value="209715200"></constant>(注意:如果是正常开发需要做校验,限制大小及图片格式)

17、在domain中的customer类的订单属性上配置级联删除@Cascade(CascadeType.DELETE)用于删除用户

18、在customerAction中编写删除用户的方法。注意:由于删除客户是直接在地址后面添加的参数,所以我们可以使用ModelDriven来封装接受数据。

19、编写一个orderAction类,在类中编写方法,用于查询客户对应的所有订单。注意:页面显示的是客户信息,所以我们拿到的是客户的信息,我们需要通过客户的信息查询订单,所以需要先查询到该客户。

20、拿到查询的数据后,我们需要对数据进行处理。在本案例中,我们使用的fastJson的数据解析方式,所以我们需要使用PropertyFilter来处理数据。

21、在数据中主要是过滤掉customer的信息,因为我们使用的是双表关联查询。但是我们需要留下customer的name以便页面展示是谁的订单

22、处理完成之后使用JSONArray.toJSONString()来转换数据

23、最后使用response响应浏览器

项目案例源代码

spring整合strust2、hibernate小案例.zip

源代码地址:https://pan.baidu.com/s/1OyLX8TGklsyHu9Rm6tCyhA
源代码访问密码:z2oc