MVC模式-展示层
展示层简介
展示层的作用是与用户交互信息. 向用户展示信息, 接收用户的输入.
对于系统之间的集成, 展示层的作用是与其他系统的交互接口. 因此有时展示层也称为业务接入层, 负责与其他系统的对接业务.
对于人类社会, 企业对外交流的(前台)窗口相当于展示层. 例如, 银行的营业网点(展示层), 负责接待客户. 真正对账户余额做变更的是银行的后台系统.
MVC模式
展示层常用的模式是MVC(Model-View-Controller). 由模型(Model), 视图(View), 控制器(Controller)构成.
- 模型代表业务领域对象.
- 视图代表向用户的展示信息 - 模型的信息.
- 控制器接收用户的输入, 协调模型和视图的变化. - 转告模型, 模型根据输入发生变化.
MVC的执行过程为:
- 视图向用户展示信息. 例如: 请输入存款数量.
- 控制器接收用户的输入. 例如: 用户输入200.
- 控制器把用户输入转告给模型. 例如: 把200给账户.
- 模型根据输入转变状态. 例如: 账户余额增加200.
- 控制器选择展现给用户的视图. 例如: 负责显示账户余额的视图.
- 同时告知视图, 模型状态已经发生变化.
- 视图向用户展示模型的信息. 例如: 账户余额5200.
展示层的构成
采用服务器动态生成网页技术时, 展示层包括:
-
浏览器中的网页
-
服务器中生成网页的程序
展示层关键技术
浏览器传递一个参数给服务器
HTML text 传递一个参数给服务器, URL与当前页面相同路径, 资源名为login. 向服务器传递的参数的名称是user_name
, 参数的值是用户输入的.
<form action="login" method="post">
<input type="text" name="user_name" required>
<input type="submit" value="提交">
</form>
服务器接收数据
Servlet应用服务器执行Servlet, 其中接收浏览器传来的参数user_name
的代码如下:
String username = request.getParameter("user_name");
服务器进行业务处理
服务器进行业务处理, 更新模型的状态. 通常是标准的Java程序, 不含有HTTP/HTML相关的技术. 本示例中什么都没处理.
服务器返回新视图
服务器经过复杂的业务处理, 更新模型的状态后, 把模型的新状态, 这里假设是在"Hello" + username
, 传递给视图, 例如jsp文件/WEB-INF/view/hello.jsp.
request.setAttribute("message", "Hello" + username);
request.getRequestDispatcher("/WEB-INF/view/hello.jsp").forward(request, response);
向用户展示结果的新视图/WEB-INF/view/hello.jsp内容如下
<% //java代码写在这里, 读取request传递来的参数
String message = request.getAttribute("message");
%>
<h1><%=message%>/h1>
附加知识点: 浏览器向服务器传递数组
浏览器传递多个参数给服务器
HTML Checkbox传递多个参数数据. 向服务器传递的参数的名称是subject
, 参数的值是用户输入的.
<input type="checkbox" name="subject" value="subject1" />subject1
<input type="checkbox" name="subject"