• 使用三层架构来实现登录


    首先先建立一些项目需要的包:

     在servlet层里面写一下和页面打交道的servlet,servlet调用service层,也就是业务处理层,service层调用dao层,用于数据库crud操作

    LoginServlet如下:

     1 @WebServlet("/login.do")
     2 public class LoginServlet extends HttpServlet {
     3     private static final long serialVersionUID = 1L;
     4 
     5    IUserService userService= new UserServiceImpl();
     6     
     7     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     8     
     9         //从前台获取我们的用户名和密码
    10         String name=request.getParameter("userName");
    11         String pass=request.getParameter("userPass");
    12         
    13         //去数据库查询是不是有这个用户
    14         UserEntity ue=userService.getUserByNameAndPass(name, pass);
    15         
    16         //根据获取的不同值来进行处理
    17         if (ue==null) {
    18             request.setAttribute("msg", "登录失败");
    19             request.getRequestDispatcher("login.jsp").forward(request, response);
    20         }else {
    21             
    22             //登录成功需要将用户名存在session里面
    23             request.getSession().setAttribute("userName",name);
    24             
    25             //跳转到一个查询用户列表的servlet里面
    26             response.sendRedirect("index.jsp");
    27         }
    28     
    29     }
    30 
    31     
    32     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    33         // TODO Auto-generated method stub
    34         doGet(request, response);
    35     }

    接下来先写一下我们的用户实体类:把它们的set和get方法生成一下

     接着写我们的service层:

    IUserService:

    1 public interface IUserService {
    2     
    3     //根据用户名和密码去查询用户的实体
    4     public UserEntity getUserByNameAndPass(String name,String pass);
    5 
    6 }

    IUserServiceImpl:

    1 IUserDao userDao=new UserDaoImpl();
    2     
    3     @Override
    4     public UserEntity getUserByNameAndPass(String name, String pass) {
    5         // TODO Auto-generated method stub
    6         return userDao.getUserByNameAndPass(name, pass);
    7     }

    接着写Dao层

     IUserDao:

    1 public interface IUserDao extends IBaseDao{
    2     
    3     public UserEntity getUserByNameAndPass(String name,String pass);
    4 
    5 }

     UserDaoImpl:

    1 public class UserDaoImpl extends BaseDaoImpl implements IUserDao{
    2 
    3     @Override
    4     public UserEntity getUserByNameAndPass(String name, String pass) {
    5         // TODO Auto-generated method stub
    6         String sql="select * from t_admin where aname=? and apass=?";
    7         return selOne(UserEntity.class, sql, name,pass);
    8     }

    后太代码写好了 接下来就是两个前端页面:

    login.jsp:

     1 <!-- 提交的方式; get  post -->
     2 
     3 
     4     <form action="login.do" method="post">
     5         
     6         <!-- name : 对应我们servlet去获取前台文本框的值的 key -->
     7         用户名:<input name="userName" type="text" value="6666"/>
     8         密码:<input name="userPass" type="password" />
     9     
    10         <!-- 默认是submit; -->
    11         <button>登录</button>
    12     
    13     <!-- 登录失败,展示登录失败的提示信息 -->
    14         ${msg}
    15     
    16     </form>

    index.jsp:

    1 <!-- 展示当前登录的用户名;看一下 session里面是否保存了用户名 -->
    2 <!-- 如果用户没有登录的话,展示一个 请登录的a连接 -->
    3 
    4 <c:if test="${empty userName}">
    5     <a href="login.jsp">请登录</a>
    6 </c:if>
    7 <c:if test="${not empty userName}">
    8     <h3>欢迎你: ${userName}</h3>
    9 </c:if>

    测试过程:

     

  • 相关阅读:
    Selenium3+python3自动化(十六)--单选框和复选框(radiobox、checkbox)
    Selenium3+python3自动化(十五)--JS处理滚动条,window.scrollTo(xpos,ypos)
    Selenium3+python3自动化(十四)--alertsconfirmprompt
    Selenium3+python3自动化(十三)--select下拉框
    Selenium3+python3自动化(十二)--iframe
    UPC-5627 Boxes(思维)
    UPC-5007 High Score(计算)
    UPC-5003 Dunglish(模拟)
    Hrbust-1830 第一个重复出现的数(线段树区间最值查询)
    UPC-5599 Minimum Sum(线段树求区间最小值+二分区间计数)
  • 原文地址:https://www.cnblogs.com/dabu/p/13052306.html
Copyright © 2020-2023  润新知