Struts2框架(一)

来源:互联网 发布:谷歌平板nexus10 知乎 编辑:程序博客网 时间:2024/06/05 18:56

struts2实现的主要步骤:
第一步:编写实现输出的jsp页面,第二步:编写控制器HelloWorld.java,必须实现ActionSupport类,继承execute()方法
第三步:配置struts.xml和struts.properties文件,定义Action的路径和名称,返回的JSP页面,最后再是配置web.xml文件

Struts2框架的流程
1:请求先到达Filter中央控制器
2:然后为Action创建代理类
3:将各个服务存放在拦截器中,执行完拦截器后再去执行Action类,action类调用service,再调用dao
4:转向相应的视图

Struts2的配置文件

struts.properties:定义框架自身的全局变量
struts-default.xml:定义框架自身使用的Action映射及result定义
struts-plugin.xml:Struts插件使用的配置文件,比如:当结合使用Struts和Spring就需要在web.xml中引用该配置文件
struts.xml:定义应用自身使用的Action映射及result定义;我们一般将应用的各个模块分布到不同的配置文件中

注意:struts.properties定义的全局属性也可以在struts.xml文件中定义

三个主要的配置文件:web.xml,struts.xml,struts.properties
任何MVC框架都需要与web应用整合,就不得不借助于web.xml文件,只有配置在web.xml文件中与Servlet才会被应用加载

struts.xml是struts2的核心配置文件,在开发过程中利用率最高,该文件主要负责管理应用中的Action映射,以及该Action包含的Result定义
struts.xml文件主要是配置请求路径对应action类的,以及结果跳转路径

<struts>  <package name="example" namespace="/example" extends="struts-default">      <action name="HelloWorld" class="struts2.action.HelloWorldAction">          <result name="success">/success.jsp</result>      </action></struts>

访问 /example/HelloWorld.action对应执行struts2.action包下面的HelloWolrdAction类;默认情况下执行类中的execute方法,如果想指定方法,只需要在<action>标签中添加method属性<result>标签配置结果跳转路径,根据Action类中方法返回的String字符串,去匹配result标签中的name值,进行跳转

包含内容:
全局属性
用户请求和响应Action之间的对应关系
Action可能用到的参数和返回结果
各种拦截器的配置

struts.properties全局属性文件,自动加载该文件包含很多key-value对,该文件完全可以配置在struts.xml文件中,使用constant元素

在web.xml文件中配置核心控制器

<!-- 配置框架的核心调度器 -->  <filter>      <filter-name>struts2</filter-name>      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  </filter>  <filter-mapping>      <filter-name>struts2</filter-name>      <url-pattern>/*</url-pattern>  </filter-mapping> 

在Struts2中,所有的控制器都继承了com.opensymphony.xwork2.ActionSupport类,默认实现了execute()方法。
注意:在struts2中,Action也可以不继承任何一个类

public String execute() throws Exception{   setMsg("Hello world");   return SUCCESS;}

execute()方法返回一个字符串,决定执行完该方法之后要跳转的资源,SUCCESS已在Struts配置文件中定义了的。

Struts2的输入校验有2种方式:
第一种是通过配置文件(校验文件命名为 Action类名-validation.xml)。
第二种是通过重写ActionSupport类中的validate方法,只需为Action指定一个校验文件即可,这种校验文件的存放路径和要校验的Action路径一致,需要Action继承ActionSupport类,并重写validate方法。

Struts2的拦截机制其实是AOP的一种实现方式,通过拦截器可以在Action执行的前后处理一些相应的操作。当请求到达Struts2的Dispatcher时,Struts2会自动查找到配置文件,并根据配置文件实例化拦截器,然后穿成一个列表,接着一个接一个的调用列表中的拦截器,再执行Action,最后返回Result。

struts-default.xml中已经配置了拦截器,开发人员可以直接使用它,具体使用方法:<include file="struts-default.xml" />,然后在定义Action时,使用<interceptor-ref name="拦截器名称" />引用拦截器或拦截器栈即可。

AbstractInterceptor是Struts2提供的一个拦截器类,因为此类提供了init()和destory()方法的空实现,开发人员只需要实现intercept()方法即可,在编写好拦截器后,就需要在配置文件中注册该拦截器。

自定义拦截器的实现:所有的Struts2的拦截器直接或间接实现接口Interceptor,该接口提供了3个方法
init()+destory()+interceptor(ActionInvocation invocation)

原创粉丝点击