ITKeyword,专注技术干货聚合推荐

注册 | 登录

【菜鸟学Java】15:JSP技术中的Model1和Model2开发模式

u010929604 分享于 2016-03-03

推荐:走进Java(四)JSP的Model1和Model2

  Model在计算机程序中有2个概念:一个是三层架构中的实体类,另一个是MVC架构中的模型。然而我今天的主题Model1和Model2其实都是从MVC模型来讲的。Model1其实

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

        JavaWeb应用的结构经历了Model1和Model2两个时代,从Model1发展到Model2既是技术发展的必然,也是无数程序员的心血结晶。

        Model1的原理及代码示例

        在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作。其流程图如下所示

        Model1模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,它的局限性非常明显:JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护性的难度。我们来看一个用Model1模式编写的登录Demo:

JSP页面代码

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
  <%@ page import="com.ljw.user.bean.*" %>
  <%
  	User user=new User();
  user.setUsername(request.getParameter("username"));
  user.setPassword(request.getParameter("password"));
  UserBean userBean=new UserBean();
  boolean result=userBean.login(user);
  if(result==true){
	  response.sendRedirect(request.getContextPath() + "/login_success.jsp");
  }else{
	  out.println("登录失败,请检查登录信息是否正确!");
  }
  %>
<!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>登录</title>
</head>
<body>
	<form action="login.jsp" method="post">
		用户名:<input type="text" name="username"><br>
		密    码:<input type="text" name="password"><br>
		<input type="submit" value="登录">
	</form>
</body>
</html>

         UserBean代码

public class UserBean {

	public boolean login(User user){
		if("admin".equals(user.getUsername())&&"admin".equals(user.getPassword())){
			return true;
		}
		return false;
	}
}

        早期由大量JSP页面所开发出来的Web应用,大都采用了Model1架构。实际上,早期绝大部分ASP应用也属于这种Model1的架构。

推荐:浅析JSP Model1与Model2区别

    在学习DRP时遇到了JSP model1 和model2,这是JSP实现应用程序技术的两种方式。这两种架构模式在我们运用Java开发中也经常遇到,那么他们两者有什么区别呢?

        Model2的原理及代码示例

        Model2已经是基于MVC架构的设计模式。在Model2架构中,Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制器逻辑和简单的前端处理;然后,调用后端JavaBean来完成实际的逻辑处理;最后,转发到相应的JSP页面处理显示逻辑。其具体的实现方式如下图所示:

        从上图中我们可以看到,Model2模式下的JSP不再承担控制器的责任,它仅仅是表现层的角色,仅仅用于将结果呈献给用户,JSP页面的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。在Model2模式下,模型(Model)由JavaBean充当,视图(View)由JSP页面充当,而控制器(Controller)则由Servlet充当。下面我们将上面的例子改成Model2模式的结构,增加了一个Servlet和配置文件web.xml,其他的不变。

        LoginServlet代码

public class LoginServlet extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		  User user=new User();
		  user.setUsername(req.getParameter("username"));
		  user.setPassword(req.getParameter("password"));
		  UserBean userBean=new UserBean();
		  boolean result=userBean.login(user);
		  if(result==true){
			  resp.sendRedirect(req.getContextPath() + "/login_success.jsp");
		  }else{
			  resp.sendRedirect(req.getContextPath()+"/login_error.jsp");
		  }
	}

}
        配置文件web.xml

<?xml version="1.0" encoding="UTF-8"?>  
  
<web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  version="3.0"  
  metadata-complete="true">  
  
    <servlet>  
        <servlet-name>LoginServlet</servlet-name>  
        <servlet-class>com.ljw.user.servlet.LoginServlet</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>LoginServlet</servlet-name>  
        <url-pattern>/loginServlet</url-pattern>  
    </servlet-mapping>  
</web-app>

        由于引入了MVC模式,使得Model2具有了组件化的特点,更加适合大规模应用的开发,但也增加了应用开发的复杂程度。原本需要一个简单的JSP页面就能实现的应用,在Model2中被分解成多个协同工作的部分,需要更多时间才能真正掌握其设计思路和实现的过程。

        小结一下:

        对于非常小型的Web站点,如果后期的更新,维护工作不是特别大,可以使用Model1的模式进行开发,而不是使用Model2去做,因为虽然Model2提供了更好的可扩展性和可维护性,但是增加了前期开发的成本。从某种程度上来讲,Model2为了降低系统后期的维护的复杂度,却导致前期开发的更高复杂度。

推荐:【java web】--JSP model1和model2的联系和区别

JSP Model1和Model2是两种JSP技术建立应用程序的方式。 下面是Model1的体系结构图: 1.首先web浏览器对JSP页面发出Request请求,取得页面参数。 2.通过JavaBean

        JavaWeb应用的结构经历了Model1和Model2两个时代,从Model1发展到Model2既是技术发展的必然,也是无数程序员的心血结晶。         Model1的原理及代码示例         在Model1模式下,整

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。