日期:2014-05-17  浏览次数:20606 次

◆ ◆ ◆ 一直搞不懂MVC到底是什么,JAVA板块中懂MVC的朋友请进!! ◆ ◆ ◆
希望到java板块来请教下MVC的知识。希望java高人帮我回答以下几个问题,先谢谢:

题一:java可以用来做web程序,好比PHP。那么java里面的WEB根目录和他的MVC是如下放置的吗?
  假如虚拟主机的根目录是 /public_html 目录,那么 M 和 C 放在与/public_html 同一级别的地方而不是放到/public_html里面对吗?(用户不可以通过HTTP的URL访问到这些java程序对吗)
题二:当用户请求某一个网址的时候,比如 /forum/index.html,那么当用户提交这个请求的时候,服务器端接收到了这个请求的时候,执行的是哪个文件呢?如果网站目录 forum文件夹里面不存在 index.html文件,那么是怎么处理?(貌似java里面是先通过了MVC然后再去生成这个index.html对吗)

我描述的有点乱。
我的意思是,整个java的执行过程是,java可以完全监听web上传输的请求(不通过htaccess配置文件),然后需要输出什么都是在java的M C里面进行执行的。对吗,我描述的优点乱。

因为一直被MVC压着,实在是痛苦,希望懂得人帮我解答一下,什么是MVC,具体,不要抽象的啊。。。。。


------解决方案--------------------
Model View Controller.M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离。

Web-INF文件夹里的东西外界不能直接访问,这样其实是保护了后台的部分,防止用户不通过页面而直接进行访问。

至于监听和index.html的问题,其实是由于LZ没有搞清楚Web开发时程序的运行流程造成的。
项目启动时,在初始化过程中会去访问web.xml的文件,index.html就是配置在里面作为首页进行访问的,LZ完全可以在web.xml里自己去定义一个直接访问项目路径时,跳转到的页面或者后台处理位置;
至于监听也是在web.xml进行相关配置后才能实现的,只是每个框架可能监听的方法有点不同。
这个只要LZ搞明白web.xml里每个配置是什么用的时候就都清楚了。
------解决方案--------------------
谈不上懂,作为入门的Java程序员知道一些

Lz先思考几个问题

如果你的一个项目有好几万行代码,由于代码量太大,需要分模块开发,不分层如何开发?

对于Web项目,本来文件的分类就多,如果没有一个好的项目结构,如何更好的组织代码?

不基于MVC模式的项目,后期是否方便维护?

网上有很多MVC的专业资料,建议Lz可以找一个看看

个人观点:MVC是一种设计模式,不依赖于具体的开发语言或者技术,所以什么配置文件之类的都不是MVC的根本内容,只是其中的一种实现而已~


------解决方案--------------------
lZ听我说 
比如说 我写一个程序用来输出 hello world 

我可以直接写一个类就能完成
这个时候 我突然想起了mvc模式 于是乎
我把这一个类拆分成了3个类 类A 类B 类C
类A用来存储 hello world
类C用来显示一个字符串
类B呢 从类A中获取 hello world 然后传递给类C来显示


这样 A 就是MVC中的 M
B 就是MVC中的 C
C 就是MVC中的 V
了,举上面的例子是为了告诉你 MVC只是一种思想而已....


接着就说 java web程序了
你先要东 jsp 和 servlet javabean的意思 

因为 通常一般写jsp程序 都是jsp请求 servlet 然后servlet返回数据给jsp,对吧
这样的话 servlet中 要查询数据库 和处理业务逻辑了...

但是呢 这样的话servlet就会乱七八糟的什么代码都有了,对吧 

这个时候 我又想起来MVC模式了 ...]
jsp 就是天生的展示数据和输入数据用的 ...可以看做MVC的 V
servlet呢 这个时候我把在servlet中连接数据库的代码独立出来放到一个java类里面去,
servlet只要要调用这个类就直接拿到结果显示给jsp

这样 servlet就变成MVC的 C了
而那个处理数据库的java类 就变成MVC的 M了

看到了吧 我们什么都没干 就已经完成了MVC模式的使用了
------解决方案--------------------
探讨
MVC很好理解!

楼上的理解都很准确.

MVC设计模式有点像.NET里面的三层架构.

------解决方案--------------------
不用太费神去理解。。。在你需要的时候,你就会理解。。。