需求从页面输入的用户名和密码和数据库中的用户信息进行比对全部相同才可以登录成功有一个信息不同则显示“错误重新登录”登录成功后才可以访问其他页面比如列表页新增页等直接在浏览器中访问其他页面也要跳转到登录页进行登录后再操作数据表User实现简单的登录页面那就设计一个简单的用户信息表字段简约这是mysql建表和一条admin用户的数据DROP TABLE IF EXISTSuser;CREATE TABLEuser(idbigint(20)NOT NULL,usernamevarchar(255)CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,passwordvarchar(255)CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY(id)USING BTREE)ENGINEInnoDB CHARACTER SETutf8 COLLATEutf8_general_ci ROW_FORMATDynamic;-- ---------------------------- -- Records of user -- ---------------------------- INSERT INTOuserVALUES(1,admin,666);前端页面同样简约的前端页面没有添加任何样式% page contentTypetext/html;charsetUTF-8 languagejava %htmlheadtitle登录/title/headbody!-- 这里用来放需要登录或是输入错误的提示词 --h3nametop${top}/h3formmethodPOSTaction/logintabletrtd用户名/tdtdinputtypetextnameusername//td/trtrtd密码/tdtdinputtypepasswordnamepassword//td/trtrtdcolspan2inputtypesubmitvalue提交//td/tr/table/form/body/html输入信息错误显示页面Filterimportjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;//这里存放需要过滤的页面我放的是列表和新增页的WebFilter(urlPatterns{/info,/input})//通过实现Filter接口来进行页面的过滤操作publicclassLoginFilterimplementsFilter{Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{}//获取session中的数据有user数据就可以操作没有要进行登录OverridepublicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{HttpServletRequestrequest(HttpServletRequest)servletRequest;HttpServletResponseresponse(HttpServletResponse)servletResponse;Useruser(User)request.getSession().getAttribute(user);//为空表示没有登录设置提示词跳转到登录页面if(usernull){request.setAttribute(top,需要登录);request.getRequestDispatcher(/login.jsp).forward(request,response);return;}filterChain.doFilter(servletRequest,servletResponse);}Overridepublicvoiddestroy(){}}登录判断User实体类importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;DataNoArgsConstructorAllArgsConstructorpublicclassUser{privateLongid;privateStringusername;privateStringpassword;}servlet层importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;WebServlet(/login)publicclassLoginServletextendsHttpServlet{privateUserServiceuserServicenewUserServiceImpl();Overrideprotectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{UserusernewUser();req.setCharacterEncoding(utf-8);resp.setCharacterEncoding(utf-8);Stringusernamereq.getParameter(username);if(username!null!username.isEmpty()){user.setUsername(username);}Stringpasswordreq.getParameter(password);if(password!null!password.isEmpty()){user.setPassword(password);}UseruuserService.getByNameAndPass(user);if(unull){req.setAttribute(top,用户名或密码错误请重新输入);req.getRequestDispatcher(/login.jsp).forward(req,resp);}else{req.getSession().setAttribute(user,u);req.getRequestDispatcher(/info).forward(req,resp);}}}service层//接口publicinterfaceUserService{UsergetByNameAndPass(Useruser);}//实现类publicclassUserServiceImplimplementsUserService{privateUserDAOuserDAOnewUserDAOImpl();OverridepublicUsergetByNameAndPass(Useruser){returnuserDAO.getByNameAndPass(user);}}dao层//接口publicinterfaceUserDAO{UsergetByNameAndPass(Useruser);}//实现类publicclassUserDAOImplimplementsUserDAO{privateSqlSessionsqlSessionConnUtils.getSqlSession();OverridepublicUsergetByNameAndPass(Useruser){returnsqlSession.selectOne(cn.stu.mapper.UserMapper.getByNameAndPass,user);}}mapper层?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttps://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecn.stud.mapper.UserMapperselectidgetByNameAndPassresultTypecn.stud.domain.Userselect id, username,password from userwhereiftestusername ! null and username ! username #{username}/ififtestpassword ! null and password ! and password #{password}/if/where/select/mapper记得要把新增的用户mapper添加到mybatis和log4j文件当中因为我这边原来做的是学生信息管理User相关的操作和页面都是新添加进去的所以要重新配置文件哦