一.下载struts2.0.1

http://struts.apache.org/downloads.html,下载struts-2.0.1-all.zip,这个压缩包中包括了开发struts2所需的struts2-core.jar核心包以及其他struts2所依赖的JAR文件,另外另一些struts2的演示样例程序以及一些HTML的API文档。

二.试用struts2.0.1

1. 新建一个WEBproject,将struts-2.0.1-all.zip压缩包中的lib文件夹下的全部jar文件复制到WEBproject的/WEB-INF/lib文件夹下。

改动WEB-INF下的web.xml文件,添�例如以下内容:

<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>
    <!-- 这里是设置struts2标签,也能够不用设置,由于在struts-core.jar的META-INF文件夹下已经包括了
        这个tld文件,J2EE容器会自己主动地载入它 -->
    <jsp-config>
        <taglib>
            <taglib-uri>/s</taglib-uri>
            <taglib-location>
                /WEB-INF/tlds/struts-tags.tld
            </taglib-location>
        </taglib>
    </jsp-config>

在web.xml中定义了一个struts2的FilterDispathcer的filter,这个FilterDispatcher用来初始化struts2而且处理全部的WEB请求。

2. 新建一个登录页面login.jsp:

<%...@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%...@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<s:form action="login">
    <table align="center">
    <caption><h3>用户登录</h3></caption>
        <tr>
            <td><s:textfield label="用户名" name="username" /></td>
        </tr>
        <tr>
            <td><s:password label="密  码" name="password" /></td>
        </tr>
        <tr align="center">
            <td><input type="submit" value="登录"/></td><td><input type="reset" value="重填" /></td>
        </tr>
    </table>
</s:form>
</body>
</html>

3.编写Action login:

package org.rainlife.struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport ...{
    private String username;

    private String password;

    @Override
    public String execute() throws Exception ...{
        if (!(getUsername().equals("rainlife"))
                && !(getPassword().equals("rainlife"))) ...{
            return ERROR;
        } else ...{
            return SUCCESS;
        }
    }

    public String getPassword() ...{
        return password;
    }

    public void setPassword(String password) ...{
        this.password = password;
    }

    public String getUsername() ...{
        return username;
    }

    public void setUsername(String username) ...{
        this.username = username;
    }

}

在这个LoginAction类中,继承了ActionSupport。ActionSupport 是xwork2这个开源框架中的一个让action可以更加高速地工作的基类,它包括了action中很多可选服务的默认实现,可以让我们更加easy地自己定义一个action。

在这里我们定义了username和password两个属性并提供了对应的get/set方法。而且定义了一个execute()方法,该方法覆盖ActionSupport类中的execute()方法,能够看到,它仅仅是简单地返回一个字符串(”SUCCESS”或”INPUT”,而不像是在struts1中的返回一个ActionForward,这两个字符串也是在ActionSupport中定义的,在ActionSupport中定义了四个String属性,分别为SUCCESS,INPUT,ERROR,LOGIN。

这样,我们的action就已经完毕了,但还存在一个问题,怎么样让struts2知道我们这个自己定义的action,而且能够在HTML/JSP页面中将动作提交给action呢?答案是须要配置struts.xml文件。

4.配置struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <package name="struts2" extends="struts-default">
        <action name="login" class="org.rainlife.struts2.action.LoginAction">
            <result name="error">/error.jsp</result>
            <result name="success">/success.jsp</result>        
        </action>
    </package>
</struts>

在这个struts.xml配置文件里,能够发现和曾经的struts-config.xml已经全然不一样了,而在webwork的配置文件很类似。在这里,我们定义一个名name=”login”的action,通过class属性指向了刚才我们创建的LoginAction类,这样,就将我们定义的action告诉给了struts2。而在HTML/JSP页面中,能够通过这个”login”这个name来将动作提交给对应的Action。

假设在package中设置了namespace属性,如namespace=”/struts2”,则在JSP页面中应该将Form的action设置为”/struts2/login.action”。

5.创建error.jsp和success.jsp:

error.jsp

<%...@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>错误页面</title>
    </head>
    <body>
        您不能登录!
    </body>
</html>

success.jsp

<%...@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
    <head>
        <title>成功页面</title>
    </head>
    <body>
        您已经登录!
    </body>
</html>

Struts2会依据在LoginAction中返回的字符串(ERROR或SUCCESS)来和在struts.xml中<result>中的name属性所定义的字符串匹配,并跳转到对应页面。

Struts2学习笔记1的更多相关文章

  1. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  2. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  3. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  4. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  5. struts2学习笔记 ⑤

    拦截器初探 昨天临睡觉之前看了看拦截器,也在昨天的学习笔记里面胡诌诌了几句,今天就来好好的会会拦截器这个东西.实际上拦截器是一种模块实现的机制<起码我是这么体会的>(至于说书里面说体现了A ...

  6. [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...

  7. struts2学习笔记之二:基本环境搭建

    学习struts2有一段时间了,作为一个运维人员学习的时间还是挺紧张的,写这篇文件为了方便以后复习时使用 环境: MyEclipse 10 tomcat6 jdk1.6   首先建立一个web项目,并 ...

  8. 【Struts2学习笔记-4】包含其他配置文件

    包含其他配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLI ...

  9. 【Struts2学习笔记-3】常量配置

    Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...

  10. struts2学习笔记(4)——数据类型转换

    回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...

随机推荐

  1. Django里,如何更改ADMIN管理后台的显示

    今天在慢慢完善管理后台的一些体验, 第一是要扩展默认显示类,就是现在弄的. 第二是要让一些显示框更自然友好,这是下一次要作的. 在各个app的admin.py里,加入相关的MIXIN类 class S ...

  2. Asp.Net中的三种分页方式

    Asp.Net中的三种分页方式 通常分页有3种方法,分别是asp.net自带的数据显示空间如GridView等自带的分页,第三方分页控件如aspnetpager,存储过程分页等. 第一种:使用Grid ...

  3. javaweb学习总结(三十四)——使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  4. Java集合类之HashMap

    package com.test; import java.util.*; public class Demo7_3 { public static void main(String[] args) ...

  5. 选择排序SelectSort

    /** * * @author Administrator * 功能:选择排序法 */ package com.test1; import java.util.Calendar; public cla ...

  6. 存储过程系列之调试存储过程 SQL Server 2005

    在数据库中直接调试  在数据库中直接调试是调试SQL Server 2005的存储过程的最简单的方法. 在Visual Stuido的IDE中你可以选择单步执行存储过程,然后就可以一条语句一条语句地单 ...

  7. tlplayer for ios V1.1.2加密测试版本(修复1.1.1版本 for ios7播放闪退问题)

    此版本主要修复了ios7播放列表导致的程序闪退问题,方便大家测试加密与非加密视频. 此为tlplayer for ios版本,可以播放加密视频与非加密视频. 加密视频下载地址:http://blog. ...

  8. Covariance and Contravariance in C#, Part One

    http://blogs.msdn.com/b/ericlippert/archive/2007/10/16/covariance-and-contravariance-in-c-part-one.a ...

  9. 国内的一些开源镜像站汇总,EPEL源

    国内的一些开源软件的镜像站 汇总 CentOS6.5安装 EPEL 源 国内高校的开源镜像站 中国科学技术大学(debian.ustc.edu.cn)    上海交通大学(ftp.stju.edu.c ...

  10. spring jdbc.property的配置与使用

    jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/ssi1 username=root pass ...