简单的Struts2例子

(1)用MyEclipse建立一个Web Project,项目名称为myStruts2,结构如下图:

(2)导入struts2需要的包,我是把解压后的struts-2.3.16.3\apps\struts2-blank\WEB-INF\lib\下面所有的包都导入;

(3)修改web.xml,设置filter和filter-mapping:

<?xml version="1.0" encoding="GB2312"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
</web-app>

(4)在WebRoot\jsp\下面新建三个jsp文件:

input.jsp,用于输入信息

<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- struts2标签库调用声明 -->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>输入页面</title>
</head>
<body>
    <!-- form标签库定义,以及调用哪个Action声明 -->
    <s:form action="INPUT">
        <table width="60%" height="76" border="0">
                <!-- 各标签定义 -->
                <s:textfield name="name" label="姓名"/>
                <s:textfield name="phone" label="电话"/>
                <s:textfield name="mail" label="邮箱"/>
                <s:submit value="确定" align="center"/>
        </table>
    </s:form>
</body>
</html>

list.jsp,用于列出输入的信息

<%@ page language="java" contentType="text/html; charset=GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>输入成功</title>
</head>
<body>
    <!-- 取得session中用户名值 -->
        姓名:${sessionScope.name}<br>
        电话:${sessionScope.phone}<br>
        邮箱:${sessionScope.mail}
</body>
</html>

error.jsp,用于出错提示:

<%@ page language="java" contentType="text/html; charset=GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
   <title>输入失败</title>
</head>
<body>
        失败,请重新输入!
</body>
</html>

(5)创建struts.xml文件,设置package和Action:

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!-- Action所在包定义 -->
    <package name="myStruts2" extends="struts-default">
        <!-- 全局导航页面定义 -->
        <global-results>
            <result name="global">/jsp/error.jsp</result>
        </global-results>
    <!-- Action名字,类以及导航页面定义 -->
        <!-- 通过Action类处理才导航的的Action定义 -->
        <action name="INPUT"
            class="myStruts2.InputAction">
            <result name="input">/jsp/input.jsp</result>
            <result name="list">/jsp/list.jsp</result>
            <result name="error">/jsp/error.jsp</result>
        </action>
        <!-- 直接导航的的Action定义 -->
        <action name="index" >
            <result >/jsp/input.jsp</result>
        </action>
    </package>
</struts>

(6)创建InputAction类:

package myStruts2;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class InputAction extends ActionSupport {
    // Action类公用私有变量,用来做页面导航标志
    private static String FORWARD = null;
    // 姓名,电话,邮箱
    private String name;
    private String phone;
    private String mail;

    public String getName() {
        return name;
    }

    public void setName(String x) {
        this.name = x;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String x) {
        this.phone = x;
    }

    public String getMail() {
        return mail;
    }

    public void setMail(String x) {
        this.mail = x;
    }

    public String execute() throws Exception {

        // 属性值即JSP页面上输入的值
        name = getName();
        phone = getPhone();
        mail = getMail();

        try {
            // 判断输入值是否是空对象或没有输入
            if (name != null && !name.equals("")
                    && phone != null && !phone.equals("")
                    && mail != null && !mail.equals(""))
            {
                ActionContext.getContext().getSession().put("name", getName());
                ActionContext.getContext().getSession().put("phone", getPhone());
                ActionContext.getContext().getSession().put("mail", getMail());
                // 根据标志内容导航到操作成功页面
                FORWARD = "list";
            } else {
                // 根据标志内容导航到操作失败页面
                FORWARD = "error";
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return FORWARD;

    }

}

(7)部署到Tomcat后运行,结果如下:

简单的Struts2例子

时间: 2024-11-03 05:42:50

简单的Struts2例子的相关文章

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操

一个简单的KVO例子

一个简单的KVO例子. 两个界面,第一个界面显示名字和配偶(spouse)名字,第二个界面显示修改名字和配偶名字,返回时,将看到第一个界面的名字显示发生改变. 首先定义一个person类作为model. #import <Foundation/Foundation.h> @interface Person : NSObject @property (strong, nonatomic) NSString *name; @property (strong, nonatomic) NSString

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的.然后如果这段时间线程B拿到锁Y,也sleep()一段时间的话,那么等到两个线程都醒过来的话,那么将互相等待对方释放锁资源而僵持下去,陷入死锁.flag的作用就是让A和B获得不同的锁. public class TestDeadLock { public void run() { MyThread mt = new MyThread(); ne

Spring简单的小例子SpringDemo,用于初略理解什么是Spring以及JavaBean的一些概念

一.开发前的准备 两个开发包spring-framework-3.1.1.RELEASE-with-docs.zip和commons-logging-1.2-bin.zip,将它们解压,然后把Spring开发包下dist目录的所有包和commons-logging包下的commons-logging-1.1.1.jar复制到名为Spring3.1.1的文件夹下.那么Spring开发所需要的包就组织好了. 二.建立项目,导入包 在项目节点上右键,Build Path/ADD Libraries/U

编写一个简单的jdbc例子程序

1 package it.cast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.sql.Statement; 8 9 public class Base { 10 11 public static void main(String[] args) th

如何自学Struts2之Struts2例子实践[视频]

如何自学Struts2之Struts2例子实践[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",昨天晚上刚好有点时间,先做两个视频: http://v.youku.com/v_show/id_XODkyMTc0NDA0.html 明天就回家过年了,家里没网络,等回来上海再继续弄吧,先给大家拜个早年,祝新春快乐,阖家幸福,事事如意!

简单的struts2框架(三)

相对于上篇博客<简单的struts2框架(二)>的改变,action的动态调用: 在struts.xml方法调用 1 <action name="userAction_*" class="action.UserAction" method="{1}"> 2 <result name="success" type="dispatcher">/user/Success.jsp

一个简单的小例子让你明白c#中的委托-终于懂了!

模拟主持人发布一个问题,由多个嘉宾来回答这个问题. 分析:从需求中抽出Host (主持人) 类和Guests (嘉宾) 类. 作为问题的发布者,Host不知道问题如何解答.因此它只能发布这个事件,将事件委托给多个嘉宾去处理.因此在Host 类定义事件,在Guests类中定义事件的响应方法.通过多番委托的"+="将响应方法添加到事件列表中,最终 Host 类将触发这个事件.实现过程如下: 代码其实很少下面贴出来所有代码: QuestionArgs.cs view plaincopy to

C#中使用UdpClient类进行简单通信的例子

UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报. 因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接.但您可以选择使用下面两种方法之一来建立默认远程主机: 使用远程主机名和端口号作为参数创建 UdpClient 类的实例. 创建 UdpClient 类的实例,然后调用 Connect 方法. 可以使用在 UdpClient 中提供的任何一种发送方法将数据发送到远程设备. 使用 Receive 方法可以从远程主机接收数据.