Struts2的核心配置

1,配置struts.xml文件


1.1,典型struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <!--  contant 元素用于常量的配置 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
	<constant name="struts.devMode" value="true"></constant>
    
    <!--  package 元素用于包配置 -->
    <package name="default" namespace="/" extends="struts-default">
        <!--  配置Action -->
        <action name="index">
            <!--  配置Result -->
            <result type="dispatcher">
                <param name="location">/index.jsp</param>
            </result>
        </action>
    </package>
    
    <!--  include 元素用于包含配置 -->
    <include file="example.xml"></include>
    
    
</struts>

<struts>元素是根元素 ,其他元素都放在<struts></struts>中
<constant>元素用于进行常量配置
<package>元素用于进行包配置,组织Action和拦截器
<include>用于在一个struts.xml文件包含其他配置文件

1.2, 常量配置

在struts.xml文件中配置常量:
      <constant name="" value="" />

name:改属性指定了常量的常量名
value:该属性指定了常量的常量值

实例代码:
<struts>
    <!-- 设置默认编码集为UTF-8 -->
    <constant name="struts.il8n.encoding" value="UTF-8"/>
    <!--  设置使用开发模式 -->
    <constant name="struts.devMode" value="true"></constant>
</struts>


struts配置常量还可以通过struts.properties 或web.xml文件配置
Struts2加载常量的顺序:
(1)default.properties
(2)struts-default.xml
(3)struts-plugin.xml
(4)struts.xml
(5)struts.properties
(6)web.xml

如果多个文件配置了同一个常量,则后一个文件的配置会覆盖前面的配置

1.3, 包配置

Struts2的核心组件是 Action和拦截器,它使用包来管理Action和拦截器。
每个包就是多个包和多个拦截器的集合。
<package name="" namespace=""  extends="" abstract="">
</package>
name:必填属性,他指定包的名字,此名字是被其他包引用的key
namespace:可选属性,改属性定义了包的命名空间
extends:可选属性,他指定该包继承自其它包(其它包中的Action和拦截器)
abstract:可选属性,他指定该包是否是一个抽象包,抽象包不能包含Action定义
extentds通常设置成 struts-default 这样就有了Struts2的默认Action和拦截器



1.4,包含配置

<include file=""/>
file:改属性指定包含配置的文件路径,相对路径或绝对路径

样例代码:

<struts>
   <!--  包含了四个配置文件 -->
   <!-- 相对路径 默认src文件夹下 -->
   <include file="struts-shop.xml"/>
   <include file="struts-user.xml"/>
   <include file="struts-shoppingcart.xml"/>
   <!--  绝对路径 -->
   <include file="cn/itcast/action/struts-product.xml"/>
</struts>
被包含的配置文件必须都是标准的Struts2配置文件


2,Action的配置

2.1,实现Action控制类    

Action作为框架的核心类,用于实现对用户的请求处理,Action类被称为业务逻辑控制类

Action类的实现分为三种:

1,POJO的实现

POJO的全称是 Plain Ordinary Java Object(简单的java对象),只要有一部分get/set方法的类就可以称为POJO

一般在这个POJO类中,要有一个公共无参的构造方法(默认构造方法就可以)和一个execute()方法

execute()是Action类的默认请求处理方法,定义格式如下:

public String execute()throws Exception{
return "success";
}


execute()方法要求:

1,方法权限修饰符为public

2,返回一个字符串,就是指定下一个页面的Result

3,方法没有参数

满足上述要求的POJO都算作是Struts2的Action的实现


2,实现Action接口

Action接口源码:

package com.opensymphony.xwork2;
public interface Action {
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}


该接口定义了五个常量和一个execute()方法

3,继承ActionSupport类

ActionSupport类本身实现了Action接口,是Struts2默认的Action接口实现类,所以继承该类就相当于

实现了Action接口

ActionSupport类还实现了很多其他接口来为用户提供更多的功能

该类还实现了Serializable接口,所以继承该类必须声明变量serialVersionUID

private static final long serialVersionUID=1L;



2.2,配置Action

<action name="" class="" mathod="">

</action>

name:必填属性,标识Action,指定了Action所处理请求的URL

class:可选属性,指定Action对应的实现类

method:可选属性,指定请求Action时的方法

实例代码:

 <action name="test" class="com.test.TestAction">
    <result name="success">/success.jsp</result>
 </action>


2.3,使用通配符


在使用method属性时,由于Action类中有多个业务逻辑处理方法,在配置Action时,就需要使用

多个action元素。在实现同样功能的情况下,为了减轻struts.xml 配置文件的负担,这是就要

借助通配映射

如下样例:

	<package name="user" namespace="/user" extends="struts-default" >
	    <action name="userAction_*"
	        class="cn.itcast.action.UserAction" method="{1}">
	        <result>/index.jsp</result>
	    </action>
	</package>

上述代码中*为通配符,{1} 为第一个* method视客户端发送的请求来决定为什么

如果发送/user/userAction_login.action 时 method属性就是login

如果定义为*_* 那class属性就是action.{1} meithod属性就是{2}

定义为* 那么就可以匹配任何请求

另外result也可以用通配符处理

<result>/{1}.jsp</result>


3,Action访问Servlet API

代更新....

4,Action处理请求参数

代更新....

5,Result结果类型

代更新....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值