登录流程的实现

该文章详细描述了如何构建一个用户登录系统,包括编写前端登录页面,设置欢迎页,设计DAO层接口及其实现,实现业务逻辑层,编写Servlet控制层以处理HTTP请求,以及注册Servlet并在测试中验证功能的正确性。

目录

1.编写前端页面

2.设置首页 

3.编写dao层用户登录的接口

4.实现dao层接口的实现类

5.实现业务层接口

6.实现业务层实现类

7.编写Servlet控制层

8.注册servlet

9.测试访问,确保以上功能成功!


 

1.编写前端页面

2.设置首页 

<!--  设置欢迎界面  -->
    <welcome-file-list>
        <welcome-file>/login.jsp</welcome-file>
    </welcome-file-list>

3.编写dao层用户登录的接口

  

package com.kuang.dao.user;

import com.kuang.pojo.User;

import java.sql.Connection;
import java.sql.SQLException;

public interface UserDao {
    public User getUser(Connection connection, String userCode) throws SQLException;
}

4.实现dao层接口的实现类

package com.kuang.dao.user;

import com.kuang.dao.BaseDao;
import com.kuang.pojo.User;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserDaoIml implements UserDao{
    @Override
    public User getUser(Connection connection,String userCode) throws SQLException {
        PreparedStatement pstm=null;
        ResultSet rs=null;
        User user = null;
     if (connection!=null){
         String sql="select * from smbms_user where userCode = ?";
         Object[] param={userCode};

         rs = BaseDao.execute(connection, pstm, rs, sql, param);

         if (rs.next()){
             user=new User();
             user.setId(rs.getInt("id"));
             user.setUserCode(rs.getString("userCode"));
             user.setUserName(rs.getString("userPassword"));
             user.setGender(rs.getInt("gender"));
             user.setBirthday(rs.getDate("birthday"));
             user.setPhone(rs.getString("phone"));
             user.setAddress(rs.getString("address"));
             user.setUserRole(rs.getInt("userRole"));
             user.setCreatedBy(rs.getInt("createBy"));
             user.setCreationDate(rs.getDate("creationDate"));
             user.setModifyBy(rs.getInt("modifyBy"));
             user.setModifyDate(rs.getDate("modifyDate"));
         }
         BaseDao.closeResource(null,pstm,rs);

     }
            return user;
    }
}

 

 

5.实现业务层接口

package com.kuang.service.user;

import com.kuang.pojo.User;

public interface UserService {
      //用户登录
    public User login(String userCode,String password);

}

6.实现业务层实现类

package com.kuang.service.user;

import com.kuang.dao.BaseDao;
import com.kuang.dao.user.UserDao;
import com.kuang.dao.user.UserDaoIml;
import com.kuang.pojo.User;
import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;

public class UserServiceIml implements UserService {
    private UserDao userDao;
//业务层都会调用dao层,所以要引入dao层
    public UserServiceIml(){
        userDao=new UserDaoIml();
    }
    @Override
    public User login(String userCode, String password) {
        Connection connection=null;
        User user=null;
        try {
           connection= BaseDao.getConnection();
            //通过业务层调用对应的具体的数据库操作
          user= userDao.getUser(connection,userCode);
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            BaseDao.closeResource(connection,null,null);
        }
        return user;
    }

 
}

7.编写Servlet控制层

package com.kuang.servlet.user;

import com.kuang.pojo.User;
import com.kuang.service.user.UserService;
import com.kuang.service.user.UserServiceIml;
import com.kuang.util.Constants;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //servlet:控制层,调用业务层的代码
        System.out.println("LoginServlet--->start......");
        //获取用户名和密码
        String userCode = req.getParameter("userCode");
        String userPassword = req.getParameter("userPassword");
        //和数据库中的用户名密码对比,调用业务层
        UserService userService = new UserServiceIml();
        User user = userService.login(userCode, userPassword);//这里把登录的人查出来了
        if (user!=null){//查有此人,可以登录
            //将用户的信息放到session中
            req.getSession().setAttribute(Constants.USER_SESSION,user);
            //跳转到主页:重定向
           resp.sendRedirect("jsp/frame.jsp");
        }else {
            //查无此人,无法登录
            req.setAttribute("error","用户名或密码错误");
            req.getRequestDispatcher("login.jsp").forward(req,resp);

        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

8.注册servlet

    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.kuang.servlet.user.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login.do</url-pattern>
    </servlet-mapping>
    

9.测试访问,确保以上功能成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值