MVC构架(3)
来源:百度文库 编辑:神马文学网 时间:2024/04/28 22:21:41
JSP设计模式JSP设计模式包括两个:JSP+JavaBean设计模式和MVC设计模式。模式1:JSP+JavaBean模式在JSP+JavaBean模式中JSP页面肚子响应请求并处理结果返回客户,所有的数据库操作通过JavaBean来实现。大量地使用这种模式,常会导致在JSP页面中嵌入大量的Java代码,当需要处理的商业逻辑非常复杂时,这种情况变得很糟糕。大量的Java代码使得JSP页面变得非常臃肿。前端页面设计人员稍有不慎,就有可能破坏关系到商业逻辑的代码。这种情况在大型项目中经常出现,造成了代码开发和维护的困难,同时会导致项目管理的困难。因此这种模式只适用于中小规模的项目。模式2:MVC模式MVC模式即"Model-View-Controller"模式。在这种模式中,通过JSP技术来表现页面,通过Servlet技术来完成大量的商务处理工作,实现了用户的商业逻辑。这种模式中,Servlet用来处理请求的商务,充当了控制器的角色,负责响应客户对业务逻辑的请求,并根据用户的请求行为决定将哪个JSP页面发送给客户。JSP页面处于表现层,也就是视图的角色。JavaBean则负责数据的处理,也就是模式的角色。这种模式在开发大型项目时表现出的优势尤其突出。具有更为清晰的逻辑划分,能够有效的区分不同的开发者,避免彼此间的互相影响,充分发挥每个人的特长。 MVC在JSP中的实现模型目前,MVC在JSP中有两种实现模型:基于Bean的MVC模型和基于Struts的MVC模型。基于Bean的模型Bean可以利用JavaBean实现,也可以利用EJB实现,分别构成的系统是JavaBean(M)+JSP(V)+Servlet(C)或EJB(M)+JSP(V)+Servlet(C) MVC模型案例用户首先请求页面login.html,login.html会要求用户输入用户名和密码。输入的用户名和密码会POST到validate.jsp,validate.jsp使用“bean:mypackage.validate”来验证用户名和密码是否正确。如果验证没有通过,则显示error.jsp页面,显示错误信息。如果验证通过,则转到“servlet:mypackage.forky” mypackage.forky根据用户名转到不同的页面。如果用户名为teacher否则转到student.jsp文件。 验证录入表单login.html程序名称:login.html 当用户输入验证信息,提交的时候,调用同一目录下的validate.jsp文件处理相应的信息。程序名称:validate.jsp<%! boolean isnotlogin = false;%><% String username = request.getParameter("username"); String password = request.getParameter("password"); if(username==null || password==null) { response.sendRedirect("error.jsp?errmsg=非法进入该页"); return; }%> <% isnotlogin = validatebean.uservalidate(); if(!isnotlogin) { response.sendRedirect("error.jsp?errmsg=用户名口令错误!"); return; } else { session.setAttribute("username",username);%> <% }%>程序首先判断输入是否为空,然后将信息传递给JavaBean程序validate进行处理,根据处理的结构,如果用户信息正确;转到Servlet程序forky处理。JavaBean程序validate。程序名称:validate.javapackage mypackage;public class validate{ final String user1="teacher"; final String password1="teacher"; final String user2="student" final String password1="student"; private String username=""; private String pwd = ""; public void setUsername(String username) { this.username = username; } public String getUsername() { return this.username; } public void setPwd(Stirng pwd) { this.pwd = pwd; } public String getPwd() { return this.pwd; } public boolean uservalidate() { boolean temp = false; if(username.equals(user1)&&pwd.equals(password1)) { temp = true; } else if(username.equals(user2)&&pwd.equals(password2)) { temp = true; } else { temp = false } return temp; }} 在JavaBean程序中,利用方法uservalidate处理传递的用户信息,如果正确,返回true,反之,返回flase:程序名称:package mypackageimport javax.servlet.*;import javax.servlet.http.*;public class forky extends HttpServlet{ protected void doPost(HttpServletRequest request,HttpServletResponse response response)
throws ServletException,IOException { HttpSession session = request.getSession(false); if(session==null)
{ response.sendRedirect("error.jsp?errmsg=会话已经过期了!"); return; } String username1 = (String)sessin.getAttribute("username"); String username2 = request.getParameter("username"); /*如果session没有过期,usernaem1的值和username2的应该是相等的*/ if(!username1.equals(username2)) { response.sendRedirect("error.jsp?errormsg=会话已经过期!"); return; } response.setContentType("text/html;charset=GBK"); PrintWriter out = response.getWriter(); request.setAttribute("username",username2); if(username2.equals("teacher")) { getServletConfig().getServletContext().setRequestDispatcher("/techer.jsp").forward(request,response); } else { getServletConfig().getServletContext().getRequestDispatcher("/student.jsp").forward(request,response); } } }Servlet的功能是控制。程序中,如果用户名是老师,则将当前页面转移到teacher.jsp页面上,如果用户名是学生如果用户名是学生,则将当前页面转移到student.jsp页面上。配置Servlett的运行路径。程序名称:web.xml hello4 mypackage hello4 /forky 配置程序,通过HTTP方式访问程序。单击提交按钮,如果用户和密码都是teacher,则验证信息正确,转到teacher页面。
throws ServletException,IOException { HttpSession session = request.getSession(false); if(session==null)
{ response.sendRedirect("error.jsp?errmsg=会话已经过期了!"); return; } String username1 = (String)sessin.getAttribute("username"); String username2 = request.getParameter("username"); /*如果session没有过期,usernaem1的值和username2的应该是相等的*/ if(!username1.equals(username2)) { response.sendRedirect("error.jsp?errormsg=会话已经过期!"); return; } response.setContentType("text/html;charset=GBK"); PrintWriter out = response.getWriter(); request.setAttribute("username",username2); if(username2.equals("teacher")) { getServletConfig().getServletContext().setRequestDispatcher("/techer.jsp").forward(request,response); } else { getServletConfig().getServletContext().getRequestDispatcher("/student.jsp").forward(request,response); } } }Servlet的功能是控制。程序中,如果用户名是老师,则将当前页面转移到teacher.jsp页面上,如果用户名是学生如果用户名是学生,则将当前页面转移到student.jsp页面上。配置Servlett的运行路径。程序名称:web.xml