Struts2入门-Hello Word实例

468 篇文章 0 订阅
317 篇文章 0 订阅

Struts2入门-Hello Word实例

Struts2入门-Hello Word实例-这个项目的目的是建立一个Web应用程序,收集用户的姓名,并显示“Hello World”,后面的用户名。

从上一节中学到了Struts 2的架构,当你点击一个超链接或提交一个Struts2的Web应用程序的HTML表单中,输入被发送到一个Java类操作的控制器,收集。执行该操作后,结果选择了一个资源来呈现的响应。资源通常是一个JSP,但它也可以是一个PDF文件,Excel电子表格,或 Java小应用程序窗口。

假设你已经建立开发环境。现在,让我们继续建立我们的第一个Hello World struts2项目。这个项目的目的是建立一个Web应用程序,收集用户的姓名,并显示“Hello World”,后面的用户名。我们将创建任何Struts2项目的四个组成部分:

SN 组件 & 描述
1Action
创建一个Action类,其中将包含完整的业务逻辑和控制的用户,模型和视图之间的相互作用。
2Interceptors
如果需要创建拦截器,或使用现有的拦截器。这是控制器的一部分。
3View
创建一个JSP来与用户交互的输入和提交最后的消息。
4Configuration Files
创建配置文件的动作,视图和控制器。这些文件是struts.xml中,web.xml中,struts.properties。

我要使用Eclipse IDE,所以下创建一个动态Web项目所需的所有组件。因此,让我们开始创建动态Web项目。

创建一个动态网页项目:

打开eclipse然后找 File > New > Dynamic Web Project 输入项目名称为:HelloWorldStruts2  在下面的屏幕中给出的选项,并设置其余部分:

选择在屏幕上的所有默认选项,最后打勾 Generate Web.xml deployment descriptor 选项. 这将创建一个动态Web项目在Eclipse中。

然后转到  Windows > Show View > Project Explorer , 你会看到你的项目窗口中的东西如下:


现在从Struts 2的lib文件夹下面的文件复制 C:\struts-2.2.3\lib 到我们的项目WEB-INF\lib 目录. 要做到这一点,你可以简单地将下降到WEB-INF\lib文件夹中的所有下列文件。

  • commons-fileupload-x.y.z.jar

  • commons-io-x.y.z.jar

  • commons-lang-x.y.jar

  • commons-logging-x.y.z.jar

  • commons-logging-api-x.y.jar

  • freemarker-x.y.z.jar

  • javassist-.xy.z.GA

  • ognl-x.y.z.jar

  • struts2-core-x.y.z.jar

  • xwork-core.x.y.z.jar

创建动作类(Action Class):

Action类是Struts 2的应用程序的关键,我们实现了大部分的Action类中的业务逻辑。因此,让我们创建一个的java文件HelloWorldAction.java下Java Resources > src 使用一个包名 com.tutorialspoint.struts2 用下面给出的内容.

Action类来响应用户的操作,当用户点击一个URL。 Action类中的一个或多个方法被执行,并返回一个字符串结果。基于结果的值,一个特定的JSP页面的呈现方式。

package com.tutorialspoint.struts2;

public class HelloWorldAction{
   private String name;

   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }

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

这是一个非常简单的类,一个名为“name”属性。我们有标准的“名称”属性的getter和setter方法,返回字符串“成功”的执行方法。

Struts2框架的HelloWorldAction类将创建一个对象并调用execute方法在响应用户的操作。把业务逻辑里面的execute方法,并最终返回的字符串常量。简单地说,为每个URL你必须执行一个动作类,或者可以直接使用这个类的名称作为操作名,也可以映射到一些其他的名称使用struts.xml文件,如下图所示。

创建视图(View)

我们需要一个JSP提交最后的消息,这个页面会被称为Struts 2框架中预定义的动作时,会发生此映射将在struts.xml文件中定义的。因此,让我们创建下面的JSP文件 HelloWorld.jsp在WebContent文件夹在Eclipse项目中. 要做到这一点,右键单击WebContent文件夹中的项目资源管理器,然后选择 New >JSP File.

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
   Hello World, <s:property value="name"/>
</body>
</html>

taglib指令告诉Servlet容器中,这个页面将使用Struts2标签,这些标签之前,将通过s。 s:property标签显示动作类‘name’的属性值,是调用HelloWorldAction 类的方法getName()

创建一个主页面:

我们还需要在WebContent文件夹中创建index.jsp页面文件。该文件将作为初始动作URL,用户可以直接点击告诉Struts 2框架调用的HelloWorldAction类定义的方法并渲染HelloWorld.jsp视图。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
   <h1>Hello World From Struts2</h1>
   <form action="hello">
      <label for="name">Please enter your name</label><br/>
      <input type="text" name="name"/>
      <input type="submit" value="Say Hello"/>
   </form>
</body>
</html>

hello动作作定义在上面的视图文件将被映射到HelloWorldAction类和它的执行方法使用struts.xml文件。当用户点击“提交”按钮,它会导致Struts2框架运行的执行方法定义在其中,HelloWorldAction类和方法的返回值的基础上,将相应的视图选择和呈现的一个响应。

配置文件

我们需要一个映射,以配合URL,HelloWorldAction类(模型),HelloWorld.jsp(视图)。映射告诉Struts 2框架的类将响应用户的操作(URL),这一类的方法将被执行,什么视图来显示字符串结果的基础上,该方法返回。

让我创建一个文件为: struts.xml. 由于Struts 2的要求struts.xml存在的类文件夹中。 因此创建struts.xml在 WebContent/WEB-INF/classes 目录中. Eclipse默认情况下不会创建 "classes" 文件夹, 因此你要自己去创建. 在WEB-INF文件上右键选择 新建上当. 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>
<constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">
     
      <action name="hello" 
            class="com.tutorialspoint.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>
   </package>
</struts>

上面的配置文件的几句话。在这里,我们设置不变struts.devMode 为 true, 因为我们正在努力开发环境,我们需要看到一些有用的日志消息。然后,我们定义了一个包叫做 helloworld. 创建一个包是有用的,当你想要将动作类放入其中。 在我们的例子中,我们的行动命名为“hello”,这是相应的URL/hello.action 和备份为HelloWorldAction.class. HelloWorldAction.class中execute方法是时运行的URL的方法 /hello.action被调用. 如果execute方法返回"success", 然后我们把用户引到HelloWorld.jsp.

下一步是创建一个web.xml文件这是任何请求发送到Struts2的一个切入点。Struts2的应用程序的入口点,将是一个部署描述符(web.xml)中定义的过滤器。

在web.xm文件中,我们定义一个过滤器org.apache.struts2.dispatcher.FilterDispatcher. web.xml文件需要创建WEB-INF文件夹下的WebContent。 Eclipse在创建项目已经创建了一个web.xml文件。所以,让我们只需要修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id="WebApp_ID" version="3.0">
   
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   <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>

我们已经指定index.jsp是我们主页的文件。我们已经配置Struts2的过滤器上运行的所有URL (i.e, any url that match the pattern /*)

启用详细的日志:

您可以启用完整的日志记录功能,通过创建工作和Struts2同时创建logging.properties文件在 WEB-INF/classes 文件,在属性文件中,请注意以下两行:

 
org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
                              java.util.logging.ConsoleHandler

默认logging.properties指定ConsoleHandler的路由记录到stdout和也的FileHandler。一个处理程序的日志级别阈值可以设置使用SEVERE,WARNING,INFO,CONFIG,FINE,FINER,FINEST或ALL。
就是这样。我们已经准备好来运行我们的Hello World应用程序使用Struts 2框架。

执行应用程序

右键点击项目名称,然后单击“Export > WAR File 创建一个WAR文件. 然后,这WAR部署在Tomcat的webapps目录下。最后,启动Tomcat服务器,并尝试访问URL: http://localhost:8080/HelloWorldStruts2/index.jsp. 

这会给输出以下画面:

输入一个值为:"Struts2"然后提交页面. 您可以看到下一页如下:

请注意,您可以定义索引的动作,在struts.xml文件,在这种情况下,你可以调用索引页http://localhost:8080/HelloWorldStruts2/index.action。检查下面你可以定义索引一个动作:

<?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>
<constant name="struts.devMode" value="true" />
   <package name="helloworld" extends="struts-default">

      <action name="index">
            <result >/index.jsp</result>
      </action>

      <action name="hello" 
            class="com.tutorialspoint.struts2.HelloWorldAction" 
            method="execute">
            <result name="success">/HelloWorld.jsp</result>
      </action>

   </package>
</struts>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值