关于Controller和Service的分工问题(个人理解,未必正确)

Controller负责给Service组装参数,调用Service,将Service的结果放到需要渲染的页面里面。最核心的业务逻辑还是有Service来负责完成。

以下的代码摘抄自《精通spring4.x企业应用开发实战》,代码版权属于该书作者。

例子一:

/**
	 * 添加一个主题帖
	 * 
	 * @param request
	 * @param topic
	 * @return
	 */
	@RequestMapping(value = "/board/addTopic", method = RequestMethod.POST)
	public String addTopic(HttpServletRequest request,Topic topic) {
		User user = getSessionUser(request);
		topic.setUser(user);
		Date now = new Date();
		topic.setCreateTime(now);
		topic.setLastPost(now);

		forumService.addTopic(topic);

		String targetUrl = "/board/listBoardTopics-" + topic.getBoardId()
				+ ".html";
		return "redirect:"+targetUrl;
	}

 

下面是forumService.addTopic(topic),该方法的代码。

/**
	 * 发表一个主题帖子,用户积分加10,论坛版块的主题帖数加1
	 * @param topic
	 */
	public void addTopic(Topic topic) {
		Board board = (Board) boardDao.get(topic.getBoardId());
		board.setTopicNum(board.getTopicNum() + 1);	
		topicDao.save(topic);
		//topicDao.getHibernateTemplate().flush();
		
		topic.getMainPost().setTopic(topic);
		MainPost post = topic.getMainPost();
		post.setCreateTime(new Date());
		post.setUser(topic.getUser());
		post.setPostTitle(topic.getTopicTitle());
		post.setBoardId(topic.getBoardId());
		postDao.save(topic.getMainPost());
		
		User user = topic.getUser();	
		user.setCredit(user.getCredit() + 10);
		userDao.update(user);
	}

 

例子二:

/**
	 * 回复主题
	 * 
	 * @param request
	 * @param post
	 * @return
	 */
	@RequestMapping(value = "/board/addPost")
	public String addPost(HttpServletRequest request, Post post) {
		post.setCreateTime(new Date());
		post.setUser(getSessionUser(request));
		Topic topic = new Topic();
		int topicId = Integer.valueOf(request.getParameter("topicId"));
		if (topicId >0) {
			topic.setTopicId(topicId);
			post.setTopic(topic);
		}

		forumService.addPost(post);

		String targetUrl = "/board/listTopicPosts-"
				+ post.getTopic().getTopicId() + ".html";
		return "redirect:"+targetUrl;
	}

下面是forumService.addPost(post)的代码:

/**
	 * 添加一个回复帖子,用户积分加5分,主题帖子回复数加1并更新最后回复时间
	 * @param post
	 */
	public void addPost(Post post){
		postDao.save(post);
		
		User user = post.getUser();
		user.setCredit(user.getCredit() + 5);
		userDao.update(user);
		
		Topic topic = topicDao.get(post.getTopic().getTopicId());
		topic.setReplies(topic.getReplies() + 1);
		topic.setLastPost(new Date());
		//topic处于Hibernate受管状态,无须显示更新
		//topicDao.update(topic);
	}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值