MVC设计模式

来源:互联网 发布:win10共享文件夹软件 编辑:程序博客网 时间:2024/04/28 11:11

介绍MVC的设计模式,一定要了解为什么要使用它?如果不知道他给我们解决了哪些便利,人云亦云的使用它,就不能体会这种设计模式带来的便利。

不妨剪去所有的枝桠,看清web应用的本质到底是什么东西.

 

 

不使用Servlet等服务器应用,我们应该如何构建一个web项目呢?即使是一个静态的WEB应用。


这是一个最简单的WEB请求、响应模型,我们使用浏览器(Client)访问网站(Web Server),以程序员的角度你应该如何实现这样一套系统呢?

1、在Client编写代码,与服务器端建立TCP/IP连接(网络通信)。

2、将我们的请求信息编码成二进制流,然后通过管道传输到web ServerIO流)。

3、服务器端处理客户端发来的请求,然后根据请求返回一个响应(也以字节流的形式传输)

4、客户端接受信息

5、关闭连接

如果是多个用户进行访问,那么服务器端需要我们编写更多的代码,如开辟多线程。

 

这是一个没有Servletweb应用,如果我们要实现这些功能,我们只能手动的编写大量的代码(这很考验我们JAVA SE的水平....),虽然Java在网络通信、线程处理方面有很大的优势,

但是编写如此复杂的代码,对于程序员来说还是一个不小的挑战。

 

我们老师说:“第一个穿鞋的人,是觉得咯脚的人”

 

的确,有没有一个简单的方法,是我们更能专注于web应用的逻辑实现,而不是底层通信、管理这些功能呢?于是Servlet就出现了。

 

Servlet的功能:(可以参考我的JSP学习笔记,里面对Servlet有详细的介绍)

1、通信支持,怒用自己建立ServerSocket,创建流等

2、多线程支持,容器会自动的为它接受的每个Servlet请求创建一个新的Java线程

有了Servlet容器,我们就不需要为网络通信、多线程、安全性编写代码。

 

 

可是,web服务器如果只能返回给客户端静态页面,那么我们的服务器真的是大材小用了,web应用通常需要处理复杂的业务逻辑(包括与DB打交道),这些工作都将在servletdoXxx这些方法中实现。

下面是一个简单的Servlet

Public class ControlServlet extends HttpServlet{

Public void doPost(request,response){

//业务逻辑

out.println(“<html>”);

....

}

}

可以看到业务逻辑以及输出响应都集中在一个方法中,可以想象,一旦业务逻辑变得复杂,那么我们的编码工作同样很多,于是,我们想出一个办法,将Servlet中的业务逻辑抽取到一个Java类中,这个类就是我们长提的JavaBean

 

第一种架构设计:JavaBean+Servlet


这样来看,似乎减少了不少工作,但是,自己看刚才的那个Servlet,输出到客户端的HTML代码,为什么都要加上一个out.println()这样一个壳子,如果能去掉,那该多好啊?!

别低估了out.println(),一旦我们的html代码非常多,而且属性值也非常多的时候,你就会感觉到out.println是有多么麻烦了。这个时候JSP就横空出世了。

 

HTML页面中嵌入JAVA代码,既可以帮助我们调用Javabean,还省去了打印HTML语句的烦恼。JSP的本质还是Servlet

 

第二种架构模式:JavaBean+Jsp


这种架构模式在小型系统中很实用。

不过写过这种系统的人都知道,我们的很多逻辑都写在HTML页面中,两种语言混杂在一起,一是不好日后维护,二是需要创建非常多的JSP页面,三是代码的重复性很大。

我们可以让JSP专注于显示,Servelet专注于页面跳转,JavaBean专注于业务逻辑。这样三者各司其责不是更好吗?


第三种架构模式:MVC



0 0
原创粉丝点击