Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 475|回复: 0

[struts学习]Struts2学习进阶--Hello World篇

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 06:14:33 | 显示全部楼层 |阅读模式
    说明:本文翻译自:
    struts-
       
         2.0.8
         -allstruts-2.0.8docsdocshello-world.HTML
                                                                                          
        根据笔者在学习过程中的实践增加了部分内容。    当你提交一个HTML表单到这个框架中的时候,输入并不是被发送到服务页,而是被发送到你提供的java类,这些类被称为Action。在这些Action执行完后,选择某一个资源来呈现返回结果,这个资源一般是页面,但也可以是PDF文件,或者是Excel文件,亦或是Java applet窗口。      假设你想要创建一个“Hello World”的例子来呈现欢迎信息,在你准备好开发环境后,为了创建一个“Hello World”的例子,你需要做如下三件事情:
      
      
      (本文来自:http://www.blogjava.net/amigoxie/archive/2007/07/27/132662.html

    1.       创建一个jsp页面来呈现欢迎信息; 2.       创建一个Action类来创建信息; 3.       在配置文件中配置action和页面的映射关系。 注意:为了创建这个组件,我们将工作流分成几乎无人不晓的三部分:视图、模型和控制器。分离这三部分的原因是当系统变得越来月复杂的时候,我们能够更好的管理。 一.准备工作  建立web工程,其中工程名为tutorial,在WebRoot下引入struts2的lib下的如下4个包:  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 在web.xml文件中增加struts2的FilterDispatcher,修改后的web.xml如下:
      
          
          
           <?
           xml version="1.0" encoding="UTF-8"
           ?>
          


           <
           web-app
           id
           ="WebApp_9"
            version
           ="2.4"
            xmlns
           ="http://java.sun.com/xml/ns/j2ee"
            xmlns:xsi
           ="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation
           ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
           >
          
       
           <
           display-name
           >
           tutorial
           </
           display-name
           >
          
       
           <
           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.html
           </
           welcome-file
           >
          
       
           </
           welcome-file-list
           >
          

           </
           web-app
           >
          


           二.   代码  首先,我们需要一个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
           >
           接着,我们需要一个Action类来创建信息,代码如下:
          
          
           package
            tutorial;

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

           第三步,我们需要在配置文件中进行相应配置来将两者联系起来。让我们编辑src下的struts.xml文件,该文件内容如下:
          
          
           <!
           DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
           >
          

           <
           struts
           >
          
       
           <
           package
           name
           ="tutorial"
            extends
           ="struts-default"
           >
          
            
           <
           action
           name
           ="HelloWorld"
            class
           ="tutorial.HelloWorld"
           >
          
                
           <
           result
           >
           /HelloWorld.jsp
           </
           result
           >
          
            
           </
           action
           >
          
            
           <!--
            Add your actions here
           -->
          
       
           </
           package
           >
          

           </
           struts
           >
          

           代码已经完成,让我们来尝试运行它。部署该应用程序并打开http://localhost:8080/tutorial/HelloWorld.action,我们可以看到标题栏为:Hello World,并且显示“Struts is up and running!”的页面呈现在我们面前。 三.代码是如何工作的?  你的浏览器向Web服务器发送了的http://localhost:8080/tutorial/HelloWorld.action(注:tutorial为部署在Tomcat中的的项目名称)的URL请求后,服务器做了如下工作: 1. 容器接收到了Web服务器对资源HelloWorld.action的请求,根据web.xml中的配置,服务器将包含有.action后缀的请求转到org.apache.struts2.dispatcher.FilterDispatcher类进行处理。这个FilterDispatcher是框架的一个进入点; 2.框架在struts.xml配置文件中找到名为HelloWorld的action对应的类。框架初始化该Action并且执行该Action类的execute方法; 3.execute方法将信息放入message变量中,并返回成功。框架检查配置以查看当返回成功时对应的页面。框架告诉容器来获得请求返回的结果页面HelloWorld.jsp; 4.在HelloWorld.jsp执行完后,<s:property value="message" />标签调用HelloWorld的Action类中的getMessage方法来获得message的值,并将合并了值的页面呈现给用户; 5.一个纯粹的HTML页面显示在用户的浏览器上。 四. 测试Action  测试Action很简单,以下是上述HelloWorld的Action类的测试类的代码:
          
          
           package
            tutorial;

           import
            junit.framework.TestCase;

           import
            com.opensymphony.xwork2.Action;

           import
            com.opensymphony.xwork2.ActionSupport;

           public
            
           class
            HelloWorldTest
           extends
            TestCase
          
           {
    public void testHelloWorld() throws Exception {
        HelloWorld hello_world = new HelloWorld();
        String result = hello_world.execute();
        assertTrue("Expected a success result!",
          ActionSupport.SUCCESS.equals(result));
        assertTrue("Expected the default message!",
          HelloWorld.MESSAGE.equals(hello_world.getMessage()));
        }
    }
          

           五.需要记住的东西  本框架利用Action来处理HTML的表单以及其余请求。Action返回一个结果的名字字符串,例如SUCCESS、ERROR以及INPUT等,从struts.xml中获取映射信息。一个给定的结果字符串将选择一个页面或其他资源(图片或PDF)来返回给用户。  当一个jsp被载入的时候,通常有一些动态变化的元素需要Action来载入。为了更加容易的显示动态数据,本框架提供了一些可以跟HTML配合使用的标签。 六.问题汇总  对于出现启动失败,例如Cannot locate the chosen ObjectFactory implementation: spring等错误的朋友,请仔细检查你引入的包。关于需引入的包,请参见第一节(准备工作)。也希望遇到其余问题的朋友留言或发Email给我,在此进行汇总。  下一篇:使用Struts2的标签。
          
            
            
             
             

               
             

               
             
            
          
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 07:26 , Processed in 0.298266 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表