struts2笔记

1.在控制器中如何获得:
   ServletContext,HttpSession,HttpRequest,HttpResponse;
 

   一种方式是通过:

                  1.通过ActionContext访问Servlet Api(ioc方式)
                       a.如:Map session=ActionContext.getSession();
                             Map application =ActionContext.getApplication();
                             Map request = (Map)context.get("request");
                       b.实现struts2容器的回调类 *Aware(RequestAware,SessionAware,ApplicationAware)
                            
                  2.ServletActionContext(非ioc);
                      如:  ServletActionContext.getRequest();
                            ServletActoinContext.getResponse();
                           
                            ServletActionContext.getServletContext();
                 3. 实现ServletRequestAware, ServletContextAware(非ioc)

  得到页面提交过来的值:ModelDriven接口的使用
                          
                       
2.界面如何获得在Session,Application中的值:ognl表达式只能用在标签内
       值栈的使用:放的对象一般为: 临时对象,模型对象,action对象,作用域对象又叫命名对象
                   访问访问上下文中的内容:
                                 作用域:     作用范围:                                        OGNL
                                 Parameters   包含当前请求中所有的HttpServletRequest参数        #parameters.name  
                                 Request      包含当前请求中所有的HttpServletRequest属性        #request.name 
                                 Session      包含当前请求中所有的HttpSession属性               #session.name: <s:property value="#session.user"/>
                                 Application  包含当前请求中所有的ServletContext属性            #application.name  <s:property value="#application.user"/>
                                 Attr         包含前面四种作用域的所有属性                      #attr.name 
                                 attr的会按照作用域的范围: Parameters的范围---->request...----》Application  

                                   
                  

3.返回的结果类型:
                  dispatcher,redirect,chain,freemarker

4.struts.properties的配置:

5.struts.xml的配置:
     <constant name="struts.i18n.encoding" value="GBK"/>
      
 

      配置异常映射:局部异常
      <action name="register" class="org.sunxin.struts2.action.RegisterAction">
         <!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 -->
      <exception-mapping result="error" exception="java.lang.Exception"/>
         <result name="error">/WEB-INF/pages/error.jsp</result>     
      </action>


6.action中多方法的调用:
          action的name名称!方法名.action

7.拦截器及拦截器栈的使用:

       a.系统拦截器及拦截器栈的配置:

               <interceptors>
      <!-- 部署timer拦截器 -->
   <interceptor name="timer"
    class="com.opensymphony.xwork2.interceptor.TimerInterceptor" />
   <!-- 部署logger拦截器 -->
   <interceptor name="logger"
    class="com.opensymphony.xwork2.interceptor.LoggingInterceptor" />

   <!-- 部署拦截器栈,命名为myStack,引入timer和logger拦截器 -->
   <interceptor-stack name="myStack">
    <interceptor-ref name="timer" />
    <interceptor-ref name="logger" />
   </interceptor-stack>

        </interceptors>   
         b.拦截器及拦截器栈针对某个action的使用:
               
                <action name="testAction" class="sunyang.interceptor.Action">
   <result>/success.jsp</result>
   <interceptor-ref name="myStack" />
  </action>

         c.拦截器的参数设置:
                 <interceptor-ref name="parameterInterceptor">
         <param name="name">lixin</param>
   </interceptor-ref>

        d.自定义拦截器的使用:
                实现: com.opensymphony.xwork2.interceptor.Interceptor接口 ;
                继承: com.opensymphony.xwork2.interceptor.AbstractInterceptor
                重写:
               @Override
       public String intercept(ActionInvocation actioninvocation) throws Exception {
  System.out.println("========ParameterInterceptor拦截器开始调用========");
  System.out.println("=========" + name);
  String result =actioninvocation.invoke();
  System.out.println("========ParameterInterceptor拦截器调用后========");
  return result;
       }
              配置见a
                    
        e.多个拦截器的调用顺序:配置在前,则先执行;
        f.对控制器中的方法进行有选择的拦截:
                  <param name="includeMethods">方法1,方法2</param>
                  <param name="excludeMethods">方法1,方法2</param>
                  如果一个方法既在incoudeMethods中,又在excludeMethods中,则优先 includeMethods  
       g.execAndWait拦截器的使用;
               
      当我们为action添加拦截器后,<default-interceptor-ref>中的所指定的拦截器将不再对action起作用;必须用<interceptor-ref>导入默认的拦截器栈再添加自己的拦截器
     
国际化:
       页面中如何使用:
                      <s:text name="welcome"/>等价于<s:property value="%{getText('welcom')}"/>
                      <s:textfield key="name"/>等价于<s:textfield label="name"/>
                      <s:param ></s:param>为资源中的占为符赋值
        在action中使用:
                  addActionError(getText("error"));
         在校验文件中使用:
                    <param>
                    <message>${getText("error.name.null")}</message>

        注意:<s:i18n name="资源文件的名称">的使用

        1.全局资源文件:
              <constant name="struts.custom.i18n.resources" value="">
        2.
与spring的集成:
  <constant name="struts.objectFactory" value="spring" />
 
  


              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值