初级理解Spring

1、Spring 核心容器理论:Spring就是一个大容器, 只要是一个java类,Spring就可以管理该java类,并把它当成bean处理。对于Spring框架而言,一切java对象都是bean.

2、Spring通过XML配置文件管理容器中的Bean。Spring对XML文件名无任何要求

 <beans>
	<bean id="userdao" class="struts44.UserDao">	
	</bean>

	<bean id="handleAction" class="struts44.HandleDataAction">
		<property name="userdao" ref="userdao"></property>
	</bean>
</beans>

每一个Bean就表示一个java类,<bean></bean>元素默认以反射方式调用该类无参数构造器。id为容器中唯一标识,class的值是具体类。 

<property> 是<bean>的子元素,它驱动Spring在底层以反射执行一次setter方法。 name属性值决定执行哪一个setter方法

,而valueref决定执行setter方法的传入参数。

    (1)如果传入参数是基本类型,则使用value属性传参数

    (2)如果以容器中其他Bean作为传入参数,则使用ref属性指定传入参数

 下面的例子就是以容器中的userdao作为传入参数,使用ref;

3、struts中整合Spring

  注册用户,数据保存到数据库,显示注册信息

    1)在项目中添加驱动

    2)注册界面  reg.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="handleAction" method="post">
<label>账号</label><input name="user.zhanghao"/><br/>
<label>昵称</label><input name="user.nicheng"/><br/>
<label>密码</label><input type="password" name="user.mima"/><br/>
<label>邮箱</label><input name="user.youxiang"/><br/>
<label>QQ号</label><input name="user.qq"/><br/>
<input type="submit" value="注册"/>
</form>
</body>
</html>

    3)用户提交的数据到handAction处理

package struts44;

import javax.websocket.Session;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class HandleDataAction extends ActionSupport {
      User user=null;
      UserDao userdao=null; 
      public UserDao getUserdao() {
		return userdao;
      }
      public void setUserdao(UserDao userdao) {
		this.userdao = userdao;
      }
      public User getUser(){
    	  return user;
      }
      public void setUser(User user) {
		this.user = user;
      }
      
      public String execute(){
    	int id=userdao.insertUser(user);
    	if(id>0){
    		
    		user=userdao.getUser(id);
    		ActionContext ctx=ActionContext.getContext();
    		/*
    		 * ActionContext 可以访问和设置Application Session Requst的值
    		 * */
    		ctx.getSession().put("user", user);
    		System.out.println("it's fine"+id);
    		return SUCCESS;
    	}
    	else{
    		//addActionMessage("error");
    		return "error";
    	}
    	
    }
} 

在 handAction中,将Uesrdao设置成为一个成员变量。赋值为null,并添加set,get方法。Spring在底层会给它new一个Userdao实例,并将这个对象注入到这个成员变量。

    4)在application.xml配置bean, 这里 有两个bean,分别对应两个java类。

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
	<bean id="userdao" class="struts44.UserDao">	
	</bean>
	<bean id="handleAction" class="struts44.HandleDataAction">
		<property name="userdao" ref="userdao"></property>//在handActon下在成员变量userdao 的set方法里传另一个bean元素userdao
	</bean>
</beans>



猜你喜欢

转载自blog.csdn.net/xmj_0422/article/details/80051414