在此示例中,我们向您展示如何在Struts 2中创建一个hello world示例。
使用以下库或工具:
- Maven 3
- Eclipse 3.7
- 支撑杆2.3.1.2
1.最终项目结构
让我们回顾一下本教程的最终项目结构,以防您在以后的步骤中迷路。
2. Struts2依赖
使用Maven下载整个Struts2依赖项。 在pom.xml
添加“ struts2-core
”。
档案:pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.common</groupId>
<artifactId>Struts2Example</artifactId>
<packaging>war</packaging>
<version>com.mkyong.common</version>
<name>Struts2Example Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.1.2</version>
</dependency>
</dependencies>
<build>
<finalName>Struts2Example</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
3.转换为Eclipse项目
在命令提示符下编译并将其转换为Eclipse Web项目:
mvn eclipse:eclipse -Dwtpversion=2.0
查看Eclipse .classpath文件,下载了以下Struts2依赖项:
档案:.classpath
<classpath>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/asm/asm/3.3/asm-3.3.jar"/>
<classpathentry kind="var" path="M2_REPO/asm/asm-commons/3.3/asm-commons-3.3.jar"/>
<classpathentry kind="var" path="M2_REPO/asm/asm-tree/3.3/asm-tree-3.3.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.2.2/commons-fileupload-1.2.2.jar" />
<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar"/>
<classpathentry kind="var" path="M2_REPO/org/freemarker/freemarker/2.3.18/freemarker-2.3.18.jar"/>
<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.11.0.GA/javassist-3.11.0.GA.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="var" path="M2_REPO/ognl/ognl/3.0.4/ognl-3.0.4.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/struts/struts2-core/2.3.1.2/struts2-core-2.3.1.2.jar"/>
<classpathentry kind="lib" path="C:/Program Files/Java/jdk1.6.0_13/lib/tools.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/struts/xwork/xwork-core/2.3.1.2/xwork-core-2.3.1.2.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
4. JSP视图页面
一个JSP登录页面,使用Struts 2标记显示用户名和密码输入字段以及“提交”按钮。
FIE:login.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>Struts 2 Hello World Example</h1>
<s:form action="Welcome">
<s:textfield name="username" label="Username" />
<s:password name="password" label="Password" />
<s:submit />
</s:form>
</body>
</html>
File:welcome_user.jsp –一个JSP视图页面,用于向用户显示欢迎消息。
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head></head>
<body>
<h1>Struts 2 Hello World Example</h1>
<h2>
Hello
<s:property value="username" />
</h2>
</body>
</html>
Struts 1和Struts 2都具有非常相似的UI标签语法,只是在命名HTML元素方面稍有不同,例如:
Struts1
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html:form action="Welcome">
<html:text property="username"/>
</html:form>
Struts2
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="Welcome">
<s:textfield name="username" label="Username"/>
</s:form>
5.行动,将所有业务逻辑放在这里
一个简单的Struts2 Action类,用于声明内部的所有业务逻辑。
文件:WelcomeUserAction.java
package com.mkyong.user.action;
public class WelcomeUserAction{
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
// all struts logic here
public String execute() {
return "SUCCESS";
}
}
在Struts2中,不需要Action类来实现任何接口或扩展任何类,但是需要它创建一个execute()
方法以将所有业务逻辑放入其中并返回String值以告知用户重定向的位置。
注意
您可能会看到一些用户实现the com.opensymphony.xwork2.Action
类,但这是完全可选的,因为com.opensymphony.xwork2.Action
仅提供了一些方便的常量值。
注意
需要Struts1的Action类来扩展org.apache.struts.action.Action
。 但是Struts 2 Action类是可选的,但是您仍然可以为一些方便的常量值实现com.opensymphony.xwork2.Action
或将com.opensymphony.xwork2.ActionSupport
扩展为一些常用的默认Action实现功能。
5. Struts配置文件
一个将所有内容链接在一起的Strut配置文件。 xml文件名必须为“ struts.xml” 。
档案: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>
<package name="user" namespace="/User" extends="struts-default">
<action name="Login">
<result>pages/login.jsp</result>
</action>
<action name="Welcome" class="com.mkyong.user.action.WelcomeUserAction">
<result name="SUCCESS">pages/welcome_user.jsp</result>
</action>
</package>
</struts>
声明一个包并在其中扭曲操作类,这些操作类是不言自明的,但是您可能会对以下新标记感兴趣:
1.包名称=“用户”
只是一个软件包名称,不必太在意。
2.名称空间=“ /用户”
它用于匹配“ / User” URL模式。 请参阅本文– Struts 2名称空间示例和说明 。
注意
实际上,Struts2命名空间等效于Struts 1多个模块
3. extends =“ struts-default”
这意味着该软件包是对struts-default软件包组件和拦截器的扩展,它们在struts2-core.jar文件根目录的struts-default.xml文件中声明。
6. web.xml
配置Web应用程序部署描述符(web.xml)文件以将Struts2集成到您的Web项目。
文件web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Struts 2 Web Application</display-name>
<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>
7.运行
在Struts2中,您可以直接使用后缀.action访问动作类 。
http:// localhost:8080 / Struts2Example / User / Login.action
http:// localhost:8080 / Struts2Example / User / Welcome.action
下载它
下载它– Struts2-Hello-World-Example.zip (7 KB)
翻译自: https://mkyong.com/struts2/struts-2-hello-world-example/