• JSP小例子——以Model1的思想实现用户登录小例子(不涉及DB操作)


    Model1简介
    现在比较流行的就是Model1和Model2,这里介绍Model1。
    在Model1模型出现前,整个Web应用的情况是:几乎全部由JSP页面组成,JSP页面接受处理客户端请求,对请求处理后直接作出响应。
    这样做的弊端就是:在界面层充斥着大量的业务逻辑的代码和数据访问层的代码,Web程序的可扩展性和可维护性非常差。
    JavaBean的出现可以使JSP页面中使用JavaBean封装的数据或者调用JavaBean的业务逻辑代码,这样大大提升了程序的可维护性。
    Model1:

     

    案例:使用JSP+JavaBean完成用户登录功能。
    我们需要建一个名为User的用户类来表示数据库中的每一行的成员。
    User.java:

    package com.moonlit.obj;
    
    public class User {
        private String username;
        private String password;
        public User() {}
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }

    同时我们还需要建一个DAO类(业务逻辑类)来是的JSP层和JavaBean之间能够交互。其中包括了一个判断User账号密码是否正确的方法userLogin()。
    UserDAO.java:

    package com.moonlit.dao;
    
    import com.moonlit.obj.User;
    
    public class UserDAO {
        public boolean  userLogin(User user) {
            return "admin".equals(user.getUsername()) & "admin".equals(user.getPassword());
        }
    }

    我们使用一个login.jsp界面来模拟登陆:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>login page</title>
    </head>
    <body>
    <form name="regForm" action="dologin.jsp" method="post">
    <table>
      <tr>
        <td>用户名:</td>
        <td><input type="text" name="username"></td>
      </tr>
      <tr>
        <td>密码:</td>
        <td><input type="password" name="password"></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" value="提交"></td>
      </tr>
    </table>
    </form>
    </body>
    </html>

    login.jsp主要就是提交了一个包含用户名和密码的表达提交给dologin.jsp,dologin.jsp相对于之前的代码有较大的改动。
    在dologin.jsp中,我们首先需要通过<jsp:useBean>标签实例化一个User类和一个业务逻辑类(UserDAO类)。

    <jsp:useBean id="user" class="com.moonlit.obj.User" scope="page" />
    <jsp:useBean id="userDao" class="com.moonlit.dao.UserDAO" scope="page" />

    接下来,我们就可以通过<jsp:setProperty>标签给User实例赋值了:

    <jsp:setProperty name="user" property="*" />

    然后我们可以通过业务逻辑类的实例的userLogin方法判断用户是否登录成功,如果登陆成功,则请求转发到login_success.jsp页面;如果登陆不成功,则登录到login_failure.jsp页面。

    <%
        if (userDao.userLogin(user)) {
            request.getRequestDispatcher("login_success.jsp").forward(request, response);
        } else {
            response.sendRedirect("login_failure.jsp");
        }
    %>

    完整的dologin.jsp代码如下:

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>do login page</title>
    </head>
    <body>
    <jsp:useBean id="user" class="com.moonlit.obj.User" scope="page" />
    <jsp:useBean id="userDao" class="com.moonlit.dao.UserDAO" scope="page" />
    <jsp:setProperty name="user" property="*" />
    <%
        if (userDao.userLogin(user)) {
            request.getRequestDispatcher("login_success.jsp").forward(request, response);
        } else {
            response.sendRedirect("login_failure.jsp");
        }
    %>
    </body>
    </html>
    dologin.jsp

    登录成功效果:

       

    登录失败效果:

       

  • 相关阅读:
    来自Jakob Jenkov的Jackson教程
    Linux查看某个端口的连接数
    Linux查看某个进程的线程
    Jackson反序列JSON为实体对象出现:no String-argument constructor/factory method to deserialize from String value的问题
    软路由OpenWrt教程收集(插件开发教程,opkg安装软件教程)
    软路由系统收集
    Linux防止“rm -rf /”误删除
    Mac 10.12原生方法对NTFS分区进行读写的配置
    Linux下进行Web服务器压力(并发)测试工具http_load、webbench、ab、Siege、autobench简单使用教程(转)
    微服务实施Spring Boot/Spring Cloud中踩过的坑(转)
  • 原文地址:https://www.cnblogs.com/moonlightpoet/p/5600997.html
Copyright © 2020-2023  润新知