当前位置:首页 > 开发 > 开源软件 > 正文

【Struts2一】Struts2 Hello World

发表于: 2014-08-27   作者:bit1129   来源:转载   浏览:
摘要: Struts2 Hello World应用的基本步骤 创建Struts2的Hello World应用,包括如下几步: 1.配置web.xml 2.创建Action 3.创建struts.xml,配置Action 4.启动web server,通过浏览器访问   配置web.xml <?xml version="1.0" encoding="

Struts2 Hello World应用的基本步骤

创建Struts2的Hello World应用,包括如下几步:

1.配置web.xml

2.创建Action

3.创建struts.xml,配置Action

4.启动web server,通过浏览器访问

 

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <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>

</web-app>

 

 Struts2通过过滤器Filter的方式处理指定URL格式的请求,

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

 的init方法默认从WEB-INF/classes目录下查找struts.xml文件并进行解析,所以,struts2.xml文件默认应该放到WEB-INF/classes目录下

 

创建Action

 

package com.tom.actions;

public class HelloWorldAction {
    private String message;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String executeAction() {
        setMessage("Welcome to the Struts2 world");
        return  "success";
    }
}

 

HelloWorldAction是一个Action,没有特别的东西,executeAction是在struts2.xml中指定来响应某个请求时要执行的方法,返回值必须是String类型(???),“success”这个返回值对应于strtus2.xml中定义的某个页面的转发(forward)

 

 

创建并配置struts.xml

Struts2默认从在WEB-INF/classes目录下加载struts.xml文件

 

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="/simple" namespace="/simple" extends="struts-default">
        <action name="helloworld" class="com.tom.actions.HelloWorldAction" method="executeAction">
            <result name="success">/htmls/user.jsp</result>
        </action>
    </package>
</struts>

 

解释:1.package

package类似于Java的包,表示将一个业务模块相关的Action组织到一起,比如针对用户管理模块的Action可以放到name="/user"的包中

2.namespace

namespace是包中所有定义的Action的访问url的共同前缀,比如根据上面的配置,HelloworldAction的访问url是http://ip:port/contextroot/simple/helloworld

3.extends

表示这个包继承自struts-default这个抽象定义的包,抽象包表示package有个属性abtract设置为true,抽象包不能定义任何Action,所有的package都应该直接或者简洁继承struts-default才能称为一个包,都泽就不是一个包,namespace等属性不能起到Action访问url前缀的作用

4.action

定义一个action,package底下可以定义多个action,name属性表示action的名字,也是访问Action的url的最后的一部分。class属性表示要执行的Action的类,method属性表示要执行哪个方法,不指定method属性,则默认执行execute方法

5.result表示结果的响应往哪forward,name值和action的方法返回之匹配,其中的/htmls/usr.jsp表示相对于web应用跟目录的相对路径,

 

 

创建user.jsp

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>User.jsp</title>
</head>
<body>
    Hello, ${message}
</body>
</html>

 

请求Action

http://localhost:8688/web/simple/helloworld

 

页面的url地址不变,页面显示Welcome to the Struts2 world

 

响应请求的Action的查找顺序

1.当请求http://localhost:8688/web/simple/helloworld时,能够找到HelloWorldAction

2.当请求http://localhost:8688/web/simple/A/B/C/D/helloworld时,同样能够找到HelloWorldAction,原因是struts2在查找响应请求的Action时,对于namespace有一个查找数序:

  a.首先查找值为simple/A/B/C/D的namespace,找到则找helloworld这个action,如果找到,则匹配上;否则,action查找失败,返回404

  b.如果查找不到值为simple/A/B/C的namespace,则找值为simple/A/B/C的namespace,找到则找helloworld这个action,如果找到,则匹配上;否则,action查找失败,返回404

  c.以此类推,最后查找值为simple的namespace,找到则找helloworld这个action,如果找到,则匹配上;否则,action查找失败,返回404(此时匹配了HelloWorldAction的配置,所以能够正确响应)

  d.如果simple这个namepace也没有找到,则查找默认的namespace(值为长度为零的字符串,namespace=""),如果没有找到这个默认的namespace,则返回404;如果找到默认的namespace,则在默认namespace下查找helloworld这个action,如果找到,则匹配上;否则,action查找失败,返回404

3. 根据上面的查找规则http://localhost:8688/web/XXX/simple/helloworld则匹配失败,即HelloWorldAction匹配不上,所以会返回404

4. 根据上面查找顺序的分析,不同package的name不能相同,同时不同package的namespace也不能相同,否则对同一个请求有可能出现有两个以上的Action匹配成功,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【Struts2一】Struts2 Hello World

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本教程基于netbeans6.9.1,tomcat是netbeans自带的6.0.26,已经经过测试。 1 新建java web项目,在WE
当你在Struts2 web应用中点击一个超链接或者提交一个表单输入并不是发送到另一个server page,而是
1.去官网下载Struts2.3.4.1的包,总大小约62M,用迅雷下载速度很快。 2.解压后如下图所示: 3.在ecl
前言   本文原文链接地址 http://aehyok.com/Blog/Detail/48.html   来学习一下ExtJs,今天主要
原文 http://www.cnblogs.com/aehyok/archive/2013/04/17/3025957.html 前言   来学习一下ExtJs,
1.建立Hello World程序 在登录SAP后,输入事务代码(TCODE):SE38 输入程序名后,单击创建按钮。(
现在以Struts2的方式来做一个Hello,world的实例程序。创建这样一个程序,至少需要下面这些元素: 1.
【专业web 3d、webGL、flash 3d程序开发:北京贝武易科技公司】 有疑问请联系我QQ:1539988257 贝武易
1. 安装开发环境 安装Visual Studio 2008 beta 2,当前下载版本是Beta 2。 你可以从http://msdn2.mic
1. 安装开发环境 安装Visual Studio 2008 beta 2,当前下载版本是Beta 2。 你可以从http://msdn2.mic
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号