`
zh_harry
  • 浏览: 102464 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
877aca81-daac-33c8-8bf9-3a886cebc6c3
自己动手写java 框架
浏览量:28412
社区版块
存档分类
最新评论

疯子在思考之从零说MVC

    博客分类:
  • JAVA
阅读更多
这篇主要讲web开发基础,MVC概念的原型会从这里体现。
首先提一个问题main方法在哪?
我们学的第一种语言,写hello world时都会写main方法(除脚本语言外),那么我们想一下,我们写web程序时main在哪?
我们以b/s结构为例,很容易想到main其实有两个,一个在服务器端一个在客户端。那么服务器和客户端的通信走的是socket。通信的内容要有协议,即我们熟悉的http,http请求两个最核心的对象是request和response。那么我们再简单回忆一下web程序的hello world 过程.
request 发现请求服务器端接收处理后通过response返回给客户端.这是web程序的基本概念.
下面是httpwatch截图我们可以简单地了解http协议





到这里我们很容易想到java的servlet。
学java web开发的还都会了解servlet,那么第二个问题?
java是OOP语言,我们知道OOP的对象都是需要new出来才能引用的(或者反射)那么new在哪呢?
我们不难想到new的过程肯定是服务器端?而且是通过反射机制来生成对象,那么每次请求都要new吗?
答案是否定的,大家都知道servlet是单例多线程而且是线程安全的。这里需要注意一点servlet是不能有成员变量的,注意是成员“变量”。这里可以想到为什么struts2的action要配置成非单例?

注意这里的概念与以后的struts以及spring mvc概念的基础。struts 1或2和spring MVC跟这里是有区别和联系的。

其实servlet就是mvc的雏形,通过servlet就可以写一个mvc 的hello world.
那么为什么会出现MVC?下一篇文章介绍,谢谢关注.
  • 大小: 45 KB
  • 大小: 63.4 KB
5
18
分享到:
评论
28 楼 zh_harry 2013-07-23  
finallygo 写道
zh_harry 写道
finallygo 写道
我说的也是变量,建议你看看  java并发编程实践 这本书

源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal

也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了

在ioc那篇里就把陆舟给得罪了,人家都瞧不起我了
27 楼 zh_harry 2013-07-23  
finallygo 写道
zh_harry 写道
finallygo 写道
我说的也是变量,建议你看看  java并发编程实践 这本书

源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal

也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了

你赢了,把我文章顶回来
理解了就行了呗,别较真。
我不说了threadlocal了嘛。别欺负我了啊
26 楼 finallygo 2013-07-23  
zh_harry 写道
finallygo 写道
我说的也是变量,建议你看看  java并发编程实践 这本书

源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal

也不一定的,我可以自己加synchronized或者其他方式来保证线程安全就行了
25 楼 zh_harry 2013-07-23  
finallygo 写道
zh_harry 写道
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

保证他不变就行.也可以这样理解

不对,是变也可以,只要保证线程安全,比如有一个计算一个servlet被访问的次数的功能,可以在servlet中声明一个AtomicInteger类型的变量,每次访问+1就行

这是特殊应用场景,应该是这样,如果这样说是可以有的,但正常请求的话象strut2的action那的场景肯定就不对了。
24 楼 zh_harry 2013-07-23  
finallygo 写道
我说的也是变量,建议你看看  java并发编程实践 这本书

源码删了,太长了
我明白你的意思了,我的理解只要他不变行了。因为是单例,多线程共享,变的话就会有问题了,除非加threadlocal
23 楼 finallygo 2013-07-23  
zh_harry 写道
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

保证他不变就行.也可以这样理解

不对,是变也可以,只要保证线程安全,比如有一个计算一个servlet被访问的次数的功能,可以在servlet中声明一个AtomicInteger类型的变量,每次访问+1就行
22 楼 zh_harry 2013-07-23  
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

保证他不变就行.也可以这样理解
21 楼 finallygo 2013-07-23  
zh_harry 写道
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

注意一下我文中的成员变量有引号,强调的是变量
常量是可以的

我说的也是变量,建议你看看  java并发编程实践 这本书
20 楼 zh_harry 2013-07-23  
finallygo 写道
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

你看看springmvc中的 DispatcherServlet 有变量没

有变量肯定是不安全的,常量可以,哎.
如果他真的是变量,早出大问题了.
19 楼 zh_harry 2013-07-23  
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

注意一下我文中的成员变量有引号,强调的是变量
常量是可以的
18 楼 finallygo 2013-07-23  
zh_harry 写道
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了

你看看springmvc中的 DispatcherServlet 有变量没
17 楼 zh_harry 2013-07-23  
finallygo 写道
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行

有变量就不安全了
16 楼 finallygo 2013-07-23  
"servlet是不能有成员变量的" 不是不能有,只要保证线程安全就行
15 楼 zh_harry 2013-07-23  
jahu 写道
main 是java或其他语言启动的入口,没错。但是web项目的启动,跟main方法没关系啊。你想了解web项目的启动,得了解软件是如何启动web服务的。
      你思考过。那里说说,tomcat是什么启动web服务的?
   还强调的是mvc是一种模式,这中模式可以应用到很多方面。不只有web服务。
    没有基础的思考,叫异想天开。

其实不论是学习还是做人做事,要有一个度。掌握这个度很难。
14 楼 zh_harry 2013-07-23  
jahu 写道
main 是java或其他语言启动的入口,没错。但是web项目的启动,跟main方法没关系啊。你想了解web项目的启动,得了解软件是如何启动web服务的。
      你思考过。那里说说,tomcat是什么启动web服务的?
   还强调的是mvc是一种模式,这中模式可以应用到很多方面。不只有web服务。
    没有基础的思考,叫异想天开。

我知道会应用到很多种场景,所以我特意强调文中只关心web开发部分,我怕有人专牛角尖。别再掐这些没意义的东西了。再继续追下去没有完了,最后有可能到0或1是二级管还是三级管.
13 楼 jahu 2013-07-23  
main 是java或其他语言启动的入口,没错。但是web项目的启动,跟main方法没关系啊。你想了解web项目的启动,得了解软件是如何启动web服务的。
      你思考过。那里说说,tomcat是什么启动web服务的?
   还强调的是mvc是一种模式,这中模式可以应用到很多方面。不只有web服务。
    没有基础的思考,叫异想天开。
12 楼 zh_harry 2013-07-23  
我在ioc里回复过了,我想分享的更主要的是思考的过程。
我也迷茫过,被忽悠过,也看过入门的骗钱的书。这是一个过程,马云说过:“我说的不一定是对的,但我说的都是我经历过并思考过的”(原话可能不是这样子,意思是这样的)所以我在文章阐述结果的同时会带一些思考轨迹,请不要揪这些没有意义的东西,而忽略了问题的本质。
11 楼 zh_harry 2013-07-23  
jahu 写道
zh_harry 写道
jahu 写道
zh_harry 写道
zh_harry 写道
jahu 写道
mvc 跟main方法有什么关系?不知所谓

这里要讲的mvc主要应用于web领域,web的底层是什么?这是从根源上思考问题。

不知道大家有没有了解过易经,老子说道生一、一生二、二生三,三生万物,其实这是一种思维的哲学。悟到了根源就是所谓的道。


我想问题你,mian是启动方法,,那么作为web项目,他的启动必须是web服务软件。你在mvc找main能找的到吗?mvc只是一种思想解决问题的方案而已。还有你ioc的理解很不到位,,依赖注入,没有依赖我注入什么?  ioc的另外一种称呼是 反转控制。你可以通过这两个词去真正的理解ioc的内涵,和趋向。

你看了ioc的文章了是吗?我认为不管他们是不是一个意思,他所解决的问题和思想算是理解的,没有依赖我注入什么?你这句话没有意义。
单纯从mvc来讲main是没有任何关系,但是mvc-web-web服务器-main他是有联系的。这是一个思考的过程。我的文章都是在强调思考,谢谢

zh_harry 写道
jahu 写道
zh_harry 写道
zh_harry 写道
jahu 写道
mvc 跟main方法有什么关系?不知所谓

这里要讲的mvc主要应用于web领域,web的底层是什么?这是从根源上思考问题。

不知道大家有没有了解过易经,老子说道生一、一生二、二生三,三生万物,其实这是一种思维的哲学。悟到了根源就是所谓的道。


我想问题你,mian是启动方法,,那么作为web项目,他的启动必须是web服务软件。你在mvc找main能找的到吗?mvc只是一种思想解决问题的方案而已。还有你ioc的理解很不到位,,依赖注入,没有依赖我注入什么?  ioc的另外一种称呼是 反转控制。你可以通过这两个词去真正的理解ioc的内涵,和趋向。

你看了ioc的文章了是吗?我认为不管他们是不是一个意思,他所解决的问题和思想算是理解的,没有依赖我注入什么?你这句话没有意义。
单纯从mvc来讲main是没有任何关系,但是mvc-web-web服务器-main他是有联系的。这是一个思考的过程。我的文章都是在强调思考,谢谢


你思考了什么?
       真心看不出来。去理解下mian方法吧,真正的去思考。思考请基于基础。我也思考过main方法,还真正的去接触过。发现。你的理解却和实践全完不同。

真有较真的,main是进程调度的入口。再往下想就没意思了吧
10 楼 jahu 2013-07-23  
zh_harry 写道
jahu 写道
zh_harry 写道
zh_harry 写道
jahu 写道
mvc 跟main方法有什么关系?不知所谓

这里要讲的mvc主要应用于web领域,web的底层是什么?这是从根源上思考问题。

不知道大家有没有了解过易经,老子说道生一、一生二、二生三,三生万物,其实这是一种思维的哲学。悟到了根源就是所谓的道。


我想问题你,mian是启动方法,,那么作为web项目,他的启动必须是web服务软件。你在mvc找main能找的到吗?mvc只是一种思想解决问题的方案而已。还有你ioc的理解很不到位,,依赖注入,没有依赖我注入什么?  ioc的另外一种称呼是 反转控制。你可以通过这两个词去真正的理解ioc的内涵,和趋向。

你看了ioc的文章了是吗?我认为不管他们是不是一个意思,他所解决的问题和思想算是理解的,没有依赖我注入什么?你这句话没有意义。
单纯从mvc来讲main是没有任何关系,但是mvc-web-web服务器-main他是有联系的。这是一个思考的过程。我的文章都是在强调思考,谢谢

zh_harry 写道
jahu 写道
zh_harry 写道
zh_harry 写道
jahu 写道
mvc 跟main方法有什么关系?不知所谓

这里要讲的mvc主要应用于web领域,web的底层是什么?这是从根源上思考问题。

不知道大家有没有了解过易经,老子说道生一、一生二、二生三,三生万物,其实这是一种思维的哲学。悟到了根源就是所谓的道。


我想问题你,mian是启动方法,,那么作为web项目,他的启动必须是web服务软件。你在mvc找main能找的到吗?mvc只是一种思想解决问题的方案而已。还有你ioc的理解很不到位,,依赖注入,没有依赖我注入什么?  ioc的另外一种称呼是 反转控制。你可以通过这两个词去真正的理解ioc的内涵,和趋向。

你看了ioc的文章了是吗?我认为不管他们是不是一个意思,他所解决的问题和思想算是理解的,没有依赖我注入什么?你这句话没有意义。
单纯从mvc来讲main是没有任何关系,但是mvc-web-web服务器-main他是有联系的。这是一个思考的过程。我的文章都是在强调思考,谢谢


你思考了什么?
       真心看不出来。去理解下mian方法吧,真正的去思考。思考请基于基础。我也思考过main方法,还真正的去接触过。发现。你的理解却和实践全完不同。
9 楼 zh_harry 2013-07-23  
jahu 写道
zh_harry 写道
zh_harry 写道
jahu 写道
mvc 跟main方法有什么关系?不知所谓

这里要讲的mvc主要应用于web领域,web的底层是什么?这是从根源上思考问题。

不知道大家有没有了解过易经,老子说道生一、一生二、二生三,三生万物,其实这是一种思维的哲学。悟到了根源就是所谓的道。


我想问题你,mian是启动方法,,那么作为web项目,他的启动必须是web服务软件。你在mvc找main能找的到吗?mvc只是一种思想解决问题的方案而已。还有你ioc的理解很不到位,,依赖注入,没有依赖我注入什么?  ioc的另外一种称呼是 反转控制。你可以通过这两个词去真正的理解ioc的内涵,和趋向。

你看了ioc的文章了是吗?我认为不管他们是不是一个意思,他所解决的问题和思想算是理解的,没有依赖我注入什么?你这句话没有意义。
单纯从mvc来讲main是没有任何关系,但是mvc-web-web服务器-main他是有联系的。这是一个思考的过程。我的文章都是在强调思考,谢谢

相关推荐

    .net(mvc)宾馆管理系统

    《.NET(MVC)宾馆管理系统详解》 ...总的来说,选择.NET(MVC)作为宾馆管理系统的开发平台,不仅能提供强大的功能支持,还能带来良好的可扩展性和维护性,是构建现代化宾馆信息系统的一个理想选择。

    《天才在左疯子在右》的基本介绍和推荐理由[定义].pdf

    《天才在左疯子在右》的基本介绍和推荐理由[定义].pdf

    疯子手机apk卸载工具

    疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机apk卸载工具疯子手机...

    疯子苹果助手 v1.0.1.318.zip

    首先,疯子苹果助手的特性之一是其海量的正版软件和游戏资源。用户可以在该平台上找到众多官方认证的应用,涵盖娱乐、教育、工具、社交等多个领域,满足不同用户的个性化需求。每日更新的新增应用确保了用户始终能够...

    疯子锁IE插件源码程序演示效果

    总结来说,"疯子锁IE插件源码程序演示效果"提供的是一种针对IE浏览器的保护工具,它可以锁定浏览器的使用、主页设置和代理服务器设置,确保用户隐私和安全。这款插件的特色在于其易用性和全面的保护措施,适用于个人...

    疯子CMS_轻简杰奇小说系统.zip

    【疯子CMS-轻简小说系统】是一款专为小说网站设计的内容管理系统(CMS),它以简洁易用为核心理念,旨在让网站管理员能够快速搭建和管理自己的小说平台,无需复杂的操作和大量的技术背景。这款系统可能包含以下关键...

    手机助手 疯子助手

    疯子助手是一款为苹果设备用户提供应用下载和游戏破解的软件,疯子助手里提供了海量不闪退应用和近千款极高有效度的ios热门游戏存档。 疯子助手完美支持不越狱的iPhone和iPad等iOS设备,是一款下载安装和管理软件、...

    读后感《天才在左,疯子在右》.doc

    《天才在左,疯子在右》这本书以其独特的视角探讨了人类思维的边界,通过对话精神病人的经历,引发读者对自我认知和世界本质的深度思考。以下是对书中的几个核心观点的解读: 首先,作者通过描述吃苹果的过程,强调...

    初中语文文摘社会疯子

    总结来说,这篇文摘通过一个社会边缘人物的故事,讨论了规则遵守、社会责任、环保意识以及社会对非主流行为的态度,引导读者深入思考何为真正的正常,以及如何评价个体在社会中的角色。它提醒我们在面对社会的普遍...

    电脑疯子GHOST-WIN7-SP1旗舰版(64位).doc编程资料

    电脑疯子GHOST-WIN7-SP1旗舰版(64位).doc编程资料

    疯子页面采集器 v4.0

    "疯子页面采集器 v4.0" 是一款专门针对网页数据采集的高效工具,它设计的目的是为了帮助用户从互联网上抓取并处理各种类型的信息,如文字、图片等。这款软件尤其适用于那些需要大量网页信息进行分析、研究或者自动化...

    读后感ۥ天才在左疯子在右精选.doc

    总的来说,《天才在左,疯子在右》不仅是一本书,更是一次对思维边界和人性深度的探索。它教会我们要开放心态,接纳不同,以及深入体验和理解生活中的每一刻。通过阅读,我们有机会反思自我,挑战既定观念,从而获得...

    C# mvc 订单系统(数据库+源码)

    总结来说,"C# MVC 订单系统(数据库+源码)"是一个涵盖C#编程、MVC架构、数据库设计和Web应用开发实践的综合案例。通过分析和学习这个项目,开发者可以深入理解如何构建一个完整的订单处理系统,同时提升自己的C#编程...

    疯子ftp上传工具源码传送数据到服务器源码版.rar

    在这个"疯子ftp上传工具源码传送数据到服务器源码版.rar"压缩包中,包含的源码可能是一个实现了FTP协议的上传工具,允许用户将本地文件上传至远程服务器。 FTP上传工具的核心功能通常包括以下部分: 1. **连接建立...

    疯子ftp上传工具传送数据到服务器2.0.zip

    疯子ftp上传工具传送数据到服务器 ftp上传工具 ftp服务器上传 ftp客户端 ftp服务器客户端 2.0新功能 密码加密 在线更新 更新缓存错误

    推箱子疯子版.zip

    1. **关卡设计**:疯子版可能会有更多精心设计的关卡,这些关卡可能包含多个难度等级,从初级的简单关卡逐渐过渡到需要深度思考和多次尝试的高级关卡。关卡设计可能更加巧妙,利用地形、障碍物以及箱子的数量来增加...

    DELPHI 的仿QQ疯子 不完全

    接下来,我们将详细讨论DELPHI编程语言以及在实现仿QQ疯子过程中可能涉及的关键技术点。 DELPHI是Borland公司推出的一种面向对象的、快速应用程序开发(RAD)工具,基于Pascal语言。它以其高效的编译器和强大的VCL...

    JSP从零开始学(视频教学版)第三部分

    JSP从零开始学(视频教学版),出版时间:2016年01月 .JSP依靠强大的 Java基础,成为世界上最流行的 Web开发利器。本书通过大量的实例,循序渐进地为读者介绍了有关 JSP开发所涉及的各类知识,所有版本一律采用*版本,是...

    疯子扫描器

    在数据扫描方面,疯子扫描器不仅能够读取文件内容,还可能包括文件属性、元数据和隐藏文件。这对于数据安全和隐私保护来说具有重要意义,因为许多敏感信息可能隐藏在这些不显眼的地方。同时,它可以帮助用户识别网络...

    JSP从零开始学(视频教学版)第一部分

    JSP从零开始学(视频教学版),出版时间:2016年01月 .JSP依靠强大的 Java基础,成为世界上最流行的 Web开发利器。本书通过大量的实例,循序渐进地为读者介绍了有关 JSP开发所涉及的各类知识,所有版本一律采用*版本,是...

Global site tag (gtag.js) - Google Analytics