栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MVC基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MVC基础

一、简介

        MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,其核心是业务逻辑和表示要清晰的分离。

        在web应用中,模型 - 视图 - 控制器(MVC)就是把业务逻辑从servlet中抽取出来,放到一个模型中(模型即可重用的普通Java类),模型是业务数据(如购物车状态等)和处理该数据的方法的组合。

二、简单示例 2.1 Model

        在MVC中,模型(Model)是指应用的后台,主要是业务功能的编写。大多数情况下,其是普通的Java代码,根本不知道自己会被Servlet调用,不能把模型限制为只能由web应用使用,对他来说,被谁调用,没什么区别。

        模型可能会非常复杂,涉及到业务逻辑即数据库操作等。如下是一个简单的Model。其只实现了一个简单的功能,根据不同的颜色,提供可供选择的产品。

public class BeerExpert {
    public List getBrands(String color){
        List brands = new ArrayList();
        if(color.equals("amber")){
            brands.add("Jack Amber");
            brands.add("Red Moose");
        }else{
            brands.add("Jail pale ale");
            brands.add("Gout Stout");
        }
        return brands;
    }
}
2.2 View

        首先,编写一个简单的页面,该页面用于选择啤酒的特性,并将选择结果提交给服务器。




    
    Beer Selection Page


Beer Selection Page
Select beer characteristics Color:

        在有了一个啤酒特性选择页面之后,再编写一个JSP页面,如下所示,该页面根据客户提交的啤酒特性,给出一些建议。

<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    Beer Recommondations JSP
    

<% List styles = (List) request.getAttribute("styles"); //从Servlet获取到专家的回答 Iterator it = styles.iterator(); while(it.hasNext()){ out.print("
try"+it.next()); } %>

Email: <% String email = (String)request.getAttribute("adminEmail"); out.print(email); %>
MainEmail:- <% //String mainEmail = %>

 2.3 Controller

        控制器由servlet担任,其主要用于接受用户的请求并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

public class BeerSelect extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        String color = request.getParameter("color"); //从客户的Post请求中获取到参数
        BeerExpert be = new BeerExpert();  //获取到模型
        List result = be.getBrands(color);
        
        String adEmail = getServletConfig().getInitParameter("adminEmail");
        //将模型(专家)返回的结果附加到请求中,
        request.setAttribute("styles",result);
        request.setAttribute("adminEmail",adEmail);
        //利用RequestDispatcher对象,将请求转发给另外一个Servlet或JSP页面
        RequestDispatcher view = request.getRequestDispatcher("result.jsp"); //为JSP实例化一个请求分派器

        //使用请求分派器,要求容器准备好JSP,并向JSP发送请求和响应
        view.forward(request,response);
    }
}
三、结束

        MVC的思想非常重要,从上面简单的例子中,我们可以体会到,业务逻辑和显示层完全解耦,Model根本就不知道JSP的存在,这两者由Controller协调。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号