zoukankan      html  css  js  c++  java
  • 学习Struts--Chap03:struts.xml常用配置(基础)

    1、package属性

    • name:包名 用来唯一的指定一个package。package可以扩展,当一个package扩展自 另一个package时该package会在本身配置的基础上加入扩展的package 的配置 父package必须在子package前配置。
    • extends:包的继承关系,用于指出所继承的包的名字
    • namespace:包的命名空间 不同的命名空间下可以有同名的action,使用命名空间影响到url的地址。
    • abstract:抽像包 设置package的属性为抽象的 抽象的package不能定义action,在这个包里边可以设置一些拦截器之类的供别的包调用。

    2、action属性

    • name:action名 Action配置时一个Action可以被多次映射(只要action配置中的name不同
    • class:处理类 对应的类的路径
    • method:方法 用于明确指出调用Action中的那个方法 一般不指明的情况下默认执行execute()。

    实例演示:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
     3 <struts>
     4 
     5     <!-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->
     6     <include file="struts-default.xml"></include>    
     7     
     8    
     9     <package name="manage" extends="struts-default" namespace="/fore">
    10         <interceptors>
    11             <!-- 定义拦截器 只是定义
    12                 name:拦截器名称
    13                 class:拦截器类路径
    14              -->
    15             <interceptor name="timer" class="com.kay.timer"></interceptor>
    16             <interceptor name="logger" class="com.kay.logger"></interceptor>
    17             <!-- 定义拦截器栈 -->
    18             <interceptor-stack name="myInterceptorStack">
    19                 <interceptor-ref name="timer"></interceptor-ref>
    20                 <interceptor-ref name="logger"></interceptor-ref>
    21             </interceptor-stack>
    22         </interceptors>
    23         
    24         <!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器 默认的拦截器将无效 -->
    25         <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
    26         
    27         
    28         <!-- 全局results配置:通常一些文件的返回值都是一样的,比如success,error,input,needslogin等等,如果每一项都要重新配置,就显得配置文件很繁琐,这里可以采用struts2的全局result配置。 -->
    29         <global-results>
    30             <result name="input">/error.jsp</result>
    31         </global-results>        
    32        
    33         <action name="hello" class="com.kay.struts2.Action.LoginAction">
    34             <!-- 引用拦截器 真正的使用拦截器
    35                 name:拦截器名称或拦截器栈名称
    36              -->
    37             <interceptor-ref name="timer"></interceptor-ref>
    38              <interceptor-stack-ref name="myInterceptorStack"></interceptor-ref>
    39             <!-- 节点配置
    40                 name : result名称 和Action中返回的值相同
    41                 type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
    42              -->
    43          <result name="success" type="dispatcher">/talk.jsp</result>
    44          <!-- 参数设置 
    45              name:对应Action中的get/set方法 
    46          -->
    47          <param name="url">http://www.sina.com</param>
    48         </action>
    49     </package>
    50 </struts>

    3、分模块配置方法

      通常情况下一个实际的系统会包含很多的功能,使用分模块的配置方法便于开发和维护,同时也能使代码结构更加清楚。

    实例演示:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     
     8   <include file="cheliang.xml"></include>
     9   <include file="zichan.xml"></include>
    10 
    11 </struts>
     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     
     8   <package name="zichan" namespace="/zichan" extends="struts-default">
     9       <action name="zichan" class="com.java1234.action.ZiChanAction">
    10           <result name="success">${pageContext.request.contextPath}/success.jsp</result>
    11       </action>
    12   
    13   </package>
    14 
    15 </struts>
     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     
     8   <package name="cheliang" namespace="/cheliang" extends="struts-default">
     9       <action name="cheliang" class="com.java1234.action.CheLiangAction">
    10           <result name="success">${pageContext.request.contextPath}/success.jsp</result>
    11       </action>
    12   
    13   </package>
    14 
    15 </struts>

    4、使用通配符

      如果在一个Action中包含有非常多的方法,并且我们事先不清楚会调用哪一个方法,这个时候就能使用通配符实现动态调用。

    实例演示:

    struts.xml配置:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7   
     8   <package name="manage" namespace="/" extends="struts-default">
     9  
    10     <!--这是第一种通配符的用法:-->      
    11       <!-- <action name="student_*" class="com.java1234.action.StudentAction" method="{1}">
    12           <result name="success">success.jsp</result>
    13       </action>
    14       
    15       <action name="grade_*" class="com.java1234.action.GradeAction" method="{1}">
    16           <result name="success">success.jsp</result>
    17       </action> -->
    18       
    19     <!--这是第二种通配符的用法:--> 
    20       <!-- <action name="*_*" class="com.java1234.action.{1}Action" method="{2}">
    21           <result name="success">success.jsp</result>
    22       </action> -->
    23   
    24   </package>
    25 
    26 </struts>

    Action(StudentAction )类:

     1 package com.java1234.action;
     2 import com.opensymphony.xwork2.ActionSupport;
     3 public class StudentAction extends ActionSupport{
     4 
     5     private String name;    
     6     
     7     public String getName() {
     8         return name;
     9     }
    10     public void setName(String name) {
    11         this.name = name;
    12     }
    13 
    14     public String list()throws Exception{
    15         System.out.println("学生查找");
    16         name="学生查找";
    17         return SUCCESS;
    18     }    
    19     public String add()throws Exception{
    20         System.out.println("学生添加");
    21         name="学生添加";
    22         return SUCCESS;
    23     }    
    24     public String update()throws Exception{
    25         System.out.println("学生修改");
    26         name="学生修改";
    27         return SUCCESS;
    28     }    
    29     public String delete()throws Exception{
    30         System.out.println("学生删除");
    31         name="学生删除";
    32         return SUCCESS;
    33     }
    34     
    35 }

    前端页面代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>通配符1</h1>
    <!--下划线前边的student就是struts.xml配置文件中对应action的name名称,下划线后边的就是Action类中的实际方法名称-->
    <a href="student_list" target="_blank">学生信息查询</a>&nbsp;
    <a href="student_add" target="_blank">学生信息添加</a>&nbsp;
    <a href="student_update" target="_blank">学生信息修改</a>&nbsp;
    <a href="student_delete" target="_blank">学生信息删除</a>&nbsp;
    <h1>通配符2</h1>
    <!--下划线前边的student就是struts.xml配置文件中对应action的name名称(但是开头字母要大写),下划线后边的就是Action类中的实际方法名称-->
    <a href="Student_list" target="_blank">学生信息查询</a>&nbsp;
    <a href="Student_add" target="_blank">学生信息添加</a>&nbsp;
    <a href="Student_update" target="_blank">学生信息修改</a>&nbsp;
    <a href="Student_delete" target="_blank">学生信息删除</a>&nbsp;
    
    </body>
    </html>

    5、动态方法调用 

      同样使用场景是一个Action中包含有多个method时,事先不清楚程序会调用哪一个方法,使用ActionName!methodName的方法能够实现动态方法调用。当前的版本默认动态方法调用是不开启的,所以需要手动开启设置。

    实例演示:

    struts.xml配置文件:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     <!--开启动态方法调用-->
     8   <constant name="struts.enable.DynamicMethodInvocation" value="true" />
     9   
    10   <package name="manage" namespace="/" extends="struts-default">
    11       
    12       <action name="student" class="com.java1234.action.StudentAction">
    13           <result name="success">success.jsp</result>
    14       </action>
    15       
    16       <action name="grade" class="com.java1234.action.GradeAction">
    17           <result name="success">success.jsp</result>
    18       </action>
    19   
    20   </package>
    21 
    22 </struts>

    Action(StudentAction )类:同上这就不再展示。

    前端页面代码:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10 <h1>动态方法调用</h1>
    11 <!--这里的请求地址写的时候‘!’前边一定要是对应action的name属性名称,'!'后边是Action类里边的方法名称-->
    12 <a href="student!list" target="_blank">学生信息查询</a>&nbsp;
    13 <a href="student!add" target="_blank">学生信息添加</a>&nbsp;
    14 <a href="student!update" target="_blank">学生信息修改</a>&nbsp;
    15 <a href="student!delete" target="_blank">学生信息删除</a>&nbsp;
    16 </body>
    17 </html>

    <constant>节点用于设置一些struts2的常量,这些常量用于控制struts2的某些特性。相当于告诉struts,当它运行时,需要给你准备哪些功能。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
     3 <struts>
     4     <!-- 所有匹配*.action的请求都由struts2处理 -->
     5     <constant name="struts.action.extension" value="action" />
     6     <!-- 是否启用开发模式 -->
     7     <constant name="struts.devMode" value="true" />
     8     <!-- struts配置文件改动后,是否重新加载 -->
     9     <constant name="struts.configuration.xml.reload" value="true" />
    10     <!-- 设置浏览器是否缓存静态内容 -->
    11     <constant name="struts.serve.static.browserCache" value="false" />
    12     <!-- 请求参数的编码方式 -->
    13     <constant name="struts.i18n.encoding" value="utf-8" />
    14     <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
    15     <constant name="struts.i18n.reload" value="true" />
    16     <!-- 文件上传最大值 -->
    17     <constant name="struts.multipart.maxSize" value="104857600" />
    18     <!-- 让struts2支持动态方法调用 -->
    19     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    20     <!-- Action名称中是否还是用斜线 -->
    21     <constant name="struts.enable.SlashesInActionNames" value="false" />
    22     <!-- 允许标签中使用表达式语法 -->
    23     <constant name="struts.tag.altSyntax" value="true" />
    24     <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
    25     <constant name="struts.dispatcher.parametersWorkaround" value="false" />
    26 
    27     <package name="basePackage" extends="struts-default">
    28 
    29     </package>
    30 
    31 </struts>
  • 相关阅读:
    [2012山东ACM省赛] Fruit Ninja II (三重积分,椭球体积)
    [2012山东ACM省赛] The Best Seat in ACM Contest (模拟)
    [2012山东ACM省赛] n a^o7 !(模拟,字符替换)
    [ACM] Hrbustoj 1376 能量项链 (区间动态规划)
    红黑树 c++ 实现
    八大排序算法
    git 常用命令
    linux 学习笔记 day1
    挑战:数据提取 — 实验楼
    挑战:历史命令 — 实验楼
  • 原文地址:https://www.cnblogs.com/BaoZiY/p/10150163.html
Copyright © 2011-2022 走看看