使用三层架构来实现登录

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

 

 在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>

测试过程:

 

 

 

posted on 2020-06-05 21:02  代码吴彦祖  阅读(1489)  评论(0编辑  收藏  举报