码迷,mamicode.com
首页 > 其他好文 > 详细

用户登录——三层架构

时间:2019-10-15 22:50:39      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:封装数据   c3p0   res   --   cat   sele   Servle   ice   glib   

1、MVC开发模式(web开发模式):

M:model-------javabean(封装数据)

V:view----------jsp(显示数据)

C:controller----servlet(获取数据)

2、javaee的三层架构(javaee开发):

web层:与客户端交互

service层:复杂的业务处理

dao层:与数据库交互

3、工程结构:

技术图片

 

 4、三层架构:

web层:

protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
    HttpSession httpSession=request.getSession();
    String username=request.getParameter("username");//从表单获取数据,并作为形式参数传递到login函数中
    String password=request.getParameter("password");
    UserService userService=new UserService();
    User user=userService.login(username,password);//从service层获取user信息,该信息是从数据库中查询的
    if(user!=null){
    httpSession.setAttribute("user",user);//失败的话,重定向到首页
    response.sendRedirect(request.getContextPath()+"/main.jsp");
    response.getWriter().write("ni hao");
    }else{
    request.setAttribute("logerrorinf","用户名或密码错误") ;
    request.getRequestDispatcher("/index.jsp").forward(request,response);
}

创建Servlet从表单获取用户信息,并将此信息作为参数传递到service层。

service层:

public class UserService {
    public User login(String username, String password) {//返回dao层的user信息
       UserDao userDao=new UserDao();
       return userDao.login(username,password);
    }
}

将参数传递到dao层,并将冲数据库中查询的值返回给web层。便于web层对是否登录成功进行校验。

dao层:

public class UserDao {
    public User login(String username, String password) {//返回查找到的符合条件的用户
        Connection con=null;
        User user= null;
        try {
            con= C3p0Utils.getConnection();
            QueryRunner qr = new QueryRunner();
            String sql = "Select * from login where account=? and password=?";
            Object[] select = {username,password};
            return qr.query(con, sql, new BeanHandler<User>((User.class)), select);
        }
        catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

查询是否有符合条件的用户,将结构封装到Javabean中,并返回查询结果。

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <meta charset="UTF-8">
  <title>login</title>
</head>
<body bgcolor="aqua">
<center>
  <h3>登录</h3>
  <form action="/Login_MVC_war_exploded/loginservlet" method="post">
    &nbsp;用户名:<input type="text" name="username" size="12"><br>&nbsp;&nbsp;码 :<input type="password" name="password" size="12" ><br><br>
    <input type="reset" value="取消">
    <input type="submit" value="登录">
  </form>
  <h5 style="color:red">${requestScope.logerrorinf}</h5> <!--运用EL获取值-->
</center>
</body>
</html>

该jsp页面主要实现登录功能,为Servlet提供用户数据,并运用EL从request域中获取值。

main.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>main</title>
</head>
<body>
<c:if test="${empty user}">
    <li><a href="index.jsp"></a></li>
</c:if>
<c:if test="${!empty user}">
    你好,${sessionScope.user.getAccount()}
</c:if>
</body>
</html>

该jsp实现了登录成功后的显示功能,并从session域中获得用户的账户名称。

5、效果:

初始界面:

技术图片

 

 登录失败界面:

技术图片

 

 登录成功界面:

技术图片

 

用户登录——三层架构

标签:封装数据   c3p0   res   --   cat   sele   Servle   ice   glib   

原文地址:https://www.cnblogs.com/zhai1997/p/11681589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!