strut 2.0的一个小demo

一、Struts2.0的配置,主要分三个步骤:(先快速配置一个简单例子)
       1首先加载Struts2.0所需的jar包。在WEB-INF文件夹下创建一个lib文件夹主要放的jar为

commons-logging-1.1.jar freemarker-2.3.8.jar ognl-2.6.11.jar struts2-core-2.0.8.jar

xwork-2.0.3.jar commons-fileupload-1.2.1.jar

       2 配置web.xml文件。
WEB-INF文件夹里面有个web.xml,新加“filter”和“filter-mapping” 节点。web.xml配置如下:

<filter>
  <filter-name>struts2</filter-name> 
  <filter- 

class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
  </filter>
<filter-mapping>
  <filter-name>struts2</filter-name> 
  <url-pattern>/*</url-pattern> 
  </filter-mapping>

在这里我们需要定义filter的名字,我定义的是叫struts2

       3 配置struts.xml文件。
最后一步在我们的src源文件里,需要加一个struts.xml,记住这里要和com包在同级目录下,内容如下

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="com" extends="struts-default"> 

        <action name="HelloWorld" class="com.HelloWorld">
            <result>/HelloWorld.jsp</result>
        </action>
        <!—这里是我添加的一个action --> 

    </package>
</struts>

struts2.0就算配置完成了,下我来说说我是怎么使用他的。

简单的HelloWorld跳转实例

首先我们需要有一个jsp页面“HelloWorld.jsp”,代码如下:

<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h2><s:property value="message" /></h2>
    </body>
</html>

我们可以看到这里我们看到如果是运行起来的话,页面里面应该显示message的值。
我们还需要一个HelloWorld.java类,代码如下:

package com;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
    public static final String MESSAGE = "Struts is up and running ";
    public String execute() throws Exception {
        setMessage(MESSAGE);
        return SUCCESS;
    }
    private String message;
    public void setMessage(String message) {
        this.message = message;
    }
    public String getMessage() {
        return message;
    }
}


代码很简单主要就是给message赋“Struts is up and running”值,千万别忘了需要继承

ActionSupport类即可。

二、action的学习
1)方法调用:
    理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现

Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此

类里的String execute()方法。此为默认的调用方法。
    若要自定义调用方法,有三种方法: 1.method单一方法,每一个action配一个方法  2.DMI(

动态调用)用action!method  3.通配符*_*,大幅度减少配置量 action_method
2)接收参数:
    1.属性接收
例子:

Login.java

import com.opensymphony.xwork2.ActionSupport; 

publicclass Login extends ActionSupport {
    private String name;
    private String password;
    private String message;
    public String getName() {
        return name;
    }
    publicvoid setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    publicvoid setPassword(String password) {
        this.password = password;
    }
    public String getMessage() {
        return message;
    } 

    @Override
    public String execute() {
        if("max".equals(name) &&"Secret".equals(password)) {
            message ="Welcome, "+ name;
        }else{
            message ="Invalid user or password";
        }
        return SUCCESS;
    }
}


Login.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>Login</title>
</head>
<body>
<s:form action="Login" method="POST">
    <s:textfield name="name" label="User name"/>
    <s:password name="password" label="Password"/>
    <s:submit value="Submit"/>
</s:form>
</body>
</html> 

    2.domain接收,更高级的POJO访问路径问题,将name和password从Login类中分离出来,到新建

类User中
Loginx.java

import com.opensymphony.xwork2.ActionSupport; 

publicclass LoginX extends ActionSupport {
    private User user;
    private String message;
    publicvoid setUser(User user) {
        this.user = user;
    }
    public User getUser() {
        return user;
    }
    public String getMessage() {
        return message;
    }
    @Override
    public String execute() {        
        if("max".equals(user.getName()) &&"secret".equals(user.getPassword())) {
            message ="Welcome, "+ user.getName();
        }else{
            message ="Invalid user or password";
        }
        return SUCCESS;
    }
} 

Login.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>Login</title>
</head>
<body>
<s:form action="LoginX" method="POST">
    <s:textfield name="user.name" label="User name"/>
    <s:password name="user.password" label="Password"/>
    <s:submit value="Submit"/>
</s:form>
</body>
</html> 

posted on 2011-05-04 18:35  SeQuence.Choi  阅读(321)  评论(0编辑  收藏  举报

导航