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

登录成功效果:

   

登录失败效果:

   

posted @ 2016-06-20 16:42  月光诗人  阅读(775)  评论(0编辑  收藏  举报