MVC设计模式思想及简单实现
⼀、什么是MVC
  MVC即Model-View-Controller(模型-视图-控制器)是⼀种软件设计模式,最早出现在Smalltalk语⾔中,后被Sun公司推荐为Java EE平台的设计模式。
  MVC把应⽤程序分成了上⾯3个核⼼模块,这3个模块⼜可被称为业务层-视图层-控制层。顾名思义,它们三者在应⽤程序中的主要作⽤如下:
  业务层:负责实现应⽤程序的业务逻辑,封装有各种对数据的处理⽅法。它不关⼼它会如何被视图层显⽰或被控制器调⽤,它只接受数据并处理,然后返回⼀个结果。
  视图层:负责应⽤程序对⽤户的显⽰,它从⽤户那⾥获取输⼊数据并通过控制层传给业务层处理,然后再通过控制层获取业务层返回的结果并显⽰给⽤户。
  控制层:负责控制应⽤程序的流程,它接收从视图层传过来的数据,然后选择业务层中的某个业务来处理,接收业务层返回的结果并选择视图层中的某个视图来显⽰结果。  可以⽤下图来表⽰MVC模式中三者之间的关系:
  MVC是⼀种设计思想,它并没有统⼀的标准,其中⼀种MVC思想的典型实现为JavaBean(模式)+jsp(视图)+servlet(控制器),⽽我喜欢将JavaBean中的业务逻辑再单独列出来,形成service(模式)+JavaBean(数据集)+jsp(视图)+servlet(控制器)的结构,下⾯我们来实现它。
⼆、MVC实现
  在这⾥,我将应⽤MVC设计模式,实现⽤户在前台中输⼊⼀段⽂字,后台获取并拼接上字符串“——ysy”,再送回前台显⽰的⼀个简单的应⽤程序。具体效果如图:
1、视图层
1 <%@ page language="java" contentType="text/html; charset=utf-8"
2    pageEncoding="utf-8"%>
3<!DOCTYPE html>
4<html>
5<head>
6<meta charset="utf-8">
mvc的controller7<title>test</title>
8</head>
9<body>
10<form action="./test.do" method="post">
11输⼊你想说的话~
12<input type="text" name="input"/>
13<input type="submit" value="提交"/>
14<br/>
15        <%
16String s = (Attribute("outPut");    <!--从request域中获取结果-->
17if(s != null){                          <!--如果有结果,显⽰结果-->
18        %>
19            <%=s %>
20        <%
21        }
22        %>
23</form>
24</body>
25</html>
2、控制层
  servlet的编写:
1package servlet;
2
3import java.io.IOException;
4import javax.servlet.ServletException;
5import javax.servlet.annotation.WebServlet;
6import javax.servlet.http.HttpServlet;
7import javax.servlet.http.HttpServletRequest;
8import javax.servlet.http.HttpServletResponse;
9
10import bean.TestBean;
11import service.TestService;
12
13 @WebServlet("/test.do")                                    //通过注释配置servlet
14public class TestServlet extends HttpServlet {
15private static final long serialVersionUID = 1L;
16
17public TestServlet() {
18super();
19    }
20
21protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
22        doPost(request, response);
23    }
24
25protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
26
27        request.setCharacterEncoding("utf-8");                      //设置字符集,防⽌中⽂乱码
28
29        TestBean testBean = new TestBean();                        //获取数据集对象
30        TestService testService = new TestService();                  //获取业务层对象
31
32        String s =Parameter("input");                   //获取视图层提交的数据
33
34        testBean.setInput(s);                                //将数据存⼊数据集中
35        s = testService.change(testBean);                        //调⽤业务层,传⼊数据,接收返回结果
36        request.setAttribute("outPut", s);                       //将结果存⼊request域中
37        RequestDispatcher("test.jsp").forward(request, response);    //跳转到视图层
38    }
39
40 }
  如果不想使⽤注释来配置servlet,还可以通过l进⾏配置:
1<?xml version="1.0" encoding="UTF-8"?>
2<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" v  3  <display-name>Java_Web</display-name>
4  <welcome-file-list>
5    <welcome-file>index.html</welcome-file>
6    <welcome-file>index.htm</welcome-file>
7    <welcome-file>index.jsp</welcome-file>
8    <welcome-file>default.html</welcome-file>
9    <welcome-file>default.htm</welcome-file>
10    <welcome-file>default.jsp</welcome-file>
11  </welcome-file-list>
12
13  <servlet>                                           //通过配置⽂件配置servlet
14    <servlet-name>test</servlet-name>
15    <servlet-class>servlet.TestServlet</servlet-class>
16  </servlet>
17  <servlet-mapping>
18    <servlet-name>test</servlet-name>
19    <url-pattern>/test.do</url-pattern>
20  </servlet-mapping>
21
22</web-app>
3、数据集
1package bean;
2
3public class TestBean {
4private String input;
5
6public String getInput() {
7return input;
8    }
9
10public void setInput(String input) {
11this.input = input;
12    }
13
14 }
4、业务层
1package service;
2
3import bean.TestBean;
4
5public class TestService {
6public String change(TestBean testBean) {
7
8        String s = Input();       //从数据集中获取数据
9
10if(s != null && s != "") {          //如果有数据,则拼接字符串
11            s += "——ysy";
12        }
13return s;
14    }
15 }
三、MVC框架模式的优势
  1、有利于代码的复⽤
  2、有利于开发⼈员分⼯
  3、有利于降低程序模块间的耦合,便于程序的维护与扩展。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。