MVC简单介绍
Java Web应用的结构一个经历了两种开发模式,分别为Model1和Model2。Model1由大量的JSP页面以及少量的JavaBean组成,页面和Java代码结合在一起无论是开发、扩展还是维护都有极大的不便,所以基于MVC开发模式的Model2应运而生。
MVC是一种开发模式,它可以将我们的代码解耦,让视图代码,和我们的逻辑代码分开编写,为我们后期的维护带来了极大的便利。MVC将我们的项目结构分为三个部分视图层(View)、控制层(Controller)、模型层(Model),View专职于视图的显示,也就是我们在一个应用的可以看到的页面,Model专职于和数据库的增删改查的操作,Controller负责把View和Controller连接起来,是两者之间的一个桥梁。
下图展示了MVC开发模式是如何工作的:
mvc简图
我们在页面(View)上生成的请求(点击一个超链接生成一个location或者是图片的src请求)会由控制器(Controller)进行处理,控制器(Controller)根据用户的请求作出相应的操作,如果需要数据的交互则调用模型层(Model)的方法来完成数据的交互,模型层(Model)主要处理数据的增删该查的操作。这样一套流程跑通之后就完成了我们的一次请求和响应。
假如我们现在有一个用户注册的功能来实现。
View层如下:
<form method="post" action="demo!register.action"> 用户名<input type="text" name="username"><br/> 密 码<input type="text" name="password"><br/> 邮 箱<input type="text" name="email"><br/> <input type="submit" value="注册"> </form>
Controller层如下:
private String username; private String password; private String email; public String register() throws Exception{ HandlerService service = new HandlerService(); if(service.HandlerRegister(username, password, email)){ return "success"; }else{ return "fail"; } }
Model层如下:
public boolean HandlerRegister(String username,String password,String email){ try { /* * 这里执行数据库的操作 * */ System.out.println(username); System.out.println(password); System.out.println(email); return true; } catch (Exception e) { return false; } }
现在我们把焦点放在处理流程上,上面代码的具体实现请忽略。
首先我们在页面上产生一个请求:demo!register.action
这个请求会由控制器(Controller)来进行处理:获取用户输入的信息,然后作为实参传给模型层方法由模型层来完成对用户输入数据的操作,然后将结果反馈给用户
模型层主要实现数据处理的逻辑,我们可以把模型层方法看做我们平时封装的方法,预留出参数,然后这个方法由控制器(Controller)来调用
(上面的请求demo!register.action和控制器返回的"success"、"fail"显示的页面都是由struts2来控制的)