下面展示各個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,可以將邏輯和具體實現分隔開,可以搭建最基本的框架。
至此,框架搭建完畢並且也提供了一個小例子,見微知著,可以明白基本流程。