Java框架(四)——Spring

       Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。


       简单来说,Spring是一个轻量级的控制反转(IoC——Inversionof Control)面向切面(AOP——AspectOriented Programming)的容器框架。所谓的控制反转就是我们在设计模式中学到的依赖倒置原则,不依赖具体,要依赖抽象。而面向切面是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。


       Spring 设计的核心是org.springframework.beans 包,它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其用作其他多数功能的底层中介。下一个最高级抽象是 BeanFactory 接口,它是工厂设计模式的实现,允许通过名称创建和检索对象。BeanFactory 也可以管理对象之间的关系。


       在SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句。Struts是用来做应用层的,他它负责调用业务逻辑serivce层。所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依赖和强,属于耦合。这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正是用在此处。说白了,spring就是作为容器,用来管理struts和hibernate之间的工作的。它其实就是程序中的一个桥梁或者说管理者,整个程序的运行都依靠spring来管理。用什么方法来管理呢?最常见的就是IOC了。

 

       下面做一个简单的登陆Demo和大家分享,其中结合structs和Hibernate的使用:

1. 下面是applicationContext.xml文件的配置信息:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
	<bean id="dao" class="dao.CustomerDao"></bean>
	<bean name="/login" class="prj16.action.LoginAction">
		<property name="icdao">
			<ref local="dao"/>
		</property>
	</bean>
</beans>

2. 下面是使用Ioc容器中的对象的ActionServlet:

package prj16.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import idao.ICustomerDao;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import po.Customer;
import prj16.form.LoginForm;

public class LoginAction extends Action {
	private ICustomerDao icdao;

	public ICustomerDao getIcdao() {
		return icdao;
	}

	public void setIcdao(ICustomerDao icdao) {
		this.icdao = icdao;
	}
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		LoginForm loginForm=(LoginForm)form;
		String account=loginForm.getAccount();
		String password=loginForm.getPassword();
		//调用Dao
		Customer cus=icdao.getCustomerByAccount(account);
		if(cus!=null && cus.getPassword()==password){
			request.setAttribute("msg", "欢迎"+cus.getCname()+"登录成功");
		}else{
			request.setAttribute("msg", "登录失败");
		}
		return new ActionForward("/login.jsp");
	}
	
}


上边的代码只是一部分,整个项目的代码已经上传,请下载,不需要积分的





猜你喜欢

转载自blog.csdn.net/xudepeng0813/article/details/8010959