Struts 2 Hello World示例

在我以前的文章中,我编写了许多有关JAX-RS RESTEasySpring 3Hibernate和其他Java框架(例如mavenjunit)的示例和教程。我也有很多要求在struts 2上写一些东西。好吧,这里我从世界示例开始。在下一篇文章中,我将尝试涵盖涉及Struts 2的最大领域和概念。因此,请继续关注。

这篇文章的各节:
创建maven Web项目
Struts 2依赖项
web.xml更改
了解struts.xml配置文件
使用struts.properties文件
编写第一个操作类
编写视图文件
测试应用程序
源代码下载

创建Maven Web项目

我在这里不会吃太多空间。您可以阅读有关如何创建Maven Eclipse Web项目的更多详细信息。简而言之,使用以下命令。

mvn archetype:generate -DgroupId=com.how2codex.struts2.example -DartifactId=struts2example -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

cd struts2example

mvn eclipse:eclipse -Dwtpversion=2.0

Struts 2依赖项

我正在使用maven导入struts 2运行时依赖项。这样做的好处是,您无需手动记住和寻找所需的依赖项,一举就能获得所有信息。

	<dependency>
		<groupId>org.apache.struts</groupId>
		<artifactId>struts2-core</artifactId>
		<version>2.3.15.1</version>
	</dependency>

如果您想查看所有包含的内容,请查看下图:(获取最新版本的jar文件)

Struts 2 jar文件
Struts 2 jar文件

web.xml的更改

需要以某种方式将Struts插入您的Web应用程序。这意味着应将对应用程序的传入请求移交给strut进行处理。这是通过在web.xml文件中添加过滤器定义来完成的。该过滤器实质上将所有传入请求重定向到StrutsPrepareAndExecuteFilter,然后使用配置来处理该请求。

<!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>Archetype Created 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>

知道struts.xml配置文件

因此,StrutsPrepareAndExecuteFilter有一个要处理的请求。怎么办?它将使用该配置来知道如何处理特定请求。此配置在struts.xml文件中定义。该文件将具有特定于应用程序工作 Stream 及其操作处理程序的url映射。它还定义了输入/成功/错误视图。

<?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>
	<include file="struts-default.xml"/>
	<package name="default" extends="struts-default">
	    <action name="">
            <result>/WEB-INF/jsp/index.jsp</result>
        </action>
	   <action name="testAction" class="com.how2codex.struts2.example.web.TestAction">
	      <result name="input">/WEB-INF/jsp/index.jsp</result>
	      <result name="success">/WEB-INF/jsp/success.jsp</result>
	      <result name="error">/WEB-INF/jsp/index.jsp</result>
	   </action>
	</package>
</struts>

使用struts.properties文件

Struts使用一些默认属性在运行时配置其行为。您可以在stuts.properties文件中覆盖这些默认值。

#see http://struts.apache.org/2.0.14/docs/strutsproperties.html
struts.devMode=true
//message resource
struts.custom.i18n.resources=global

写作第一堂课

这很重要,因为您将在此处编写实际的应用程序逻辑。Struts 2操作通常扩展ActionSupport类,该类提供一些方法来覆盖和更改应用程序 Stream ,并在两者之间注入业务逻辑。

package com.how2codex.struts2.example.web;

import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class TestAction extends ActionSupport 
{
	private String name;
    private Date nowDate;

    @Override
    public void validate(){
        if (name==null || name.length()==0)
            addActionError(getText("error.enter.message"));
    }

    @Override
    public String execute() throws Exception {
        nowDate = new Date();
        return ActionSupport.SUCCESS;
    }
    public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getNowDate() {
        return nowDate;
    }
}

注意: Struts 2动作看起来像POJO类,因为它们也必须充当动作形式,这些动作形式也是Struts 1中的单独实体。

构成视图文件

这是一般步骤,涉及编写视图层,例如,在我们的情况下,我们正在编写jsp文件。您可以使用消息资源从属性文件中获取消息,稍后在i18n中提供帮助。

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Struts 2 hello world example</title>
        <s:head/>
    </head>

    <body>
        <h1><s:text name="welcome" /></h1>
        <s:if test="hasActionErrors()">
	        <div id="fieldErrors">
	            <s:actionerror/>
	        </div>
        </s:if>
        <s:form action="testAction" namespace="/" method="post" name="myForm" theme="xhtml">
            <s:textfield name="name" size="40" maxlength="40" key="your.message-label"/>
            <s:submit key="submit" />
        </s:form>
    </body>
</html>	

success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <title>Success Screen !!</title>
    </head>
    <body>
        <h2>Thank you for running this demo on <s:property value="nowDate" /></h2>
        <p>
            Your name recorded was: <h3><s:property value="name" /></h3>
        </p>
    </body>
</html>

他们正在使用的消息资源文件是:

global.properties

submit=Submit
your.message-label=Your Name
welcome=Welcome to Struts 2!
error.enter.message=Please enter your name !!

测试应用

现在好运行我们的hello world应用程序。让我们点击浏览器。

输入http:// localhost:8080 / struts2example /并按Enter

struts2-hello-world-1

按提交而不输入任何内容

struts2-hello-world-2

输入您的姓名,然后按提交

struts2-hello-world-3

这就是struts 2 hello world应用程序的全部朋友。如果要下载本教程的源代码,请遵循以下给定的下载链接。

学习愉快!

saigon has written 1440 articles

Leave a Reply