引入Controller层
Controller负责调用多个Service完成一整个事务
在编写Controller方法时,需要注意:
- 仍然是先直接实例化Service对象,以后再进行控制反转的安排
- 由于得到的对象都是在Controller中进行完整包装的,所以在传入参数中需要包含一个Session,用于存储包装完成的对象
- 为了方便由后续DispatcherServlet总控所控制的页面重定向,Controller中每个方法的返回值最好都是一个字符串,用于向总控指明应该跳转到哪一个网页
编写
当前项目下,Controller类的功能安排仅有一个:用户登录,登陆成功后将此用户对象的UserDetail、friendList属性全部通过Service获取并装填,然后将对象保存
所以,Controller的代码如下:
public class UserController {
private UserLoginService userLoginService= new UserLoginServiceImpl();
private UserDetailService userDetailService = new UserDetailServiceImpl();
public String login(String loginId, String pwd, HttpSession session) {
UserLogin login = userLoginService.login(loginId, pwd);
if(login != null) {
//调用Service方法获取待填的信息
List<UserLogin> friendList = userLoginService.getFriendList(login);