JAVA项目实训struts2_JavaWeb学习:Struts2与Spring的IOC练习

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

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

378c030378fd6d3023594098edac5e6e.png

二、创建实体类

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包

69c6d9761ce82efc686d42c2459ea18b.png

②、配置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包

cdc9c2846d81b7d5c4feabfda283dc9d.png

②、通过配置将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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值