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>
登录成功效果:
登录失败效果: