`
SevenRedCity
  • 浏览: 61000 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

(一)最简单的Struts2实例

阅读更多

前提环境:Linux(Ubuntu8)/Windows(XP)+JDK6/J2EE5(包括JDK6)+Ant1.7+Tomcat6.0+UltraEdit/EditPlus(java、javac、ant工具配置) (这些安装和配置在本人的blog中有详细介绍的文章)

http://struts.apache.org/download.cgi#Struts206
下载Full Distribution:
    * struts-2.0.11.1-all.zip (86mb) [PGP] [MD5]
并解压

 

问题:实现用户登录,并判断是否登录成功

解决方案:

----------------------------------------------------------

第一:手动建立项目结构(类似于MyEclipse创建Web Pro项目的后台操作)


1、新建文件夹结构如下:
  Struts2t
  |______WEB-INF
               |_______classes
               |_______src
               |_______lib

2、复制Tomcat里conf文件夹里的web.xml到WEB-INF文件夹下,并修改web.xml文件
web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    
</web-app>

 

3、将刚才下载解压后Struts2下的lib文件夹里
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.11.1.jar
xwork-2.0.4.jar

拷贝到Struts2t下lib文件夹里。


4、找到Strust2里src\apps\showcase\src\main\resources(就是解压后里面的实例)的struts.xml文件复制到Struts2t下classes文件夹下,并修改struts.xml文件
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>

</struts>

 

5、新建并手写一个build.xml(必须已经安装了Ant工具),并将build.xml放置到WEB-INF文件夹下 (MyEclipse内置了Ant)
build.xml文件:

<?xml version="1.0"?>
<project name="struts" basedir="." default="">

    <path id="classpath">
        <fileset dir="lib">
            <include name="*.jar"/>
        </fileset>
        <pathelement path="."/>
    </path>

    <target name="compile" description="Compile all source code">
        <javac destdir="classes" debug="true"
            deprecation="false" optimize="false" failonerror="true">
            <src path="src"/>
            <classpath refid="classpath"/>
        </javac>
    </target>

</project>
 

 

总结:目录结构如下
  Struts2t
  |______WEB-INF
               |_______classes
                
             |______struts.xml
               |_______src
               |_______lib
                               |_______ commons-logging-1.0.4.jar
                               |_______ freemarker-2.3.8.jar
                               |_______ ognl-2.6.11.jar
                               |_______ struts2-core-2.0.11.1.jar
                               |_______ xwork-2.0.4.jar              
               |_______web.xml
               |_______build.xml

----------------------------------------------------------

第二:编写核心代码

1、Struts2核心就是控制器,为Struts2添加核心Filter配置在web.xml文件中(拦截所有Web请求并由FilterDispatcher初始化)
web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    
    <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>
    
</web-app>




2、编写表现层login.jsp、seccess.jsp、failure.jsp和error.jsp页面并放在与WEB-INF同一级目录下。
login.jsp文件:

<%@ page language="java" contentType="text/html; charset=GBK" %>
<html>
    <head>
        <title>欢迎登录</title>
    </head>
    <body>
        <form action="Login.action" method="post">
            <table align="center">
                <caption><h1>欢迎登录</h1></caption>
                <tr>
                    <td>用户名:<input type="text" name="username" /></td>
                </tr>
                <tr>
                    <td>密码:<input type="password" name="password" /></td>
                </tr>
                <tr align="center">
                    <td colspan="2">
                        <input type="submit" value="登录" />
                        <input type="reset" value="重填" />
                    </td>
                </tr>
            </table>
        </form>
    </body>
</html>


success.jsp文件:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
    <head>
        <title>成功</title>
    </head>
    <body>
        您已经登录!
    </body>
</html>

 
failure.jsp文件:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
    <head>
        <title>失败</title>
    </head>
    <body>
        您登录失败!
    </body>
</html>

 
error.jsp文件:

<%@ page language="java" contentType="text/html; charset=GBK"%>
<html>
    <head>
        <title>异常</title>
    </head>
    <body>
        出现异常...
    </body>
</html>

 

3、编写POJO(Action)在src下新建文件夹org,在org下新建文件夹jee(这里是建立包名),并新建接口MyAction.java和实现类LoginAction.java放置在src/org/jee文件夹下。

MyAction.java文件:

package org.jee;

interface MyAction{
    
    public static final String SUCCESS = "success" ;
    public static final String FAILURE = "failure" ;
    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() ;
}

 
LoginAction.java文件:

package org.jee;

public class LoginAction implements MyAction{
    
    // 下面是Action内用于封装用户请求参数的连个属性
    private String username ;
    private String password ;
    
    public String getUsername(){
        return username ;
    }
    
    public void setUsername(String username){
        this.username = username ;
    }
    
    public String getPassword(){
        return password ;
    }
    
    public void setPassword(){
        this.password = password ;
    }
    
    // 处理请求的execute方法
    public String execute(){
        
        try{    
            if (getUsername().equals("scott") && getPassword().equals("tiger")){
                return "SUCCESS" ;
            }        
            else{
                return "FAILURE" ;
            }
        }
        catch(Exception e){
            e.printStackTrace() ;
            return "ERROR" ;
        }
        
    }
    
}

 


4、在struts.xml里配置Action,修改classes文件
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>
    <!-- Struts2的Action必须放在指定的包空间下定义-->
    <package name="struts2t" extends="struts-default">
        <-- 处理Login.action的请求,实现类为org.jee.LoginAction -->
        <action name="Login" class="org.jee.LoginAction">
            <-- 定义处理结果和资源之间映射关系 -->
            <result name="ERROR">/error.jsp</result>
            <result name="SUCCESS">/success.jsp</result>
        </action>
    </package>
</struts>

 
5、将Struts2t整个文件夹拷贝到Tomcat/webapps文件夹下

总结:目录结构如下
  Struts2t
  |______WEB-INF
               |_______classes
                              |______org
                                           |_____jee
                                                      |______MyAction.java
                                                      |______LoginAction.java
                              |______struts.xml

               |_______src
                              |______org
                              |_____jee
                                         |______MyAction.java
                                         |______LoginAction.java
                |_______lib
                              |_______ commons-logging-1.0.4.jar
                              |_______ freemarker-2.3.8.jar
                              |_______ ognl-2.6.11.jar
                              |_______ struts2-core-2.0.11.1.jar
                              |_______ xwork-2.0.4.jar    
               |_______web.xml
               |_______build.xml
 |______login.jsp
 |______success.jsp
 |______failure.jsp
 |______error.jsp

 

----------------------------------------------------------

三、测试

1、启动Tomcat6

2、http://localhost:8080/struts2 (进行测试)

3、

2008-5-27 15:48:23 org.apache.struts2.config.Settings getLocale
警告: Settings: Could not parse struts.locale setting, substituting default VM locale


解决方法:创建struts.properties这个文件,放在src目录下就可以了

struts.properties文件:

struts.locale=en_GB
 

 

4
0
分享到:
评论
4 楼 tao0749 2011-01-28  
我遇到的问题,和二楼的一样
3 楼 zhengchuanzhou 2010-08-27  
LoginAction中的execute函数,返回值把引号都去掉。文章写的很好,对入门的人非常有帮助。不过这个失误,多少有些让人失望,呵呵
2 楼 zfp289 2008-09-15  
你好!

我的环境是Ubuntu 8.4 + JDK 6 + Tomcat5.5,一步一步按照你的步骤做了,可点击Login.jsp中的“提交”后有一个问题:
----------------------
HTTP Status 404 - /Struts2t/Login.action

type Status report

message /Struts2t/Login.action

description The requested resource (/Struts2t/Login.action) is not available.
----------------------

我有一本李纲的“Struts2权威指南”,我按他的第一个入门例子做也是这个问题。

Google了一下,但没发现有用的方案。

请教这大概是什么原因,要怎么解决?非常感谢!
1 楼 lysmart_8 2008-05-31  
好,正要这个呢

相关推荐

    Struts2简单实例

    使用MyEclipse开发一个Struts2项目,最简单的入门实例,很好理解,希望对您有帮助。

    最简单的struts实例

    这个是本人测试通过的实例,希望对学习struts的新人有帮助。

    Struts开发实例.rar

     5、最简单的Struts程序;  6、Struts单选框的实现;  7、Struts复选框的实现;  8、Struts下拉框的实现;  9、如何实现Struts 数据库应用程序;  10、如何在Struts 数据库应用程序中实现分页显示;  ...

    最简单的Struts实例

    学习java的入门例子,本人第一次做的东西。

    struts2+Spring2.5 项目简单实例

    该注册程序是基本于struts2+spring2.5的一个注册程序,目的是为也让初学的人能够知道他的流程,里面附加有数据库,最适合初学的人了!

    struts+hibernate 简单的实例

    用myeclipse 开发的最简单的struts hibernate的实例。视频教程,带操作的。

    STRUTS 2完全学习手册.pdf

    《Struts 2完全学习手册》全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验...,最后以3个实例由简单到复杂地介绍Struts 2在实际应用中的使用...

    struts2 实例

    struts2框架应用,最简单,适合刚刚起步,陆续的在这个最简单的上面渐渐的添加应用,这个工程在原来的基础上添加struts.xml的多种配置方案和说明(doc)

    ajaxt json 调用struts2 action的实例(myeclipse 直接导入运行)

    ajaxt json 调用struts2 action的实例...最简单明了的实例,清晰的帮你弄清上述概念,运行简单,只需解压该包,然后Myeclipse中file - import - general - import existed project to workspace,即可调试运行

    struts2+jquery实例

    struts2,jquery,ajax,spring 最简单的测试文档

    Struts开发实例

    5、最简单的Struts程序 6、Struts单选框的实现 7、Struts复选框的实现 8、Struts下拉框的实现 9、如何实现Struts 数据库应用程序 10、如何在Struts 数据库应用程序中实现分页显示 11、如何在Struts 数据库应用程序中...

    example.rar struts2的入门实例程序

    这是struts2的入门实例,主要包括struts2.xml的配置,web.xml的配置,用一个简单明确的hello world 的登录程序交代了拦截器的使用,action的工作机制,struts2标签的使用方法等

    Struts 2权威指南

    笔者在介绍Struts 2框架时,既照顾到Struts 2初学者的能力,对每个知识点都给出简单的快速上手的示例;同时也考虑到开发者在日后开发中可能遇到的问题,详细讲解了每个知识点的各种用法,本书覆盖到Struts 2近80%的...

    Struts2完全自学手册(16-19)

    本书全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、...最后以3个实例由简单到复杂地介绍Struts 2在实际应用中的使用

    Struts2权威指南-src

    笔者在介绍Struts 2框架时,既照顾到Struts 2初学者的能力,对每个知识点都给出简单的快速上手的示例;同时也考虑到开发者在日后开发中可能遇到的问题,详细讲解了每个知识点的各种用法,本书覆盖到Struts 2近80%的...

    Struts2权威指南完整版

    本书是《Struts 2权威指南》的第二版,本书介绍的Struts 2是最新的Struts 2.1。...本书既给出了Struts 2入门级的示范实例,也详细讲解了Struts 2各个知识点及各个选项的详细用法,可以作为Struts 2框架的权威参考。

    简单实用struts+spring+hibernate配置实例--.rar

    简单实用struts+spring+hibernate配置实例--.rar 配置简单清晰 最适合初学着学习

    Struts 2 权威指南:基于WebWork核心的MVC开发 光盘

    笔者在介绍Struts 2框架时,既照顾到Struts 2初学者的能力,对每个知识点都给出简单的快速上手的示例;同时也考虑到开发者在日后开发中可能遇到的问题,详细讲解了每个知识点的各种用法,本书覆盖到Struts 2近80%的...

    struts, spring, hibernate集成实例

    一个最简单的的struts, spring, hibernate集成实例,需要MyEclipse开发环境.

    (2.0版本)自己写的struts2+hibernate+spring实例

    可以直接导入. &lt;br&gt;查看说明: 当前只是自己看struts2的一点点资料随便写的一个简单的增删改查程序.全当给所有打算使用struts2却没有接触过的人一个入门而已.我也是初看.才2天而已.所以各位高手就不要笑话了.愿...

Global site tag (gtag.js) - Google Analytics