标签:j2ee
上一篇博客对model1和model2进行了对比总结,这篇博客对model2的思想“实例化”一下,介绍一个model2的登陆实例。
实例很简单:用户在index.jsp页面输入用户名和密码,提交到servelt,servlet调用manager的方法,manager进行逻辑判断,判断后servlet会将页面转到show.jsp页面,show.jsp会反馈用户登录的情况。
index.jsp
在这个页面中有用户名和密码的文本框,已经提交页面的submit按钮。当点击submit按钮整个form会直接提交。
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> </head> <form name="userForm" target="_self" id="userForm" action="servlet/loginServlet"> <body> 用户名:<input name="userName" type="text" id="userName" size="20" maxlength="20" value=""><br> 密码:<input name="passWord" type="text" id="passWord" size="20" maxlength="20" value=""><br> <input name="btnAdd" type="submit" id="btnLogin" value="登陆"> </body> </form> </html>
show.jsp
用来反馈用户登录后的信息,这里用到了JSTL,直接显示信息。
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!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=GB18030"> <title>Insert title here</title> </head> <body> ${showInfo } </body> </html>
获取表单数据,调用后台的业务逻辑,并进行页面的跳转。
public class loginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取前台发过来的用户名和用户密码 String userName=request.getParameter("userName"); String passWord=request.getParameter("passWord"); //构造user对象,并赋值 User user=new User(); user.setUserName(userName); user.setPassWord(passWord); //查询用户是否存在 UserManager userManager=new UserManager(); String showInfo=userManager.QueryUser(user); //将显示信息放入到rqeust中 request.setAttribute("showInfo", showInfo); //页面重定向到show.jsp request.getRequestDispatcher("/show.jsp").forward(request, response); } }
manager存储数据以及业务逻辑判断,在这里写了一个假数据,并与登陆的用户名和密码进行业务逻辑的判断。
public class UserManager { public String QueryUser(User user){ User userDB=new User(); userDB.setUserName("admin"); userDB.setPassWord("admin"); if (user.getUserName().equals(userDB.getUserName()) && user.getPassWord().equals(userDB.getPassWord())) { return "欢迎【"+userDB.getUserName()+"】登陆系统"; } return "用户不存在"; } }
登录实例的时序图
通过和上一篇博客中model2的时序图比较不难发现,这个登录的实例的时序图可以和model2的时序图的lifeline一一对应起来。而每一层职责单一的思想也表现了出来,jsp用来显示;servlet用来转页面;manger相当于model,用来进行业务逻辑。
标签:j2ee
原文地址:http://blog.csdn.net/suneqing/article/details/46277313