1. Struts是什?
{:1) Struts是一个开源框Ӟ用于构徏MVC架构Web应用E序;
2) Struts是Jakarta目的部? 由Apache软g基金赞助;
3) 通过使用StrutsQ你可在E序中清晰地分隔表现层和业务逻辑?
4) 通过提供q泛JSP标签库,Struts也提高了开发效率。标{ֺ解析和验证用戯入、错误处理以及国际化支持?br /> 5) 我们会向您展现如何使用Struts开发工h建Struts的Web应用E序?/p>
2. Struts资源
{:Z学习更多Struts框架有关知识Q请xStruts官方|站以及用户向导:
. http://jakarta.apache.org/struts
. http://jakarta.apache.org/struts/userGuide/introduction.html
3. MVC(model-view-controller)架构模式
{:1) MVC架构模式?980q由Smalltalk-80的图形用L面库的开发者提?
2) 从此它在面向对象的用L面和应用E序控制工具包中得到了广泛地应用Q例如StrutsQ以及经q改良去满特定q_需求,例如J2EE?br /> 3) ҎMVC模式Q一个Y件组?一个应用程序、一个模块等)应该它商业逻辑和它的表现层分离;
4. MVC的理?br />{:1) 对于相同的model你有过一个view;
2) 假如商业逻辑和它的表现层构徏在一块,增加额外的view会导致相当大的中断以及增加组件的复杂?
3) 一个model有二个view的一个好的例子是一个银行应用程序,它可以通过互联|以及手?
4) 改变view的时候,你不希望每次改变model;
5) view依赖于modelQ它昄l用户model的特定方?
6) view和model构徏在一块,每次当你对viewq行l小改动的时候,你不得不改动model;
5. MVC模式
{:q种分离可通过组件分成以下层辑ֈ:
. model层,实现商业逻辑;
. view层,实现一个特定客Lcd的用L?
. 有了q二层,我们可实现商业逻辑q且它呈现l用戗但q只解决了问题的一半,我们应该q能和model交互。这U交互的实现层称为控制层?/p>
6. MVC间的依赖?br />{:
|ˉˉˉˉˉ|
| Control |
|__________|
╱╲
╱ ??
╱ ??
↙ ??
|ˉˉˉˉˉ| |ˉˉˉˉˉ|
| View |----->| Model |
|__________| |__________|
7. MVC框架和Struts
{:Struts提供了下面这些组件用MVC开发应用程序:
. ModelQStruts没有提供modelcR这个商业逻辑必须由Web应用E序的开发者以JavaBean或EJB的Ş式提?
. ViewQStruts提供了action form创徏form bean, 用于在controller和view间传输数?
此外QStruts提供了自定义JSP标签库,辅助开发者用JSP创徏交互式的以表单ؓ基础的应用程?
应用E序资源文g保留了一些文本常量和错误消息Q可转变为其它语aQ可用于JSP中?br /> . ControllerQStruts提供了一个action serlvetQ接收JSP输入字段形成action formQ然后调用一个action class。action class提供了model的逻辑接口?/p>
8. Struts Web应用E序中的lg
{:1) 一个servletQ承自org.apache.struts.action.ActionServlet;
. 主要实现一个映功能:一个请求的URI映射至一个action class;
. 在调用action class之前Q它接收JSP输入字段然后形成form bean;
. 如果指定了,action servlet也会hform bean去验证数?
. 它然后调用action class完成h的功?
. 假如form bean验证p|Q控制然后返回给JSPQ以便用户可以改正数?
. action servlet׃个XML配置文g配置。这个XML配置文g指定了组件的环境和它们之间的关系?br /> 2) 多个JSP面Q给l端用户提供界面;
. Struts提供了广泛的标签库得JSP开发v来容?
. JSP昄了action准备好的信息以及用于用户h新的信息;
3) 多个action classQ承自org.apache.struts.action.Action;
. model的接?
. 当一个action完成执行后,它返回一个action转发对象。该对象定用户界面是否昄响应?br /> . action class预备了必ȝ消息用于昄响应Q通常是作Z个form beanQ然后它对JSP面有用?br /> . 用于传送消息给action的form beanQ也用于传送响应。但专门的显C数据的view bean的存在也很普遍?br /> . 一个action forward包括它的名字、地址(URL)以及一个标记。这个标记指定一个forward或redirect调用是否应该q行?br /> . 一个action forward的地址通常编码入action servlet的配|文Ӟ但是也可以由action本n动态生?br /> 4) 多个action formQ承自org.apache.struts.action.ActionForm?br /> . action form是一般的带有set和getҎ的javabean;
. 通常每个Web面存在一个form beanQ但是你也可以用粗_度的form bean用于在多个Web面间保持输入内宏V?br /> . 假如需要进行数据验证,直到form bean成功完成验证Q它才会传递至action?br /> . 因此form bean可以作ؓ介于JSP和action中的防火墙,它仅允许有效的数据进入系l?br /> 5) 每种语言一个应用程序资源文Ӟ它包含了一些应用程序文本常量以及错误信息,q得国际化变得Ҏ?/p>
9. Struts的请求时?br />{:1) 来自于Web览器的一个请求到达ActionServlet;
2) 假如处理h的action有一个相联系的form beanQStruts创徏form beanq且来自于览器的输入数据填充?
3) 然后调用form bean的验证方?
4) 假如验证p|Q用戯回至输入面L正输?
5) 假如验证成功QStruts调用action的executeҎ;
6) action接收到来自于form bean的数据ƈ且执行相应的逻辑;
7) Action通常调用session EJB处理商业逻辑;
8) 当商业逻辑处理完,action要么创徏一个新的form bean(或其它对应的view bean)Q要么重用已l存在的。用新的数据填充它然后存储于h(或会?范围内?br /> 9) 它然后返回一个forward对象laction servletQ该servlet其转送至相应的输出JSP面?br /> 10)JSP使用form bean中的数据输出l果?/p>