1、MVC模式(View-model-controller)
2、MVC模式的优点:
(1)低耦合性。视图层、模型层和控制层分离,很容易改变应用程序的数据层和业务规则,只需改变MVC的模型层就可以了。
(2)高重用性。多个视图可以对应一个模型,这样减少了代码的重复性及维护量,一旦模型发生改变,也易于维护。
(3)可实用性。MVC允许使用各种不同的表现层技术来访问同一个服务器端的代码。如jsp、velocity等。
(4)可维护性。3个模块层相分离,是的web应用更易维护和修改。
3、model2模式下,模型用javaBean充当,视图有jsp页面充当,控制器由servlet充当。
4.struts2是在struts1的基础上发展起来的,以webwork 为核心,采用webwork的设计理念。Struts2是webwork 的升级。
5、webwork是基于MVC架构模式的J2EE Web框架,现在的最新版本被拆分为XWork和WebWork2两个项目。WebWork的优点:
(1)action不需要与WebWork耦合,提高了代码的重用率。
(2)支持更多表现层技术,从而有更好的适用性。Webwork的特征:
(1)灵活的validation框架。运行开发者在XML文件中定义验证内容,在运行时通过interceptor自动应用,这样可以脱离Action类。
(2)Interceptor。在action处理的前后实现动态拦截,简化action代码。
(3)支持I18N
(4)支持OGNL表达式语言
(5)Type Conversion.允许类之间很容易实现对象的转换。(6)允许动态对象图表遍历和方法执行,使用valuestack 透明访问多beans的属性。
(7)Ioc容器。管理组件的生命周期,使客户不需要通过创建注册类获得组件实例。
(8)velocity templates .使UI组件可重用,从而允许开发者很容易地定制Web页面的look&feel。
(9)容易和第三方软件集成。例如hibernate、spring和sitemesh。
(10)支持多种视图技术。如jsp、velosity、freemarker 和xml等。
6、struts2框架的大致处理流程:
(1)客户端浏览器发送一个请求。
(2)核心控制器filterdispatcher根据请求决定调用合适的action。
(3)webwork的拦截器链自动对请求应用通过功能,如验证。
(4)回调action的execute()方法,该方法根据请求的参数来执行一定的操作。
(5)execute()方法的处理结果信息将被输出到浏览器中,struts2支持多种形式的视图。如jsp、html。
7、web.xml
xmlns="https://www.sodocs.net/doc/8e17927319.html,/xml/ns/javaee" xmlns:xsi="https://www.sodocs.net/doc/8e17927319.html,/2001/XMLSchema-instance" xsi:schemaLocation="https://www.sodocs.net/doc/8e17927319.html,/xml/ns/j avaee https://www.sodocs.net/doc/8e17927319.html,/xml/ns/javaee/web-app_2_5. xsd"> org.apache.struts2.dispatcher.FilterDispatcher
(2)
ShowWords.java
package action;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class ShowWords extends ActionSupport{
private String name;
private String words;
public String getName() {
return name;
}
public void setName(String name) {
https://www.sodocs.net/doc/8e17927319.html, = name;
}
public String getWords() {
return words;
}
public void setWords(String words) {
this.words = words;
}
public String execute(){
return INPUT;
}else{
words = "欢迎您:" + name;
return SUCCESS;
}
}
}
(3)
Struts.Xml
"-//Apache Software Foundation//DTD Struts
Configuration 2.0//EN"
"https://www.sodocs.net/doc/8e17927319.html,/dtds/struts-2.0.dtd">
312"/> extends="struts-default"> class="action.ShowWords"> name="success">/showWords.jsp name="input">/inputWords.jsp 8、核心控制器FilterDispatcher: 核心控制器是struts2框架的基础,它包含了框架内部的 控制流程和处理机制。在web应用中,FilterDispatcher作 为一个filter运行,负责拦截所有的用户请求。如果用户 请求以.action结尾,则该请求被转入Struts框架处理。 Struts2框架按模块可以分为Servlet Filters、struts核心模 块、拦截器和用户实现模块。P33 Srtuts2框架处理一个请求的步骤: (1)客户端提交一个请求(HttpServletRequest). (2) 请求被提交到一系列的过滤器(filter),首先提交 ActionContextCleanUp然后提交到其他过滤器(SiteMesh等) 最后提交到FilterDispatcher。 (3) FilterDispatcher询问ActionMapper是否需要调用某个 Action来处理这个请求。如果ActionMapper决定需要调 用某个Action,则FilterDispatcher把请求的处理交给 ActionProxy。 (4) ActionProxy通过Configuration Manager(struts.xml)询问 框架的配置文件,找到需要调用的Action类。 (5) ActionProxy创建一个ActionInvocation实例,同时 ActionInvocation通过代理模式调用Action,在调用之前, ActionInvocation会根据配置加载Action相关的所有拦截 器。 (6)一旦Action执行完毕,ActionInvocation负责根据 struts.xml中的配置找到对应的返回结果。 9、使用 属性名name,必选,指定包的名称,该名称是该包被其他 包引用的key值。 属性名extends,可选,指明该包继承的其他包。 用extends继承包,父包在子包前定义。 Struts.xml "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "https://www.sodocs.net/doc/8e17927319.html,/dtds/struts-2.0.dtd"> value="gb2312" /> class="ActionClass1"> name="success">/success.jsp extends="default" namespace="/skill"> 结果类型 (1)dispatcher结果类型用来表示“转发”到指定结果类型,它是Struts 2的默认结果类型。 (2)redirect结果类型用来“重定向”到指定的结果资源,该资源可以是JSP文件,也可以是Action类。(3)redirectAction结果类型也是重定向到其他资源,重新生成一个新的请求。 (4)其他结果类型 1、简述使用拦截的意义。 (1)通过拦截形式拦截器模块,极大地提高了系统开发的灵活性和复用性,AOP使用代理的方式,将多个拦截器和核心业务逻辑组合在一起,满业务需求。 (2)通过使用拦截器,可以使核心框架代码比以前更加简洁,使开发人员更加快捷地使用框架的特性。 2、简述输入校验流程。 (1)客户端校验。 (2)对请求的字符串参数进行类型转换,并设置为对应的Action属性值。 (3)如果类型转换出现异常,将异常信息封装到filedError中。 (4)调用Action的validateXxx()校验方法,其中xxx()方法是Action中对应的处理逻辑 方法。 (5)调用Action类的validate()校验方法。(6)完成上面的步骤后,框架开始检查在以上过程中是否产生了filedError,如果产生了,则 返回逻辑视图Input;反之,则返回处理方法 中的逻辑视图。 (7)系统根据上一步骤返回的逻辑视图,结合struts.Xml文件的配置内容。呈现相应的视图 页面。