Struts(5)简单实例HelloWorld

来源:互联网 发布:草图大师mac版 编辑:程序博客网 时间:2024/06/04 23:23
前面我们已经学习了Struts2 的架构,当点击一个超链接或提交一个HTML表单在Struts2 的 Web应用程序,输入所收集被发送到一个Java类称为操作控制器。当动作执行后,结果选择了一个资源来呈现响应。资源通常是一个JSP,但它也可以是一个PDF文件,Excel电子表格,或一个Java applet 窗口。

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

SN组件和说明1Action
Create an action class which will contain complete business logic and conrol the interaction between the user, the model, and the view.2Interceptors
Create interceptors if required, or use existing interceptors. This is part of Controller.3View
Create a JSPs to interact with the user to take input and to present the final messages.4Configuration Files
Create configuration files to couple the Action, View and Controllers. These files are struts.xml, web.xml, struts.properties.

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

创建动态Web项目:

启动Eclipse,然后再 File > New > Dynamic Web Project 输入工程名称为 HelloWorldStruts2 并设置屏幕中给出其余的选项:

Hello World Sturts2

选择在接下来的画面中的所有默认选项和最后检查 Generate Web.xml deployment descriptor 选项. 这将创建一个动态Web项目在Eclipse。现在去 Windows > Show View > Project Explorer, 会看到项目窗口的东西如下:

Hello World Sturts2

现在复制下列文件从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类是 Struts2 应用程序的关键,我们实现的大部分动作类中的业务逻辑。因此,让我们创建一个Java文件HelloWorldAction.java Java Resources > src 在下面给出的内容包名 com.yiibai.struts2 。

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

package com.yiibai.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”属性。我们有标准的“name”属性的getter和setter方法​​,并返回字符串“success”的执行方法。 

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

创建视图

我们需要一个JSP提交最后的消息,这个页面会被称为Struts2框架一个预定义的动作时,会发生这种映射将被定义在struts.xml文件。因此,让我们一起创造在Eclipse项目在WebContent文件夹下面的jsp文件helloWorld.jsp。要做到这一点,右键单击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容器,这个页面将使用Struts 2的标签,这些标签将之前由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类根据返回值的方法,将相应的视图选择和渲染作为响应。

配置文件

我们需要一个映射,以配合网址,HelloWorldAction类(模型),和的helloWorld.jsp的(视图)。映射讲述了Struts 2框架类将响应用户的操作(URL),这个类的方法将被执行,查看渲染基于字符串结果,该方法返回。

因此,让我们创建一个名为struts.xml中。由于Struts2 要求struts.xml中存在类“文件夹中。因此,创建struts.xml文件的WebContent/ WEB-INF/classes文件夹下。 Eclipse不创建“classes”文件夹,所以需要自己做。要做到这一点,在项目资源管理器的WEB-INF文件夹上点击右键并选择New > Folder。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.yiibai.struts2.HelloWorldAction"             method="execute">            <result name="success">/HelloWorld.jsp</result>      </action>   </package></struts>

上面的配置文件的几句话。在这里,我们设置为 true常量struts.devMode,因为我们正在程序开发环境,我们需要看到一些有用的日志消息。然后,我们定义了一个名为HelloWorld 包。创建一个包是有用的,当想一起进行分组动作。在我们的例子中,我们将我们的行动命名为“hello”,这是相应的URL /hello.action 和备份HelloWorldAction.class。执行HelloWorldAction.class方法是运行时URL /hello.action 调用的方法。如果执行方法的结果返回“success”,然后我们把用户到 helloWorld.jsp。

下一步是创建一个web.xml文件,这是一个Struts2的任何请求的入口点。Struts2应用程序的入口点,将是一个部署描述符(web.xml)中定义的过滤器。因此,我们将定义在web.xml中条目oforg.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(即任何URL匹配模式/ *)

启用详细日志:

可以启用完整的日志记录功能,而Struts 2的WEB-INF/classes下文件夹创建logging.properties文件。保持在属性文件中的以下两行:

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

默认logging.properties指定ConsoleHandler的路由记录到stdout,也是一个文件处理器。处理程序的日志级别阈值可以设置使用 SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST 或 ALL.

就是这样。我们已经准备好使用Struts 2框架来运行我们的Hello World应用程序。

执行应用程序

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

Hello World Input

输入一个值“Struts2”,并提交页面。应该看到页面如下:

Hello World Result

注意,可以定义索引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.yiibai.struts2.HelloWorldAction"             method="execute">            <result name="success">/HelloWorld.jsp</result>      </action>   </package></struts>
 
 
本文借鉴;http://www.yiibai.com/struts_2/struts_examples.html
0 0
原创粉丝点击