intellij配置maven+SSM+redis(三)

下面展示各個java類的編寫實例:

1、controller包下的user包中的UserController,簡單實現登錄註冊功能。

@Controller
public class UserController {

    @Value("#{userManager}")
    private IUserService userService; 


   @RequestMapping("verify_nick_name.do")
    public voidverify_nick_name(HttpServletRequest request, HttpServletResponse response)throws IOException {
        String username = (String)request.getParameter("nickname");
       response.setContentType("text/plain");
       response.setCharacterEncoding("utf-8");
       if(userService.check_username(username) == true)
           response.getWriter().write("ok");
        else
            response.getWriter().write("error");
    }

   @RequestMapping("user_login.do")
    public ModelAndView user_login(User_user, HttpServletRequest request) throws IOException {
        ModelAndView mav = newModelAndView();
        User user = userService.user_login(_user);
        if(user != null){
            HttpSession session =request.getSession();
           session.setAttribute("user", user);
           session.setAttribute("userphoto", user.getUserphoto());
           mav.setViewName("index");
        }else{
           mav.setViewName("login");
        }
        return mav;
    }

   @RequestMapping("log_out.do")
    public ModelAndViewlog_out(HttpServletRequest request){
       request.getSession().setAttribute("user", null);
        ModelAndView mav = newModelAndView("index");
        return mav;
    }

    //用戶註冊
   @RequestMapping("user_register.do")
    public ModelAndViewuser_register(User user, HttpServletRequest request) throws IOException {
        ModelAndView mav = newModelAndView("register");
       if(userService.user_register(user) == true){
           mav.setViewName("login");
        }else{
           mav.addObject("reg_info", "註冊失敗");
        }
        return mav;
    }
}
 


首先需要在類上進行註解標註@Controller,表示這個類爲spring中的Controller,@RequestMapping(”xxx.do”)代表輸入localhost:8080/xxx.do則會進入到這個函數,這是由之前配置的springMVC進行servlet分發處理的,所以在這個基礎包下的controller都可以被裝配識別。設置View的名字則可以進入相應的jsp,涉及到具體的邏輯。可以看到

@Value("#{userManager}")
private IUserService userService;

很明顯這是一個Service層接口,包含了具體的實現,比如在數據庫中添加一條記錄屬於具體實現,而在Controller中更應該注重業務邏輯,所以需要分層。@Value的含義是實現了這個service接口的類名稱,在service中有一個impl包,實現service,需要給實現類起名字,這樣的話就可以裝配進入使用了。                                                                                                     

 

下面看一下service層的類編寫:

IUserService.java
public interface IUserService {
    public boolean user_login(User user);
    public boolean user_register(Useruser);
}


提供Service接口,面向接口編程,屏蔽實現細節,在Controller中只需關注邏輯即可,代碼中不包含與數據庫的交互操作。

 

UserService.java
@Service("userManager")
@Transactional
public class UserService implements IUserService{

    @Autowired
    private IUserMapper userMapper;
    public boolean user_login(User user){

        User u1 =userMapper.getUserByName("2");
        return false;
    }

    public boolean user_register(Useruser) {
        return false;
    }
}
 

@Service("userManager")的作用是標記此實現類名稱爲userManager,在Controller裏面可以通過@Value引用這個實現類,可以看到在Service中注入一個mapper,所以可以看到是service與數據庫進行交互而非controller,可以將邏輯和具體實現分隔開,可以搭建最基本的框架。

 

至此,框架搭建完畢並且也提供了一個小例子,見微知著,可以明白基本流程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章