zoukankan      html  css  js  c++  java
  • 【web开发学习笔记】Structs2 Action学习笔记(一个)

    1、org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter准备和运行
    2、

      <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
        url-pattern约定熟成仅仅写/*,不是必需写*.action
    3、

    	<package name="default" namespace="/" extends="struts-default">
    	     <action name= "hello">
    	         <result>	
    	         	/Hello.jsp
    	         </result>
    	     </action>
        <span style="white-space:pre">	</span></package>
        namespace="/"和訪问的路径意义相应; 
        /hello.action
        訪问了action。给了我们result的结果。
        默认的action能够省略。
    4、关联structs源码和java docs
        jar文件右键代->properies->Java Source Attachment
        设置源代码
            D:/Program Files/struts-2.1.6/src/core/src/main/java
        javadoc 文档
            file:/D:/Program Files/struts-2.1.6/docs/struts2-core/apidocs/
        设置xml提示:
            a)window – preferences – 搜索 catalog – add 

            b)选择key type为URI

            c)key: http://struts.apache.org/dtds/struts-2.0.dtd

            d)location: 相应的dtd文件。位于struts-core包中,解压开。指定相应位置,如D:/Program Files/struts-2.1.6 libstruts2-core-2.1.6struts-2.0.dtd
    5、structs执行机制
        client -> url -> Http请求 -> Tomacat -> 查找相应的Webapplication -> web.xml -> filter doFilter方法->
    	  <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>
    
        ->參考struct.xml -> 查找相应的namespace -> 查找相应的action -> 查找相应的result -> 反馈result -> 请求Forwad给目标文件 
    	  <package name="default" namespace="/" extends="struts-default">
    		<action name="index">
    			<result>
    				/index.jsp
    			</result>
    		</action>
    	 </package>
    
    6、namespace决定了action的訪问路径,默觉得""。能够接收全部路径的action
        namespace能够写为/,或者/xxx,或者/xxx/yyy,
        相应的action訪问路径为/index.action,/xxx/index.action。或者/xxx/yyy/index.action.
        namespace最好也用模块来进行命名 

       <constant name="struts.devMode" value="true" />
        <package name="front" extends="struts-default" namespace="/front">
            <action name="index">
                <result>/Namespace.jsp</result>
            </action>
        </package>
        
         <package name="main" extends="struts-default" namespace="">
            <action name="index">
                <result>/Namespace.jsp</result>
            </action>
        </package>
        struct.xml分析
            package作用:避免action的重名和冲突问题;
            namespace="/front",必须以斜杠开头,namespace最好也用模块来进行命名;
            不写namespace,等效于namespace = "",意味着仅仅要找到action,全都交给
            namespace处理。
                    流程:先找相应路径下的action进行匹配。假设没有的话找namespace为空的action。
                    假设还没有找到action则会报错;
    7、 详细视图的返回能够由用户自定义的Action来决定;
        详细的手段是依据返回的字符串找到相应的配置项,来决定视图的内容;

    	<constant name="struts.devMode" value="true" />
    	<package name="front" extends="struts-default" namespace="/">
    		<action name="index" class="com.struts2.front.action.Index">
    			<result name="success">
    				/ActionIntroduction.jsp
    			</result>
    		</action>
    	 </package>
        详细Action的实现能够是一个普通的java类。里面有public String execute方法就可以或者实现
        Action接口;

        package com.bjsxt.struts2.front.action;
        import com.opensymphony.xwork2.Action;
        public class IndexAction1 implements Action {
    	@Override
    	public String execute() {
    		return "success";
    	}
        }
    
         配置分析:
                <class="com.bjsxt.struts2.front.action.Index">
                struct.xml -> 找到相应的class -> 实例化对象 -> 运行相应的execute()方法
        运行过程:
            读到xml -> action是class -> 找到class对象(每次訪问必须new一个对象) -> 
            当不配置class的时候,默认的class是ActionSupport。

            ActionSupport源代码

       public String execute() throws Exception {
    	        return SUCCESS;}

    
    

        最经常使用的是从ActionSupport继承。优点在于能够直接使用Struts2封装好的方法

        package com.struts2.front.action;
        import com.opensymphony.xwork2.ActionSupport;
        public class IndexAction2 extends ActionSupport {		
    	@Override
    	public String execute() {
    		return "success";}
        }

            原因:ActionSupport内部已经为我们封装了很多能够直接调用的方法,在子类中能够直接使用。

    以上是根据麻石兵云集了来自老师的教程。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    C# : WebRequest发起Http Post请求模拟登陆并cookie处理示例
    ASP.NET 缓存数据添加的六种方法。(Insert 与add 的区别)
    SQL Server 2005和SQL Server 2000数据的相互导入
    Web:缓存全解析
    Juqery : 漂亮实用的商品图片jquery tips提示框(无图片箭头+阴影)
    SQL:存储C#中DateTime类型Ticks的值
    Sql Server2005 TransactSQL 排名函数
    Asp.Net :CheckBoxList用法
    jquery.Ajax() 方法调用Asp.Net 后台方法
    ASP.NET: 缓存运用
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4708847.html
Copyright © 2011-2022 走看看