1.struts2 配置文件 - struts.xml

在src目录下创建一个struts.xml文件

éç½®struts.xml

    
    
    
    
        
        
        
        
          
	     
             /WEB-INF/pages/input.jsp    
                
         
             /WEB-INF/pages/details.jsp  
          
      
      
 

详解:

  1. namespace属性
    默认namespace=”“,所以在访问该Action时,直接http://localhost:8080/应用名称/login.action就可以请求到该Action。
    当namespace=”/abc”时,再访问该Action时,其URL应为:http://localhost:8080/应用名称/abc/login.action。
    这样在大型项目中有很多个Action时容易分类区分。

    问题:如果namespace=”“,此时用http://localhost:8080/应用名称/abc/login.action访问该Action,会不会成功?
    答案是:会。因为当程序找不到相应的namespace时,它会自动去默认的namespace中去找Action。
  2. ActionSupport 是默认的 Action 类
    若某个 action 节点没有配置 class 属性, 则 ActionSupport 即为待执行的 Action 类. 而 execute 方法即为要默认执行的 action 方法,Action动作处理后返回值为success也是默认执行的路径,还有如下值
    1.struts2 配置文件 - struts.xml_第1张图片
    例:
    
        /testActionSupport.jsp
    
    等同于
    
        /testActionSupport.jsp
    

     

  3. struts2请求的扩展名问题
    1.默认的请求扩展名为 action 或 为空。
    1.struts2 配置文件 - struts.xml_第2张图片
    1.struts2 配置文件 - struts.xml_第3张图片
    即上面两种写法都会被struts.xml中对应的action所处理

    Struts2请求的扩展名默认设置在:
    1.struts2 配置文件 - struts.xml_第4张图片
    2.如果是如下方式就会报错
    1.struts2 配置文件 - struts.xml_第5张图片
    解决方式:如果要修改Struts2请求的扩展名可以在struts.xml中配置,如下:
    1.struts2 配置文件 - struts.xml_第6张图片
    此时,struts2请求的扩展名就只能是action 或者 do 了,修改其他常量值,于此类似。
  4. 通配符映射
    一个 Web 应用可能有成百上千个 action 声明. 可以利用 struts 提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系
    1. 实例
      如:
              
                  /WEB-INF/page/save.jsp
              
              
                  /WEB-INF/page/update.jsp
              
              
                  /WEB-INF/page/delete.jsp
              
              
                  /WEB-INF/page/get.jsp
              

      下面和上面配置的效果相同

              
                  /WEB-INF/page/{1}.jsp
              
      

       

    2. 通配符映射规则
      1. 若找到多个匹配, 没有通配符的那个将胜出
                
                    /WEB-INF/page/{1}.jsp
                
         
                
                
                    /WEB-INF/page/get.jsp
                
        
      2. 若指定的动作不存在, Struts 将会尝试把这个 URI 与任何一个包含着通配符 * 的动作名及进行匹配
        可见,uri匹配时是先精确匹配的,精确匹配不上时,再来对包含有通配符*的action进行匹配。
      3. 被通配符匹配到的 URI 字符串的子串可以用 {1}, {2} 来引用. {1} 匹配第一个子串, {2} 匹配第二个子串....
        
        
             /WEB-INF/page/{2}.jsp
        
        
      4. {0} 匹配整个 URI
                
                
                    /WEB-INF/page/Show.jsp
                
        
      5. 若 Struts 找到的带有通配符的匹配不止一个, 则按先后顺序进行匹配
                
                
                    /WEB-INF/page/{1}.jsp
                
         
                
                    /WEB-INF/page/{2}.jsp
                
        
                    
                
                    /WEB-INF/page/{2}.jsp
                
         
                
                    /WEB-INF/page/{1}.jsp
                
        
      6. 可以匹配零个或多个字符, 但不包括 / 字符. 如果想把 / 字符包括在内, 需要使用 **. 如果需要对某个字符进行转义, 需要使用\.**
  5. result
    1. result 是 action 节点的子节点
    2. result 代表 action 方法执行后, 可能去的一个目的地
    3. 一个 action 节点可以配置多个 result 子节点.
    4. result 的 name 属性值对应着 action 方法可能有的一个返回值.
    5. result 一共有 2 个属性, 还有一个是 type: 表示结果的响应类型
      1. type常用的有值有:
        1. dispatcher(默认的): 转发. 同 Servlet 中的转发
          注意:注意: 不能通过 type=dispatcher 的方式转发到一个 Action  
          
          /user/testAction.do
          
        2. redirect: 重定向 
          /atguigu/testAction.action
          

          注意:通过 redirect 的响应类型也可以便捷的实现 redirectAction 的功能!

        3. redirectAction: 重定向到一个 Action
          
          
               /user
               testAction
          
          
        4. chain: 转发到一个 Action
          
              /user
              testAction
          
          

           

    6. result 的 type 属性值在 struts-default 包的 result-types 节点的 name 属性中定义. 
      1.struts2 配置文件 - struts.xml_第7张图片

你可能感兴趣的:(Struts2)