zoukankan      html  css  js  c++  java
  • struts2.xml的配置与技巧

     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     <constant name="struts.devMode" value="true" /><!-- 此栏是告诉机器是什么模式,为true的时候是开发模式,
     5                                                     相反就是非开发模式,好处是在更改配置文件后不用重启服务器,可以重载配置文件。 -->
     6     <package name="mypackage" extends="struts-default" namespace="/"> <!-- namespace="/"代表只能在根目录/Helloworld才指向这个action;如果namespace="/fill"代表只能在根目录/fill/HelloWorld才能指向这个action; -->       
     7         <action name="HelloWorld" class="tutorial.HelloWorld" ><!-- 静态访问: method="add",程序就会执行add方法,如果不加则默认执行execute方法;-->
     8             <result name="success">/HelloWorld.jsp</result>       <!-- 动态访问: method不加,地址栏:http://localhost:8080/exp_HelloWorld/HelloWorld!add;add是方法 -->
     9         </action>
    10         <action name="Login" class="tutorial.LoginOption">
    11             <result name="success">/HelloWorld.jsp</result>
    12         </action>
    13     </package>  
    14     
    15     <!--namespace可以不写,不写就是代表着namespace="",以此为例:它可以映射所有的以/HelloWorld结尾的action,路劲可以是http://localhost:8080/exp_HelloWorld/sdfdf/234df/HelloWorld;       
    16     <package name="mypackage" extends="struts-default"> 
    17         <action name="HelloWorld" class="tutorial.HelloWorld">
    18             <result name="success">/HelloWorld.jsp</result>
    19         </action>
    20     </package>   -->
    21 </struts>

    以上的是配置方法和解释,但是这些都显得很麻烦,下面的方法将会把配置变得非常的简单,而且以后项目里面就用这中方法就可以了:

     1 <struts>
     2     <constant name="struts.devMode" value="true" />
     3     <package name="actions" extends="struts-default" namespace="/actions">
     4         <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
     5             <result>/Student{1}_success.jsp</result>
     6         </action>
     7         
     8         <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
     9             <result>/{1}_{2}_success.jsp</result>
    10             <!-- {0}_success.jsp -->
    11         </action>
    12     </package>
    13 </struts>

    这里使用了通配符的方法,*号代表匹配全部,{1}代根据name中的*的位置顺序,这里从1开始匹配,在项目中可以根据需要来改换名字,但是一定要注意名字必须一样,一定要遵守“约定优于配置”的原则。

    1 <struts>
    2     <constant name="struts.devMode" value="true" />
    3     <include file="login.xml" /> <!--导入xml配置,这个用于导入其他xml的struts的配置,可以做到更好的项目管理-->
    4 </struts>

    在配置中写入<constant name="struts.i18n.encoding" value="UTF-8" />可以改变struts的编码方式,这个在struts乱码的时候要特别注意。

     1 <struts>
     2     <constant name="struts.devMode" value="true" />
     3     
     4     <package name="default" namespace="/" extends="struts-default">
     5         <default-action-ref name="index"></default-action-ref> 
     6         <!--默认的action,不管namespace后面敲入不存在的action或jsp文件什么的,就会自动跳转到默认的action,这样页面就会显示的比较友好;-->
     7         <action name="index">
     8             <result>/default.jsp</result>
     9         </action>
    10     </package>
    11 </struts>

     results的配置方法:

     1 <struts>
     2     <constant name="struts.devMode" value="true" />
     3     <package name="resultTypes" namespace="/r" extends="struts-default">
     4         <action name="r1">
     5             <result type="dispatcher">/r1.jsp</result>    <!--正常跳转,地址栏:/r/r1;-->
     6         </action>
     7         
     8         <action name="r2">
     9             <result type="redirect">/r2.jsp</result> <!--更改了地址栏:/r2.jsp;-->
    10         </action>
    11         
    12         <action name="r3">
    13             <result type="chain">r1</result> <!--先跳转r1的action,然后执行r1的action,但地址栏不变:/r/r3;-->
    14         </action>
    15         
    16         <action name="r4">
    17             <result type="redirectAction">r2</result> <!--先跳转r2的action,然后执行r2的action,但是地址栏变了:/r2.jsp;-->
    18         </action>
    19         
    20     </package>
    21 </struts>
     1 <struts>
     2     <constant name="struts.devMode" value="true" />
     3     <package name="user" namespace="/user" extends="struts-default">
     4         
     5         
     6         <global-results>                                <!--global-results:全局的results,但是相对于package的全局,如果想要在其他package中调用这个调用这个results可以用extends;-->
     7             <result name="mainpage">/main.jsp</result>    <!--作用精简代码啦~~-->
     8         </global-results>
     9         
    10         <action name="index">
    11             <result>/index.jsp</result>
    12         </action>
    13         
    14         <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
    15             <result>/user_success.jsp</result>
    16             <result name="error">/user_error.jsp</result>
    17         </action>        
    18     </package>
    19     
    20     <package name="admin" namespace="/admin" extends="user"> <!--extends:顾名思义是继承的意思,这里就是继承user的package所有配置;-->
    21         <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
    22             <result>/admin.jsp</result>
    23         </action>
    24     </package>
    25 </struts>
     1 <struts>
     2     <constant name="struts.devMode" value="true" />
     3     <package name="user" namespace="/user" extends="struts-default">    
     4         <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
     5             <result type="redirect">/user_success.jsp?t=${type}</result> 
     6             <!--由于type是redirect方式,所以客户端再次请求的是jsp页面,并不是action,所以并没有action的载值,
     7             故在此例中jsp不能通过“<s:property value="t"/>”或则${}的方式获取值;
     8             但是能通过环境值取值:“<s:property value="#parameters.t"/>”-->
     9         </action>        
    10     </package>    
    11 </struts>
  • 相关阅读:
    判断php变量是否定义,是否为空
    HTTP Client 编写
    推荐《冒号课堂——编程范式与OOP思想》
    一些免费的HTML编辑器
    如何判断mysql中数据表中两个列之间的相同记录和不同记录
    PostgreSQL 8.4, SQL Server 2008, MySQL 5.1比较
    JDBC纵览
    使用jdbc连接sql数据库
    关于PHP中变量的判定
    如何判断数据库中是否存在一个数据表
  • 原文地址:https://www.cnblogs.com/zhaojia-dream/p/3410848.html
Copyright © 2011-2022 走看看