Struts2起步:Struts 2 Hello World(XML版)

本章描述如何使用Maven创建一个简单的项目结构、下载所有的Struts 2依赖库、以及使用Struts 2接受用户输入并输出hello消息。

示例程序下载:1.Struts2-Hello-World-XML-Example.zip

工作环境:

  • Maven项目管理工具
  • Eclipse IDE
  • Struts 2.1.8

最终项目结构:

首先看一看本章的Struts 2项目结构,以防在稍后的步骤中忘掉。

1、项目目录结构

从Maven模板创建一个项目目录结构。在命令行,键入“mvn archetype:generate –DarchetypeCatalog=internal”,并选择19以生成一个简单的Java web项目模板(注意:这里使用的是Maven2.2.1。版本不同,这里的模板编号所代表的项目模板类型也可能不同) 。(如果不熟悉Maven的使用,请先参看教程《使用Maven创建一个Java Web应用程序项目》和《将一个Maven生成的Web应用程序项目转换为Eclipse支持格式的项目》)

定义所创建的项目Define value for groupId: : com.xuejava.common
Define value for artifactId: : Struts2Example
Define value for version: 1.0-SNAPSHOT: : com.xuejava.common
Define value for package: com.xuejava.common: : com.xuejava.common
...........
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------
[INFO] Total time: 2 minutes 45 seconds
[INFO] Finished at: Fri Jun 04 11:03:00 SGT 2010
[INFO] Final Memory: 8M/14M
[INFO] ------------------------------------------------------------------------
D:\workspace>

注意,默认创建的项目目录结构中,少了java源文件目录。在命令行下,使用如下的命令创建java源文件代码目录:

创建Java目录命令cd src
cd main
mkdir java

2、pom.xml-Struts 2 依赖

在pom.xml文件中添加Struts 2 信息“struts2-core”,这样Maven将自动下载所有Struts2 依赖库。pom.xml文件如下:

文件: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.xuejava.common</groupId>
  <artifactId>Struts2Example</artifactId>
  <packaging>war</packaging>
  <version>com.xuejava.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.1.8</version>
    </dependency>
 
  </dependencies>
  <build>
        <finalName>Struts2Example</finalName>
  </build>
</project>

3、转换为Eclipse项目

定位到Struts2Example目录下,使用如下的命令,将生成的项目模板转换为Eclipse IDE web项目。

maven转换命令    mvn eclipse:eclipse –Dwtpversion=2.0

同时,所有的Struts 2 依赖库也会被下载。稍后,只需要将其导入到Eclipse IDE即可进一步地开发。刚导入时,可能提示编译器版本号错误。因为默认情况下,Maven指定的jdk版本号为1.4,这可以通过项目的属性更改为1.6。

4、JSP视图页面

一个使用Struts 2标签的JSP登录页面,显示用户名、密码文本框和提交按钮。

login.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head></head>
<body>
<h1>Struts 2 Hello World 示例</h1>
 
<s:form action="Welcome">
    <s:textfield name="username" label="Username"/>
    <s:password name="password" label="Password"/>
    <s:submit/>
</s:form>
 
</body>
</html>

一个显示向用户显示欢迎页面的JSP视图页面。/p>

welcome_user.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head></head>
<body>
<h1>Struts 2 Hello World 示例</h1>

<h4>Hello <s:property value="username"/></h4>

</body>
</html>


注:Struts 1和Struts 2有非常相似的UI标签语法,只有在命名HTML元素方面有一点不同。

Struts 1<%@taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html:form action="Welcome">
    <html:text property="username"/>
</html:form>
Struts 2<%@ taglib prefix="s" uri="/struts-tags" %>
<s:form action="Welcome">
    <s:textfield name="username" label="Username"/>
</s:form>

5、Action,业务逻辑所在地

下面是一个简单的Struts 2 Action类,它被用来声明所有的内在业务逻辑。

WelcomeUserAction.javapackage com.xuejava.user.action;
 
public class WelcomeUserAction{
 
    String username;
 
    String getUsername() {
        return username;
    }
 
    void setUsername(String username) {
        this.username = username;
    }
 
    // 这里编写struts业务逻辑
   public String execute() {
        return "SUCCESS";
 }
}

在Struts 2中,Action类不要求实现任何接口或继承任何类,但是要求它必须创建一个execute()方法,以执行业务逻辑,并返回一个字符串值以指明重定向到哪里。

你可能会看到有的用户实现com.opensymphony.xwork2.Action类,不过它是完全自选的,因为类com.opensymphony.xwork2.Action仅仅提供了一些方便的常量值。

说明:Struts1的Action类要求继承自org.apache.struts.action.Action。但是Struts2 Action类不要求必须这么做,不过也允许实现com.opensymphony.xwork2.Action,以使用一些方便的常量,或者继承自com.opensymphony.xwork2.ActionSupport,以使用通用的一些默认的Action实现功能。

6、Struts配置文件

一个Struts配置文件将所有的东西链接在一起。该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.xuejava.user.action.WelcomeUserAction">
        <result name="SUCCESS">pages/welcome_user.jsp</result>
    </action>
</package>
 
</struts>

声明一个包,并内含action类。这些action类都可自我解释的,不过你也许会对一些新的package术语兴趣:

package术语package name=”user”

这只是一个包名,不必真正关注它。

namespace术语namespace=”/User”

它是被用来匹配“/User”URL模式。

Struts 2的命名空间和Struts 1多模块是等价的。

extends术语extends=”struts-default”

这意味着此包继承自struts-default包组件和拦截器,而struts-default包组件和拦截器是在struts-default.xml文件中定义的,位于struts2-core.jar文件的根下。

7、web.xml

配置Web应用程序部署描述符(web.xml)文件,以集成Struts 2。

部署描述符文件: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.FilterDispatcher</filter-class>
    </filter>
 
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 
</web-app>

8、运行程序

在Struts 2中,可以直接以后缀.action访问action类。URL:http://localhost:8080/Struts2Example/User/Login.action

URL:http://localhost:8080/Struts2Example/User/Welcome.action


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值