新手学JAVA(九)----Model1 And Model2

简介: <div class="markdown_views"><p></p><div class="toc"><div class="toc"><ul><li><a href="#javaweb%E5%BA%94%E7%94%A8%E7%BB%93%E6%9E%84%E5%8F%91%E5%B1%95%E4%B8%89%E4%B8%AA%E9%98%B6%E6%AE%B5

JavaWeb应用结构发展三个阶段


    Java Web应用结构的发展和MVC的发展非常类似,Java Web编程的发展则经历了三个阶段,下面就来说说有哪三个阶段。

第一个阶段—-传统版

    和MVC的发展一样,一开始所有的业务逻辑处理,数据处理等都放到了JSP中,Jsp是独立的,自主完成所有的任务。

这里写图片描述

    这样的话所有的操作都放到了JSP中,JSP的耦合性太高,这样就带来一系列的问题:

HTML代码和Java程序强耦合在一起

内嵌的流程控制逻辑

调试困难

可维护性差,当页面很大的时候,修改里面的内容的时候需要查找整个页面

可读性差,整个页面显得非常混乱

为了解决上面的的问题,SUN公司先后制定了两种设计模式。

第二个阶段—-Model1

    Model1在传统版的基础上做了一定的分离,JSP页面接受处理客户端请求,对请求处理后直接作出响应,用少量的JavaBean来处理数据库连接、数据库访问等操作,基本的流程如下:

这里写图片描述
Model1模式的实现比较简单,适用于快速开发小规模项目,有优点就有缺点,JSP Model1相当于把View和Controller放到了JSP中,如果开发大型的JAVA WEB项目的话,你想想这一个JSP界面上会有多少显示代码和多少逻辑处理代码,这样不便于开发人员的维护,也不便于美工的修改!看一个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;
    }
}

第三个阶段—-Model2

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

这里写图片描述

    JSP Model2更适合开发大型的JAVA WEB项目,小型的WEB项目,后期的更新和维护工作不是铁别大的话可以用Model1模式进行开发,Model2增加了前期开发的成本,但是Model2有更好的扩展性和可维护性!

    举个小Demo:

    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>
相关文章
|
6月前
|
JavaScript Java 测试技术
基于Java的图书管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的图书管理系统的设计与实现(源码+lw+部署文档+讲解等)
183 1
|
6月前
|
JavaScript Java 测试技术
基于Java的小工程预算的设计与实现(源码+lw+部署文档+讲解等)
基于Java的小工程预算的设计与实现(源码+lw+部署文档+讲解等)
49 0
|
6月前
|
JavaScript Java 测试技术
基于Java的医疗系统实现的设计与实现(源码+lw+部署文档+讲解等)
基于Java的医疗系统实现的设计与实现(源码+lw+部署文档+讲解等)
68 3
|
6月前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
57 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
6月前
|
JavaScript Java 测试技术
基于Java的兰亭序图书管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的兰亭序图书管理系统的设计与实现(源码+lw+部署文档+讲解等)
39 0
|
6月前
|
JavaScript Java 测试技术
基于Java的网上食品店的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网上食品店的设计与实现(源码+lw+部署文档+讲解等)
39 0
|
6月前
|
JavaScript Java 测试技术
基于Java的儿童教育网站的设计与实现(源码+lw+部署文档+讲解等)
基于Java的儿童教育网站的设计与实现(源码+lw+部署文档+讲解等)
56 0
|
6月前
|
JavaScript Java 测试技术
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的中文学习系统的设计与实现(源码+lw+部署文档+讲解等)
45 0
|
6月前
|
JavaScript Java 测试技术
基于Java的文学网的设计与实现(源码+lw+部署文档+讲解等)
基于Java的文学网的设计与实现(源码+lw+部署文档+讲解等)
43 0
|
6月前
|
JavaScript Java 测试技术
基于Java的数字家庭网站的设计与实现(源码+lw+部署文档+讲解等)
基于Java的数字家庭网站的设计与实现(源码+lw+部署文档+讲解等)
36 0
下一篇
无影云桌面