需求:把客户信息存储到数据库中

一、创建web项目,搭建基盘

二、创建实体类

public classCustomer {privateLong cust_id;privateString cust_name;privateString cust_source;privateString cust_industry;privateString cust_level;privateString cust_phone;private String cust_mobile;

三、搭建struts2环境

①、引入struts2的开发jar包

②、配置struts2的核心过滤器

struts2

org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

struts2

/*

③、编写Action

public class CustomerAction extends ActionSupport implements ModelDriven{//使用模型驱动获取页面上的值

Customer customer=newCustomer();

@OverridepublicCustomer getModel() {returncustomer;

}publicString saveUI() {return "saveUI";

}

}

④、在src下新建strust.xml,添加以下内容

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"

"http://struts.apache.org/dtds/struts-2.5.dtd">

regex:.*

/jsp/customer/add.jsp

⑤、测试struts2环境

- 新增客户

⑥、编写客户信息保存页面

编写Action的save方法,需要实例化Service的接口实现类,这样的话Action与Service属于紧耦合,所以需要使用Spring解耦

四、搭建Spring环境

①、引入jar包

②、通过配置将Service交给Spring,在src下新建applicationContext.xml

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

③、Action中调用Service

publicString save() {

ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

CustomerService customerService=(CustomerService) applicationContext.getBean("customerService");

System.out.println("CustomerAction中的save方法执行了");

customerService.save(customer);returnNONE;

}

④、Service接口和实现类

//接口==============

public interfaceCustomerService {public voidsave(Customer customer);

}//实现类=============

public class CustomerServiceImpl implementscom.xxx.crm.service.CustomerService {

@Overridepublic voidsave(Customer customer) {

System.out.println("CustomerService的save方法执行了");

}

}

以上可以测试。

⑤、Service的接口实现类需要调用DAO层的方法,为了解耦DAO交给Spring管理

⑥、DAO接口和实现类

//接口==============

public interfaceCustomerDao {public voidsave(Customer customer);

}//实现类=============

public class CustomerDaoImpl implementsCustomerDao {public voidsave(Customer customer) {

System.out.println("CustomerDao中的save方法执行了");

}

}

⑦、Service中使用DAO

在Action使用Service时已经加载过applicationContext.xml了,就已经创建了Service和DAO了,所以就不需要再加载applicationContext.xml了。并且Service和DAO都是被Spring管理的,所以可以使用依赖注入的方式获取DAO的对象

Ⅰ、编写Service实现类的方法

public class CustomerServiceImpl implementscom.xxx.crm.service.CustomerService {privateCustomerDao customerDao;public voidsetCustomerDao(CustomerDao customerDao) {this.customerDao =customerDao;

}

@Overridepublic voidsave(Customer customer) {

System.out.println("CustomerService的save方法执行了");

customerDao.save(customer);

}

}

Ⅱ、Spring的属性注入(可以发现Spring的属性注入的前提:1、一个类要被另一个类使用,2、这两个类都必须是Spring管理的)

五、问题

上述案例每次请求都会创建Spring的工厂,浪费服务器资源

解决:

在服务器启动的时候创建Spring的工厂

将工厂存储到ServletContext中

每次请求从ServletContext中获取

使用Spring核心监听器(ContextLoaderListener)

①、引入jar包

spring-web.jar

②、配置监听器

contextConfigLocation

classpath:applicationContext.xml

org.springframework.web.context.ContextLoaderListener

③、在Action中获取工厂

publicString save() {

ServletContext servletContext=ServletActionContext.getServletContext();

WebApplicationContext applicationContext=WebApplicationContextUtils.getWebApplicationContext(servletContext);//ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");

CustomerService customerService=(CustomerService) applicationContext.getBean("customerService");

System.out.println("CustomerAction中的save方法执行了");

customerService.save(customer);returnNONE;

}

JAVA项目实训struts2_JavaWeb学习:Struts2与Spring的IOC练习相关推荐

  1. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

  2. 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw ...

  3. JAVA项目实训struts2_Java Web项目搭建过程记录(struts2)

    开发工具:eclipse 搭建环境:jdk1.7   tomcat 8.0 基础的java开发环境搭建过程不再赘述,下面从打开eclipse 之后的操作开始 第一步: 创建项目,File -> ...

  4. 第一次Java项目实训:GUI学生管理系统

    一.实训概述 1.实训目的 让学生综合运用J2SE有关知识开发[学生信息管理系统].主要涉及程序控制结构.面向对象编程.图形用户界面.Java数据库应用.MySQL数据库这几个方面的内容.通过本项目的 ...

  5. 第二次Java项目实训

    一.创建项目 1.创建一个Java项目--学生信息管理系统(XXX)V1.0 具体步骤:File--New--project--next--next--写上项目名称--finish 2.在项目里创建文 ...

  6. Java项目实训报告

    One:JVM实践思维图(完整版) Two: 走近Java 概述+ Java技术体系+Java发展史+Java虚拟机家族:(Sun Classic/Exact VM.HotSpot VM.Mobile ...

  7. Java项目实训——学生成绩查询系统

    avg:分别统计学生或课程 get song Java:输出song的Java成绩 sort C:输出所有学生在C课程下的排名 new:重新输入学生的成绩 首先应定义静态变量: static Stri ...

  8. 我的第一个Java项目实训--家庭记账软件!

    这是我刚学完流程控制的时候照着敲得一个小项目! class familyAccount{public static void main(String[] args){boolean isFlag=tr ...

  9. Java程序设计教程与实训_Java程序设计教程与项目实训

    Java程序设计教程与项目实训 编辑 锁定 讨论 上传视频 <Java程序设计教程与项目实训>是2017年8月清华大学出版社出版的图书,作者是温秀梅.司亚超. 书    名 Java程序设 ...

最新文章

  1. 基于X的GNOME、GTK、GDK、XLib、GLib等之间的关系
  2. sizeof用法研究
  3. webpack.DefinePlugin使用介绍
  4. 解决python多版本环境下pip报错Fatal error in launcher: Unable to create process using问题
  5. 【spark】SparkSession的API
  6. elementui更改默认样式
  7. (三)Clang/ LLVM编译流程简述
  8. 美团门票公布清明假期数据:单日入园人次超200万
  9. 现在当兵有什么待遇复原以后_当兵多少年最好呢?这些关键点会影响在部队发展,很重要、很实用...
  10. [转载] python中*args 和 **kwargs区别
  11. npm install 报错 npm ERR! errno ETIMEDOUT
  12. c语言情话编程,用c语言编写浪漫情话
  13. ASDFZ 3633 -- 排兵布阵
  14. 如何打造有战斗力的团队
  15. 【计算机网络】湖南中医药大学——计算机网络实地考察项目
  16. 阿里云免费SSL证书申请
  17. Linux NFS存储服务详解
  18. pillow进行图像处理
  19. Python反转字典的两种方法
  20. 空调器制冷系统故障-冷凝器脏堵

热门文章

  1. 中兴3G模块 MU301
  2. 【学习笔记】一:JavaScript简介
  3. 每天CookBook之Python-005
  4. 在弹窗中新建一个遮罩层
  5. 需要安全认证的远程EJB调用示例(Jboss EAP 6.2环境)
  6. .NET (C#)ASP.NET 应用程序与页面生命周期
  7. Linux系统故障排查和修复技巧
  8. 使用Windows远程桌面工具来远程连接控制Ubuntu系统
  9. 使用Eclipse查看反编译后的代码(Decompiler 插件)
  10. js控制按钮n秒后可用