04Struts2的配置文件

Struts2的配置文件


1.1 struts.xml中的标签详解

1.1.1     constant标签

作用:

    用于修改struts2中的常量

属性:

    name:指定常量的key

    value:指定常量的值

用法:

    <!-- 开启开发者模式 -->

    <constant name="struts.devMode" value="true"></constant>

1.1.2     package标签

作用:

    在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理动作类。便于模块化开发动作类。

属性:

扫描二维码关注公众号,回复: 6273986 查看本文章

    name

        包的名称。必须写。且必须唯一。

    extends:

        一般情况下需要继承struts-default包,但不是必须的。不过如果不继承的话,将无法使用struts2提供的核心功能。struts-default.xml中定义着struts-default这个包。而struts-default.xml是在我们的struts.xml加载之前加载。

    abstract

        把包声明为抽象包,抽象包就是用来被继承的。只要是没有<action>元素的包,就可以声明为抽象包。

    namespace

        名称空间。它的作用是把访问的URL按照模块化来管理。

        名称空间的写法:

              必须以/开头

              后面可以是字母和数组的组合,也可只有字母。

              如果有数字的话,数字不能作为/后面的第一个字符。

              当我们指定了名称空间之后,访问的URL就变成了:

                               名称空间+action标签的name属性取值

              例如:

                /n1/hello.action

                /customer/addCustomer.action

                /customer/editCustomer.action

                /linkman/findAllLinkMan.action

                /linkman/removeLinkMan.action

        名称空间的默认值是:""(struts2官方文档中提供的)

用法:

<package name="myDefault" extends="struts-default" abstract="true">

    <!-- 此处就可以定义公共配置,该公共配置应该是当前应用中的公共配置 -->

</package>

<package name="p1" extends="myDefault" namespace="/n1">

<action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello">

        <result name="success" type="dispatcher">/success.jsp</result>

    </action>

</package>

1.1.3     action标签

作用:

    建立动作名称和动作类以及动作方法的对应关系。

属性:

    name:指定的动作名称。和页面中url后面保持一种。注意此处不能后缀。动作名称必须唯一。

    class:指定的是动作类的全限定类名。

    method:指定的是动作方法名称

1.1 动作类的三种创建方式:

1.1.1     第一种:无侵入式创建(实际开发中基本不用)

/**

 * 我们的第一个动作类

 * 动作类的第一种创建方式:

 * 无侵入式的创建。

*/

public class HelloAction {

    /**

     * @return

     */

    public String sayHello(){

        System.out.println(this);

        System.out.println("HelloAction中的sayHello方法执行了。。。。");

        return "success";

    }

}

<action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello">

        <result name="success" type="dispatcher">/success.jsp</result>

</action>

1.1.2     第二种:实现Action接口的定义方式  (实际开发中用的也不多)

/**

 * 动作类的第二种创建方式:

 *  实现Action接口

 */

public class Hello2Action implements Action{

 

    @Override

    public String execute() throws Exception {

        System.out.println("Hello2Action的execute方法执行了............");

        return ERROR;

    }  

}

默认的动作方法是:execute(),所以可以不指定method属性

<action name="hello2" class="com.itheima.web.action.Hello2Action">

        <result name="success" type="dispatcher">/success.jsp</result>

</action>  

Action接口中的常量

    SUCCESS:一般多用于成功

    ERROR:一般多用于动作方法执行失败

    LOGIN:一般多用于返回登录页面

    NONE:一般用于不返回任何结果视图,和return null作用是一样的

    INPUT:一般多用于数据回显,也是struts2中数据回显时的默认返回值。             

1.1.3     第三种:继承ActionSupport (们实际开发中采用的方式)

/**

 * 动作类的第三种创建方式:

 *  继承ActionSupport

*/

public class Hello3Action extends ActionSupport{

}                 

<action name="hello3" class="com.itheima.web.action.Hello3Action">

    <result name="success" type="dispatcher">/success.jsp</result>

</action>

1.1.4     默认动作类:ActionSupport类

通过struts-default.xml中我们知道默认的动作类是ActionSupport,所以如果实现该类的execute方法,则可以不用指定class和method属性

<action name="defaultAction">

    <result name="success" type="dispatcher">/success.jsp</result>

</action>

1.2 配置action时使用通配符

1.2.1     原始全匹配配置方式:

<package name="user" extends="struts-default" namespace="/user" >

    <action name="addUser" class="com.itheima.web.action.UserAction" method="addUser">

            <result name="success">/success.jsp</result>

    </action>

    <action name="updateUser" class="com.itheima.web.action.UserAction" method="updateUser">

        <result name="success">/success.jsp</result>

    </action>

    <action name="deleteUser" class="com.itheima.web.action.UserAction" method="deleteUser">

        <result name="success">/success.jsp</result>

    </action>

    <action name="findUser" class="com.itheima.web.action.UserAction" method="findUser">

        <result name="success">/success.jsp</result>

    </action>

</package>

页面访问方式:

<a href="${pageContext.request.contextPath}/addUser.action">添加用户</a>

<a href="${pageContext.request.contextPath}/updateUser.action">修改用户</a>

<a href="${pageContext.request.contextPath}/deleteUser.action">删除用户</a>

<a href="${pageContext.request.contextPath}/findUser.action">查询用户</a>

 

Action类中的方法:

/**

 * 用户管理的动作类

*/

public class UserAction extends ActionSupport {

 

    public String addUser(){

        System.out.println("添加了用户");

        return SUCCESS;

    }  

    public String updateUser(){

        System.out.println("更新了用户");

        return SUCCESS;

    }  

    public String deleteUser(){

        System.out.println("删除了用户");

        return SUCCESS;

    }

    public String findUser(){

        System.out.println("查询了用户");

        return SUCCESS;

    }

}

1.2.2     使用通配符访问方式

1.2.3        第一种:单一通配符

<package name="user" extends="struts-default">

   <action name="*" class="com.itheima.web.action.UserAction" method="{1}">

        <result name="success">/success.jsp</result>

    </action>

</package>

页面访问方式和Action类中的方法不变

1.2.4        第二种:多个通配符组合使用

<package name="user" extends="struts-default">                                        <action name="*_*" class="com.itheima.web.action.{2}Action" method="{1}{2}">

        <result name="success">/success.jsp</result>

    </action>

</package>

 

页面访问方式:

<a href="${pageContext.request.contextPath}/add_User.action">添加用户</a>

<a href="${pageContext.request.contextPath}/update_User.action">修改用户</a>

<a href="${pageContext.request.contextPath}/delete_User.action">删除用户</a>

<a href="${pageContext.request.contextPath}/find_User.action">查询用户</a>

Action类中的方法不变。

1.2.5        第三种:动态方法调用

<!-- 开启动态方法调用 -->

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

<package name="user" extends="struts-default">                               

    <action name="user" class="com.itheima.web.action.UserAction" >

        <result name="success">/success.jsp</result>

    </action>

</package>

 

页面访问方式:

<a href="${pageContext.request.contextPath}/user!addUser.action">添加用户</a>

<a href="${pageContext.request.contextPath}/user!updateUser.action">修改用户</a>

<a href="${pageContext.request.contextPath}/user!deleteUser.action">删除用户</a>

<a href="${pageContext.request.contextPath}/user!findUser.action">查询用户</a>

Action类中的方法不变。

猜你喜欢

转载自www.cnblogs.com/Aha-Best/p/10905076.html