1.GlobalBiz 定义对employee的操作
package com.imooc.oa.biz;
import com.imooc.oa.entity.Employee;
public interface GlobalBiz {
Employee login(String sn, String password);
void changePassword(Employee employee);
}
2.Impl
package com.imooc.oa.biz.impl;
import com.imooc.oa.biz.GlobalBiz;
import com.imooc.oa.dao.EmployeeDao;
import com.imooc.oa.entity.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("globalBiz")
public class GlobalBizImpl implements GlobalBiz {
@Autowired
private EmployeeDao employeeDao;
public Employee login(String sn, String password) {
Employee employee = employeeDao.select(sn);
if(employee!=null&&employee.getPassword().equals(password)){
return employee;
}
return null;
}
public void changePassword(Employee employee) {
employeeDao.update(employee);
}
}
3.GlobalController
package com.imooc.oa.controller;
import com.imooc.oa.biz.GlobalBiz;
import com.imooc.oa.entity.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;
@Controller("globalController")
public class GloablController {
@Autowired
private GlobalBiz globalBiz;
@RequestMapping("/to_login")
public String toLogin(){
return "login";
}
@RequestMapping("/login")
public String login(HttpSession session, @RequestParam String sn, @RequestParam String password){
Employee employee = globalBiz.login(sn,password);
if (employee == null) {
return "redirect:to_login";
}
session.setAttribute("employee",employee);
return "redirect:self";
}
@RequestMapping("/self")
public String self(){
return "self";
}
@RequestMapping("/quit")
public String quit(HttpSession session){
session.setAttribute("employee",null);
return "redirect:to_login";
}
@RequestMapping("/to_change_password")
public String toChangePassword(){
return "change_password";
}
@RequestMapping("/change_password")
public String changePassword(HttpSession session, @RequestParam String old, @RequestParam String new1 ,@RequestParam String new2){
Employee employee = (Employee)session.getAttribute("employee");
if(employee.getPassword().equals(old)){
if(new1.equals(new2)){
employee.setPassword(new1);
globalBiz.changePassword(employee);
return "redirect:self";
}
}
return "redirect:to_change_password";
}
}
4.登陆拦截器
package com.imooc.oa.global;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String url = httpServletRequest.getRequestURI();
if(url.toLowerCase().indexOf("login")>=0){
return true;
}
HttpSession session = httpServletRequest.getSession();
if(session.getAttribute("employee")!=null){
return true;
}
httpServletResponse.sendRedirect("/to_login");
return false;
}
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
注意点:
1.登陆拦截器
(1)如果是访问登陆界面 放行
String url = httpServletRequest.getRequestURI();
if(url.toLowerCase().indexOf("login")>=0){
return true;
}
(2) 通过session获取当前对象,如果当前有登陆用户,放行
HttpSession session = httpServletRequest.getSession();
if(session.getAttribute("employee")!=null){
return true;
}
(3)最后,既不是访问登陆界面,也没有登陆
httpServletResponse.sendRedirect("/to_login");
return false;