zoukankan      html  css  js  c++  java
  • mvc模式

    mvc模式 :

           1、模型层model。(表示数据和业务处理,对应组件是javaBase)

       2、视图层view。(表示用户看到并与之交互的界面,对应组件是jsp和html)

        3、控制层controller的缩写(用于接收用户输入并调用模型和视图去完成用户的请求,对应组件是servlet)

             使对象间的耦合程度降到最低。

         一 、 java技术中web编程技术的发展:model 1模式和model2模式

            1、  model 1模式(纯jsp模式)

                       缺点:1、代码重用。 2、后期维护和扩展。 3、页面维护。

            2、model 2模式(jsp+servlet+javaBase)

                     model 2 体现了基于mvc的设计模式,简单的说就是将数据的显示、流程控制、业务逻辑处理分离,使之相互独立。javaBase充当模型,jsp充当视图,servlet充当控制器。

         二 设计模式和框架的区别

                  设计模式:设计模式是一套被反复使用的成功的代码设计经验的总结

                  框架:是一种可重用的,半完成的应用程序。

                  区别1、设计模式是设计重用,框架是部分代码重用和部分设计重用。

                        2、设计模式是抽象描述,框架有具体代码的实现。

                       3、设计模式针对各种应用,框架只针对某一特定应用。

          三:mvc模式的优点

          1、各司其职,互不干涉。 2、有利于开发中的分工。3、有利于组件的重用。

        四、mvc模式的不足。 

          1、系统结构和实现较困难。2、视图和控制器过于紧密。3、不使用于小型甚至中等规模的应用程序。

       五。基于mvc模式的框架

                   框架的特性1、可重用 2、半成品 3、应用程序

                  自定义mvc框架

                  一 model设计

                 二 controller设计

                 三 view设计

                     controller设计步骤

                      1、配置servlet访问路径

                           <servlet-mapping>

                                         <serlet-name>ActionServlet</serlet-name>

                                         <url-pattern>*.action</url-pattern>

                          </servlet-mapping>

                        2、编写相关的数据访问层和业务层代码

                       3、controller设计

                             (1)定义action接口

                                   public interface Action{

                 //定义一个返回字符串的方法,表示需要到哪个页面的url字符串

                public String execute(HttpservletRequest request,HttpServletResponse response);

                   }

                               (2)action实现类

                                  public Class LoginAction implements Action{

                public String execute(HttpservletRequest request,HttpServletResponse response){

                request.setCharacterEncoding("utf-8");

                //...servlet实现功能

                                     if(){

                                            request.setAtrribute()

                  return "url";

                    }

                }

               }

                      4、实现controller类(servlet类)

    public class ActionServlet extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            doPost(request, response);
        }
    
        
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
    
            response.setContentType("text/html");
            request.setCharacterEncoding("utf-8");
            //获得Action对象
            Action action=this.getAction(request);
            String resultView=null;
            try {
                resultView=action.execute(request,response);
            } catch (Exception e) {
                // TODO: handle exception
            }
            if(resultView!=null){
                request.getRequestDispatcher(resultView).forward(request, response);
            }
        }
        public Action getAction(HttpServletRequest request){
            //获取请求的url
            String url=request.getRequestURI();
            //获取上下文路径
            String contextPath=request.getContextPath();
            //截取上下文以后的路径
            String actionpath=url.substring(contextPath.length());
            //获取action字符串
            String actionName=actionpath.substring(1, actionpath.lastIndexOf('.')).trim();
            Action action=null;
            //添加新功能时在这里添加
            if(actionName==""){
                action=new LoginAction();
            }
            return action;
        }
    }

                  5、配置web.xml

               

               

  • 相关阅读:
    Git的搭建和使用技巧完整精华版
    Apache配置虚拟主机
    php curl向远程服务器上传文件
    将树形结构的数组按照顺序遍历为二维数组
    编码-截取中文-去除HTML字符
    PHP最原始的上传文件函数
    PHP中获取当前页面的完整URL
    ethereum/EIPs-191 Signed Data Standard
    ethereum/EIPs-607 Hardfork Meta: Spurious Dragon硬分叉相关
    ethereum/EIPs-155 Simple replay attack protection 35,36
  • 原文地址:https://www.cnblogs.com/hjiongjiong/p/4526175.html
Copyright © 2011-2022 走看看