电子相册系统(二)业务层设计

1. 设计思想

首先,设计个接口用来定义公共调用的DAO的方法,然后再定义个类用来实现这个接口。这样一来,我们就不要重复去写那些增、删、改、查的语句了。当然这个接口需要注入到BaseSevlet的类中,这个类就作为所有其它业务的父类,也就是,其它类,如,用户登录、用户注册的类都要继承这个类,而这个类唯一独特的地方就是,它是开启Spring的主要入口。

2. 设计类图 


3. 代码实现

1)        业务操作数据库的接口。

public interface AlbumService
{
	/**
	 * 验证用户登录是否成功。
	 * @param name 登录的用户名
	 * @param pass 登录的密码
	 * @return 用户登录的结果,成功返回true,否则返回false
	 */
	boolean userLogin(String name , String pass);

	/**
	 * 注册新用户
	 * @param name 新注册用户的用户名
	 * @param pass 新注册用户的密码
	 * @return 新注册用户的主键
	 */
	int registUser(String name , String pass);

	/**
	 * 添加照片
	 * @param user 添加相片的用户
	 * @param title 添加相片的标题
	 * @param fileName 新增相片在服务器上的文件名
	 * @return 新添加相片的主键
	 */
	int addPhoto(String user , String title  , String fileName, String uuidName);

	/**
	 * 根据用户获得该用户的所有相片
	 * @param user 当前用户
	 * @param pageNo 页码
	 * @return 返回属于该用户、指定页的相片
	 */
	List<PhotoHolder> getPhotoByUser(String user , int pageNo);

	/**
	 * 验证用户名是否可用,即数据库里是否已经存在该用户名
	 * @param name 需要校验的用户名
	 * @return 如果该用户名可用,返回true,否则返回false。
	 */
	boolean validateName(String name);
}

2)        接口的实现类的具体实现方法。

public class AlbumServiceImpl implements AlbumService
{
	//业务逻辑组件所依赖的2个DAO组件
	private UserDao userDao = null;
	private PhotoDao photoDao = null;
	
	/**
	 * 依赖注入2个DAO组件所需要的setter方法
	 * @param userDao
	 */
	public void setUserDao(UserDao userDao)
	{
		this.userDao = userDao;
	}
	
	public void setPhotoDao(PhotoDao photoDao)
	{
		this.photoDao = photoDao;
	}

	@Override
	public boolean userLogin(String name, String pass)
	{
		try
		{
			//使用UserDao根据用户名查询用户
				User user = userDao.findByName(name);
				if (user != null && user.getPass().equals(pass))
				{
					return true;
				}
				return false;
		}
		catch ( Exception e)
		{
			e.printStackTrace();
			throw new AlbumException("处理用户登录出现异常!");
		}
	}

	@Override
	public int registUser(String name, String pass)
	{
		try
		{
			//创建一个新的User实例
			User user = new User();
			user.setName(name);
			user.setPass(pass);
			userDao.save(user);
			return user.getId();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw new AlbumException("新用户注册出现异常!");
		}
	}

	@Override
	public int addPhoto(String user, String title, String fileName, String uuidName)
	{
		try
		{
			//创建一个新的Photo实例
			Photo photo = new Photo();
			photo.setTitle(title);
			photo.setFileName(fileName);
			photo.setUuidName(uuidName);
			photo.setUser(userDao.findByName(user));
			//持久化Photo实例
			photoDao.save(photo);
			return photo.getId();
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw new AlbumException("添加相片过程出现异常!");
		}
	}

	@Override
	public boolean validateName(String name)
	{
		try
		{
			//根据用户名查询对应的User实例
			User user = userDao.findByName(name);
			if (user != null)
			{
				return false;
			}
			return true;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw new AlbumException("验证用户名是否存在的过程中出现异常!");
		}
	}

	@Override
	public List<PhotoHolder> getPhotoByUser(String user, int pageNo)
	{
		try
		{
			List<Photo> pl = photoDao.findByUser(userDao.findByName(user), pageNo);
			List<PhotoHolder> result = new ArrayList<PhotoHolder>();
			for (Photo p : pl)
			{
				result.add(new PhotoHolder(p.getTitle(), p.getFileName(), p.getUuidName()));
			}
			return result;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			throw new AlbumException("查询相片列表过程中出现异常!");
		}
	}

}

3)        其它业务的父类函数。

public class BaseServlet extends HttpServlet
{
	protected AlbumService as;
	/**
	 * 图片放大时,需要要给服务 提示字符
	 */
	protected static String IMG_CHANGE_STYLE_BIG = "big";
	/**
	 * 图片缩小需要给服务器的提示字符
	 */
	protected static String IMG_CHANGE_STYLE_SMALL = "small";
	/**
	 * 放大的比例
	 */
	protected static double IMG_CAHNGE_BIG_FLOAT = 1.1f;
	/**
	 * 缩小的比例
	 */
	protected static double IMG_CHANGE_SMALL_FLOAT = 0.9f;
	/**
	 * 最大放大的比例
	 */
	protected static double IMG_CHANGE_BIG_BIG_FLOAT = 1000.0f;
	/**
	 * 最小缩小的宽度比例
	 */
	protected static double IMG_CHANGE_SMALL_WIDTH = 100.0f;
	/**
	 * 最小缩小高度比例
	 */
	protected static double IMG_CHANGE_SMALL_height = 300.0f;
	/**
	 * 图片默认的宽度
	 */
	protected static double IMG_WIDTH = 500f;
	/**
	 * 图片默认的高度
	 */
	protected static double IMG_HEIGHT = 400f;
	
	
    /**
     * 定义初始化方法,获取Spring容器的引用
     */
	@Override
	public void init(ServletConfig config) throws ServletException
	{
		
		super.init(config);
		ApplicationContext ctx = WebApplicationContextUtils
				      .getWebApplicationContext(getServletContext());
		as = (AlbumService)ctx.getBean("albumService");
		
	}
	
}

4)        其它的具体调用父类的类,这里竹笔者就不给出了,读者可以自己看源码。





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值