首页 > 其他 > 详细

Personnel management system --第七天

时间:2019-10-15 18:32:13      阅读:82      评论:0      收藏:0      [点我收藏+]

登录及个人中心模块

  • 用户登录,退出。
  • 更换密码

登录功能的实现:用户在页面输入账号于密码,在控制层获取用户输入的账号与密码,由用户输入的账号来获取该用户对象(封装在业务层<由持久层来实现>),在业务层的方法,会比较数据库中密码和用户传进来的密码。

持久层:登录功能的实现要用到员工模块的功能,但是一般而言,项目的登录模块要应该独立于数据管理模块。

@Repository("selfDao")
public interface SelfDao {
    public Staff selectByAccount(String account);
}

持久层的实现:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.4//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="per.lc.sms.dao.SelfDao">
    <select id="selectByAccount" resultMap="per.lc.sms.dao.StaffDao.resultMap">    //引自staffDao中的resultMap
        select * from staff where account=#{account}
    </select>
</mapper>

业务层接口及实现:

public interface SelfService {
    public Staff login(String account,String password);
   public void changeWord(Staff staff);
}

实现:
@Service("selfService")
public class SelfServiceImp implements SelfService {
@Autowired
private SelfDao selfDao;
@Autowired
private StaffDao staffDao;
public Staff login(String account, String password) {
Staff staff=selfDao.selectByAccount(account);
if (staff==null){
return null;
}
if (staff.getPassword().equals(password)){
return staff;
}
return null;
}
  
public void changeWord(Staff staff) {
staffDao.update(staff);
}

 

控制层;

@Controller("selfController")
public class selfController {
    @Autowired
    private SelfService selfService;
    public void toLogin(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("login.jsp").forward(request,response);
    }
    public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String account=request.getParameter("account");
        String password=request.getParameter("password");
        Staff staff=selfService.login(account,password);
        if (staff!=null){
            HttpSession session=request.getSession();
            session.setAttribute("staff",staff);
            response.sendRedirect("main.do"); //主页面
        }else{
            response.sendRedirect("toLogin.do");
        }
    }
// /logout.do
  public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException { request.getSession().setAttribute("staff",null); response.sendRedirect("toLogin.do"); } // /main.do public void main(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("index.jsp").forward(request,response); }
// /self/info.do
public void info(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("../info.jsp").forward(request,response);
}
// /self/toChangePassword.do
public void toChangePassword(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("../change_password.jsp").forward(request,response);
}
// //self/changePassword.do
public void changePassword(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
String password=request.getParameter("password");
String password1=request.getParameter("password1");
Staff staff=(Staff)request.getSession().getAttribute("staff");
if (!password.equals(staff.getPassword())){
response.sendRedirect("toChangePassword.do");
}else {
staff.setPassword(password1);
selfService.changeWord(staff);
// response.sendRedirect("../logout.do");
//整个窗体跳转,而不是显示在index.jsp页面的右下角
response.getWriter().print("<script type=\"text/javascript\">parent.location.href=\"../logout.do\"</script>"); //头一次见这样的代码
}
}

为了防止用户不登录,直接借助url来访问路径,需要一个登录过滤器。

public class LoginFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request=(HttpServletRequest)servletRequest;
        HttpServletResponse response=(HttpServletResponse)servletResponse;
        String path=request.getServletPath();
        if (path.toLowerCase().indexOf("login")!=-1){
            filterChain.doFilter(request,response);
        }else{
            Object obj=request.getSession().getAttribute("staff");
            if (null!=obj){
                filterChain.doFilter(request,response);
            }else{
                response.sendRedirect(request.getContextPath()+"/toLogin.do"); //以绝对路径来保证能够正确跳到登录页面
            }
        }
    }

配置文件web.xml

<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>per.lc.sms.global.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>LoginFilter</filter-name>  //头一次碰见一个过滤器设置两个url-pattern
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>

 

Personnel management system --第七天

原文:https://www.cnblogs.com/liu-chen/p/11677955.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!