Struts2是一种MVC模型的框架
model模型:处理业务逻辑
view视图:显示页面
controller控制器:模型与视图之间的桥梁。
struts和struts2的关系,实际上并没有直接联系,struts2是struts和webwork联合并且以webwork为核心开发出的框架。
struts2的优势:好。
struts2的配置:
解压war包进入apps中的web-inf的lib中把所有jar导入相应的jar到项目的lib并且把Struts.xml复制到项目的src下面。
书写一个普通的Java类,在里面可写一个execute方法,Struts2默认走的方法,可以写一个简单的方法,然后去Struts.xml中配置。
constant 用于重写struts内部的系统属性 ,键值的来源 参考org.apache.struts2 default.properties文件name 属性的键 vlaue 属性的值
package包标签,其中包括name属性,起一个唯一的包的名字,namespace命名空间,通常/,属于浏览器访问的路径中的一部分(namespace+actionName),extends继承一个包,只要是Struts的package就一定会直接或间接的继承Struts-default。Package中很多属性的值可以去Struts-default中找。
action标签属于package的子元素,配置或注册已有的Java类为Struts的action,action中的name属性,action的名称,是浏览器中可访问路径的一部分(namespace+actionName),class属性,action的class类,在进行反射调用的时候,会根据给定的路径进行实例化变量。Method属性,调用的业务方法,如果没写,默认execute,如果指定则默认该方法,将是我们指定的方法。
result结果处理,是action标签的子元素。name属性是返回的结果名称,就是action的方法的返回值的字符串,两边一定要相同。Type属性是结果处理的类型,包含chain、dispather、redirect、redirectAction、stream、json。
param用于指定该结果集的额外参数,是result的子标签,name属性是该结果处理的类里面的属性名称,标签之间是给定值。
Stream是结果处理标签的type一种类型,表示流,如果默认不指定该流的类型,则会按照文本类型进行处理,通常通过param标签告诉它 流是哪一个,告诉它流的类型,在action中的流的名称叫inputstream则可省略该设置。
Chain和redirectAction
<param name="namespace"></param> action所在的namespace
<param name="actionName"></param> 要访问的action名称
<param name="method"></param> 要访问的方法
chain :转发到action上
dispatcher :转发到页面上
redirect : 重定向到页面
redirectAction :重定向到action
当type类型为json时,可以使用Struts自己提供的json也可使用外部的。
使用struts自身提供的,首先导入Struts2-json-plugin-2.3.20.jar,然后去package的extends的值改为json-default,并把type改为json,最后指定json插件要序列化的对象。
拦截器:
在那个标签下,拦截器就属于那个级别.
只要自定义配置了拦截器 原有的 功能就会失效,通过声明新的拦截器栈来解决。
实现拦截器的步骤 实现 Interceptor接口 继承AbstractIntegerceptor 类
拦截器的配置:
声明拦截器
<interceptors>
<interceptor name="power" class="com.cdsxt.interceptor.PowerInterceptor"></interceptor>
<interceptor-stack name="security">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="power" />
</interceptor-stack>
</interceptors>
配置全局的拦截器
<default-interceptor-ref name="security"></default-interceptor-ref>
配置全局结果处理
<global-results>
<result name=>拦截的页面</result>
<result name= type= 请求转发或重定向>拦截的页面</result>
</global-results>
拦截器也可继承。
Struts2和filter的区别 暂无
Struts2的运行流程 暂无