Spring_MVC(1)构建简单web应用

Java代码 复制代码
  1. /**  
  2.  * 2010-1-23  
  3.  */  
  4. package org.zlex.spring.service;   
  5.   
  6. /**  
  7.  *   
  8.  * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>  
  9.  * @version 1.0  
  10.  * @since 1.0  
  11.  */  
  12. public interface AccountService {   
  13.   
  14.     /**  
  15.      * 验证用户身份  
  16.      *   
  17.      * @param username  
  18.      * @param password  
  19.      * @return  
  20.      */  
  21.     boolean verify(String username, String password);   
  22.   
  23. }  
/**
 * 2010-1-23
 */
package org.zlex.spring.service;

/**
 * 
 * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
 * @version 1.0
 * @since 1.0
 */
public interface AccountService {

	/**
	 * 验证用户身份
	 * 
	 * @param username
	 * @param password
	 * @return
	 */
	boolean verify(String username, String password);

}


接口不需要任何Spring注解相关的东西,它就是一个简单的接口!
重要的部分在于实现层,如下所示:
AccountServiceImpl.java

Java代码 复制代码
  1. /**  
  2.  * 2010-1-23  
  3.  */  
  4. package org.zlex.spring.service.impl;   
  5.   
  6. import org.springframework.beans.factory.annotation.Autowired;   
  7. import org.springframework.stereotype.Service;   
  8. import org.springframework.transaction.annotation.Transactional;   
  9. import org.zlex.spring.dao.AccountDao;   
  10. import org.zlex.spring.domain.Account;   
  11. import org.zlex.spring.service.AccountService;   
  12.   
  13. /**  
  14.  *   
  15.  * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>  
  16.  * @version 1.0  
  17.  * @since 1.0  
  18.  */  
  19. @Service  
  20. @Transactional  
  21. public class AccountServiceImpl implements AccountService {   
  22.   
  23.     @Autowired  
  24.     private AccountDao accountDao;   
  25.   
  26.     /*  
  27.      * (non-Javadoc)  
  28.      *   
  29.      * @see org.zlex.spring.service.AccountService#verify(java.lang.String,  
  30.      * java.lang.String)  
  31.      */  
  32.     @Override  
  33.     public boolean verify(String username, String password) {   
  34.   
  35.         Account account = accountDao.read(username);   
  36.   
  37.         if (password.equals(account.getPassword())) {   
  38.             return true;   
  39.         } else {   
  40.             return false;   
  41.         }   
  42.     }   
  43.   
  44. }  
/**
 * 2010-1-23
 */
package org.zlex.spring.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.zlex.spring.dao.AccountDao;
import org.zlex.spring.domain.Account;
import org.zlex.spring.service.AccountService;

/**
 * 
 * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
 * @version 1.0
 * @since 1.0
 */
@Service
@Transactional
public class AccountServiceImpl implements AccountService {

	@Autowired
	private AccountDao accountDao;

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.zlex.spring.service.AccountService#verify(java.lang.String,
	 * java.lang.String)
	 */
	@Override
	public boolean verify(String username, String password) {

		Account account = accountDao.read(username);

		if (password.equals(account.getPassword())) {
			return true;
		} else {
			return false;
		}
	}

}


注意以下内容:

Java代码 复制代码
  1. @Service  
  2. @Transactional  
@Service
@Transactional


注解@Service用于标识这是一个Service层实现,@Transactional用于控制事务,将事务定位在业务层,这是非常务实的做法!
接下来,我们来看持久层:AccountDao和AccountDaoImpl类
AccountDao.java

Java代码 复制代码
  1. /**  
  2.  * 2010-1-23  
  3.  */  
  4. package org.zlex.spring.dao;   
  5.   
  6. import org.zlex.spring.domain.Account;   
  7.   
  8. /**  
  9.  *   
  10.  * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>  
  11.  * @version 1.0  
  12.  * @since 1.0  
  13.  */  
  14. public interface AccountDao {   
  15.   
  16.     /**  
  17.      * 读取用户信息  
  18.      *   
  19.      * @param username  
  20.      * @return  
  21.      */  
  22.     Account read(String username);   
  23.   
  24. }  
/**
 * 2010-1-23
 */
package org.zlex.spring.dao;

import org.zlex.spring.domain.Account;

/**
 * 
 * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
 * @version 1.0
 * @since 1.0
 */
public interface AccountDao {

	/**
	 * 读取用户信息
	 * 
	 * @param username
	 * @return
	 */
	Account read(String username);

}


这个接口就是简单的数据提取,无需任何Spring注解有关的东西!
再看其实现类:
AccountDaoImpl.java

Java代码 复制代码
  1. /**  
  2.  * 2010-1-23  
  3.  */  
  4. package org.zlex.spring.dao.impl;   
  5.   
  6. import org.springframework.stereotype.Repository;   
  7. import org.zlex.spring.dao.AccountDao;   
  8. import org.zlex.spring.domain.Account;   
  9.   
  10. /**  
  11.  *   
  12.  * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>  
  13.  * @version 1.0  
  14.  * @since 1.0  
  15.  */  
  16. @Repository  
  17. public class AccountDaoImpl implements AccountDao {   
  18.   
  19.     /* (non-Javadoc)  
  20.      * @see org.zlex.spring.dao.AccountDao#read(java.lang.String)  
  21.      */  
  22.     @Override  
  23.     public Account read(String username) {   
  24.         
  25.         return new Account(username,"wolf");   
  26.     }   
  27.   
  28. }  
/**
 * 2010-1-23
 */
package org.zlex.spring.dao.impl;

import org.springframework.stereotype.Repository;
import org.zlex.spring.dao.AccountDao;
import org.zlex.spring.domain.Account;

/**
 * 
 * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
 * @version 1.0
 * @since 1.0
 */
@Repository
public class AccountDaoImpl implements AccountDao {

	/* (non-Javadoc)
	 * @see org.zlex.spring.dao.AccountDao#read(java.lang.String)
	 */
	@Override
	public Account read(String username) {
	 
		return new Account(username,"wolf");
	}

}


这里只需要注意注解:

Java代码 复制代码
  1. @Repository  
@Repository


意为持久层,Dao实现这层我没有过于细致的介绍通过注解调用ORM或是JDBC来完成实现,这些内容后续细述!
这里我们没有提到注解@Component,共有4种“组件”式注解:

引用
 
@Component:可装载组件 
@Repository:持久层组件 
@Service:服务层组件 
@Controller:控制层组件


这样spring容器就完成了控制层、业务层和持久层的构建。
启动应用,访问http://localhost:8080/spring/account.do?username=snow&password=wolf
观察控制台,如果得到包含“true”的输出,本次构建就成功了!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值