struts.xml配置

1struts.xml的基础配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" namespace="/" extends="struts-default">
     <action name="login" class="com.iotek.action.LoginAction">
        <result name="error">/WEB-INF/content/error.jsp</result>
        <result name="success">/WEB-INF/content/welcome.jsp</result>      
        </action>
    </package>
</struts>

基础配置如上所示。

2.package
name:给当前的的包起名,唯一标记
namespace:命名空间,默认为/
extends:默认继承struts-default
3action
相对应的请求与映射文件,result:action请求时,所要跳转的页面,若在路径前加“/”则是绝对路径,否则表示相对路径
接下来讲一下Result的全局配置和局部配置**

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" namespace="/action" extends="struts-default">
  <action name="login" class="com.iotek.action.LoginAction">
       <result name="error">/WEB-INF/content/error.jsp</result>
       <result name="success">/WEB-INF/content/welcome.jsp</result>   
   </action>
   <action name="user_login" class="com.iotek.action.UserAction">
        <result name="error">/WEB-INF/content/error.jsp</result>
        <result name="success">/WEB-INF/content/welcome.jsp</result>
   </action>
  <action name="mod_login" class="com.iotek.action.ModelAction" method="checkLogin">
   <result name="error">/WEB-INF/content/error.jsp</result>
   <result name="success">/WEB-INF/content/welcome.jsp</result>
  </action>

  </package>
</struts>

如上所示,在多个action中,出现多条相同的result,造成代码冗余,所以在这种情况下可以将相同的result设置成全局,当有action被请求时,会先查找内部的result,在查找全局的sult。代码如下所示(将多条result放到中):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" namespace="/action" extends="struts-default">

        <global-results>
            <result name="error">/WEB-INF/content/error.jsp</result>
            <result name="success">/WEB-INF/content/welcome.jsp</result>
        </global-results>
        <action name="login" class="com.iotek.action.LoginAction">

        </action>
        <action name="user_login" class="com.iotek.action.UserAction">
        </action>
        <action name="mod_login" class="com.iotek.action.ModelAction" method="checkLogin">
        </action>

    </package>
</struts>

创建struts.xml的子文件
为了防止struts.xml文件过于臃肿,我们经常会创建它的子文件,然后在struts.xml中引用子文件。
首先在src根目录下创建子文件:名字自己随便起,我起的名字是:login.xml
login.xml中代码同上。
下面是如何在struts.xml中如何引用子文件。代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
   <include file="login.xml"></include>
</struts>

最后说一下action如何获得页面数据
主要有属性驱动和模板驱动两种方法
属性驱动:
1.将页面中组件的name,写到action类中,并且在类中实现 getter,setter方法
2.可以将属性封装为对象,然后在页面组件的name中调用对象.属性
代码 示例:

public class LoginAction {
    private String name;
    private String password;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String execute(){
        if(getName().equals("laogao")&&getPassword().equals("123456")){
            System.out.println("登录成功");
            return "success";
        }else{
            return "error"; 
        }

    }

}

或者如下所示(将属性封装为对象):

public class UserAction implements Action{
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String execute(){
        System.out.println("这里是UserAction:"+user.getName());
        if(user.getName().equals("laogao")){
            return "success";
        }else{
            return "error";
        }

    }

}

模板驱动:
1.需要Action实现ModelDriven接口,重写getModel()方法
2.类似于:对象封装
代码如下:

public class ModelAction implements Action, ModelDriven<User> {
  private User user=new User();
    @Override
    public String execute() throws Exception {
    if(user.getName().equals("laogao")){

        return "success";
    }else{
        return "error";
    }
    }
    @Override
    public User getModel() {

        return user;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值