分手快乐 发表于 2015-1-18 11:11:38

JAVA网站制作之MVC形式概述

你通过从书的数量和开发周期及运行速度来证明:net和ruby要比java简单。MVC是三个单词的缩写,分离为:
模子(Model),视图(View)和把持Controller)。
MVC形式的目标就是完成Web体系的本能机能合作。

Model层完成体系中的营业逻辑,一般能够用JavaBean或EJB来完成。
View层用于与用户的交互,一般用JSP来完成。

Controller层是Model与View之间相同的桥梁,它能够分拨用户的哀求并选择得当的视图以用于显现,同时它也能够注释用户的输出并将它们映照为模子层可实行的操纵。

MVC形式的优点


各施其职,互不干与
在MVC形式中,三个层各施其职,以是假如一旦哪一层的需求产生了变更,就只必要变动响应的层中的代码而不会影响到别的层中的代码。
有益于开辟中的合作
在MVC形式中,因为按层把体系开,那末就可以更好的完成开辟中的合作。网页计划职员能够举行开辟视图层中的JSP,对营业熟习的开辟职员可开辟营业层,而别的开辟职员可开辟把持层。
有益于组件的重用
分层后更有益于组件的重用。如把持层可自力成一个能用的组件,视图层也可做成通用的操纵界面。

分歧JSP机关的使用



为何要组合利用servlet&JSP?
典范的做法:利用JSP来简化HTML内容的开辟与保护
关于复杂的静态代码,利用由剧本元素挪用JAVA代码来完成。
关于略微庞大一些的使用,则可以使用剧本元素挪用定制的类来完成。(即所谓的help类)
关于对照庞大的使用,则利用JAVABEAN和定制标签
但,这些是不敷的
关于庞大的处置历程,从JSP入手下手做起会难以处置。
JSP除可以带来将实践的代码断绝成独自的类、bean、和定制标签的便当之外,它所隐含的假定是单个页面给出单个基础视图。


对MVC的曲解

必需接纳庞大的框架
框架偶然很有效
Struts
JavaServerFaces(JSF)
但并不是必须!
关于年夜多复杂大概过度庞大的使用来讲,利用内建的RequestDispatcher就可以够很好地完成MVC
MVC影响全部体系的计划
我们能够用MVC来处置单个哀求
能够将它以为是MVC计划,而非MVC框架。
也被称为是模子2计划



用RequestDispatcher完成MVC

1.界说用以暗示数据的javabean
2.利用一个servlet处置哀求
servlet读取哀求参数,反省数据的缺掉或非常等。
3.添补bean
该servlet挪用营业逻辑或数据会见代码失掉终极的了局。得出的了局被放在第一步中界说的bean中。
4.将bean存储在哀求,会话或servlet的高低文中
该servlet挪用哀求、会话或servlet高低文对象的setAttribute存储表达哀求了局的bean的援用。


5.将哀求转发到JSP页面
该servlet断定哪一个JSP页面合适于处置以后的情况,并利用RequestDispatcher的forward办法将把持转移到谁人页面。

6.从bean中提取数据
JSP页面利用jsp:useBean和与第4步婚配的地位会见之前存储的bean,然后利用jsp:getProperty输入bean的属性。
JSP页面其实不创立或修正bean;它只是提取并显现由servlet创立的数据。

jsp:useBean在MVC中的利用与在
自力JSP页面中有甚么分歧
JSP页面不该该创立对象
应当由servlet创立一切的数据对象。因而,为了包管JSP页面不会创立对象,我们应当利用<jsp:useBean...type=“package.Class”/>
而不是
<jsp:useBean...class="package.Class"/>
JSP页面也不该该修正已有的对象
因而,我们应当只利用jsp:getProperty,不利用jsp:setProperty
。提醒:jsp:useBean的scope选项
request
<jsp:useBeanid="..."type="..."scope="request"/>
session
<jsp:useBeanid="..."type="..."scope="session"/>
application
<jsp:useBeanid=".."type=".."scope="application"/>
page
<jsp:useBeanid=“...”type=“...”scope=“page”/>
大概仅仅利用<jsp:useBeanid="..."type="..."/>
MVC(Model2)构架不利用这个scope。

分歧数据共享体例
向用户显现一个随机的数字。
因为每次哀求应当发生新的数字,因此基于哀求的共享是得当的。

显现用户的姓和名
数据要为每一个客户存储,因此基于会话的共享对照合用。

显现一个指定长度的质数。
数据在多个客户间共享,因而,基于使用的共享对照得当。

基于哀求的数据共享
Servlet
ValueObjectvalue=newValueObject(...);
request.setAttribute("key",value);
RequestDispatcherdispatcher=
request.getRequestDispatcher("/WEB-INF/SomePage.jsp");
dispatcher.forward(request,response);

JSP
<jsp:useBeanid="key"type="somePackage.ValueObject"
scope="request"/>
<jsp:getPropertyname="key"property="someProperty"/>

基于会话的数据共享
Servlet
ValueObjectvalue=newValueObject(...);
HttpSessionsession=request.getSession();
session.setAttribute("key",value);
RequestDispatcherdispatcher=
request.getRequestDispatcher("/WEB-INF/SomePage.jsp");
dispatcher.forward(request,response);

JSP
<jsp:useBeanid="key"type="somePackage.ValueObject"
scope="session"/>
<jsp:getPropertyname="key"property="someProperty"/>

基于ServletContext的数据共享
Servlet
synchronized(this)
{
ValueObjectvalue=newValueObject(...);
getServletContext().setAttribute("key",value);
RequestDispatcherdispatcher=
request.getRequestDispatcher("/WEB-INF/SomePage.jsp");
dispatcher.forward(request,response);
}

JSP
<jsp:useBeanid="key"type="somePackage.ValueObject“scope="application"/>
<jsp:getPropertyname="key"property="someProperty"/>

JSP页面中的绝对URL
成绩:
利用哀求分派器举行的转发对客户来讲是通明的。初始的URL是扫瞄器唯一晓得的URL。
为何这会对照主要?
扫瞄器会怎样处置相似上面的这些标签:
<IMGSRC="http://www.webjx.com/htmldata/2005-11-17/foo.gif"…>
<LINKREL=STYLESHEET
HREF="JSP-Styles.css"TYPE="text/css">
<AHREF="bar.jsp">…</A>
谜底:扫瞄器将会把它们看做是相对servlet的URL

最复杂的办理计划:
利用以斜杠入手下手的URL

Summary
MVC(Model2)体例合用于:
单次提交会发生多个基础表面。
几个页面具有大批大众的处置历程。
必要为一样的数据供应多个视图的使用程序,它很好地完成了数据层与暗示层的分别,出格合用于开辟与用户图形界面有关的使用程序

构架
由一个servlet应对初始的哀求
Servlet完成实践的数据处置并将了局存储在bean中
Bean存储在HttpServletRequest,HttpSession,或ServletContext中
Servlet利用RequestDispatcher的forward办法将哀求转发到JSP页面
JSP页面经由过程利用jsp:useBean和响应的感化域(request,session,application)从bean中读出数

他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。

活着的死人 发表于 2015-1-20 16:44:26

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

只想知道 发表于 2015-1-29 13:07:39

是一种将安全性(Security)列为第一优先考虑的语言

透明 发表于 2015-2-8 12:24:52

Java是一种计算机编程语言,拥有跨平台、面向对java

简单生活 发表于 2015-2-25 11:54:22

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

柔情似水 发表于 2015-3-7 20:09:12

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

蒙在股里 发表于 2015-3-15 13:05:19

Java 编程语言的风格十分接近C、C++语言。

admin 发表于 2015-3-22 01:07:57

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
页: [1]
查看完整版本: JAVA网站制作之MVC形式概述