您的位置:首页 > 编程语言 > Java开发

Struts2 Hello World 实例

2015-08-11 09:15 375 查看
前面我们已经学习了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 并设置屏幕中给出其余的选项:



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




使用Eclipse搭建Struts2的开发环境


1创建用户库

将Struts2所需的包建成用户库,可以更加方便地进行管理和使用,这是一个好的习惯——编程从习惯开始。

1.选择菜单Window->Preferences->Java->Build Path->User Libraries。如图4:



(图4)

2.点击右侧的New…按钮,创建一个新的用户库,弹出如图5所示对话框:



(图5)

3.输入用户库的名称,如:Struts2,点击OK按钮,该对话框自动关闭。结果如图6所示:



(图6)

此时,右侧的按钮被点亮。

4.点击“Add JARS…”按钮,添加用户库所需的库文件,在Struts2中,至少要包含上文中提到的5个库文件。添加后效果如图7所示:(需要的jar包比以前2.1多了)



(图7)


2开发第一个Struts2应用程序——世界,你好

开发WEB应用程序,本文使用了MyEclipse插件。

入门教程总是以HelloWorld作为学习的第一步,自然笔者也不例外。本示例从游览器输入网址,提交请求后在页面中显示“世界,你好”的信息。

1.新建WEB工程,如图8所示:



(图8)

2.点击“Next”,输入工程名,如图9所示:



(图9)

3.点击“Finish”完成。

4.现在将Struts2的库导入到工程中,右击工程名称弹出快捷菜单,选择Build Path->Add Libraries…,如图10所示。



(图10)

5.从弹出的对话框中选择“User Libraries”,如图11所示。



(图11)

6. 单击下一步,我们看到,上文中创建的用户库出现在列表中,在“Struts2”前的复选框上打勾,点击“Finish”完成。如图12。



(图12)

现在复制下列文件从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 = INFO
org.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。这会给出以下画面:


输入一个值“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.yiibai.struts2.HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>

</package>
</struts>


标签:Struts2 Hello World 实例 前面 我们

本站文章除注明转载外,均为本站原创或编译

欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创优秀实例教程

转载请注明:文章转载自:易百教程 [http:/www.yiibai.com]

本文标题:Struts2 Hello World 实例

本文地址:http://www.yiibai.com/struts_2/struts_examples.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: