`
liunancun
  • 浏览: 34354 次
社区版块
存档分类
最新评论

最简单的Struts2使用例子[struts-2.3.20]

    博客分类:
  • Java
阅读更多
Struts2版本:struts-2.3.20
IDE工具:Eclipse Java EE IDE for Web Developers
WEB容器:apache-tomcat-7.0.40

解压struts-2.3.20-all.zip
apps是Struts的例子
docs是Struts的帮助文档
lib是Struts的发布包
src是Struts的源代码
我们关注的是apps目录,首先我们进入到apps目录。
可以看到几个war包,这几个都是简单的Struts例子。我们挑一个最简单的struts2-blank.war解压缩。解压出来就是一个普通的web项目结构。
我们关注的是2个文件web.xml、struts.xml和1个目录lib。

现在我们在Eclipse中新建WEB项目工程HelloStruts2,参照Struts的例子我们先来修改web.xml文件。
定义Struts2的filter配置:
<?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"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<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>


把项目部署到Tomcat并启动,报错是肯定的,因为我们还没有放Struts2的jar包到工程里面。
有些人会说,Struts2中的jar那么多,是不是全部要放进去呢,或者要挑哪些放?
当然如果你只是想把项目运行起来,也可以把刚才解压的例子struts2-blank中的12个jar包都加进去,或者可以把整个Struts2的jar包加进来,这都是可以的。
缺少jar包在项目启动的时候是会抛异常的,根据这些异常信息我们就可以知道要加入哪些jar包了,下面我们就一起来看看最简单的Struts2例子到底想要哪些jar包。
第一个异常:
java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

这个是我们在web.xml文件中配置的filter,这个class是在Struts2的核心包里面。
缺少的包是“struts2-core-2.3.20.jar”。
第二个异常:
java.lang.NoClassDefFoundError: com/opensymphony/xwork2/ActionContext

大家都知道Struts2是基于WebWork的,这个class就在WebWork的包里面。
缺少的包是“xwork-core-2.3.20.jar”。
第三个异常:
java.lang.NoClassDefFoundError: ognl/PropertyAccessor

缺少的包是“ognl-3.0.6.jar”。
第四个异常:
Caused by: java.lang.ClassNotFoundException: javassist.ClassPool

缺少的包是“javassist-3.11.0.GA.jar”。
第五个异常:
java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils

缺少的包是“commons-io-2.2.jar”。
第六个异常:
java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

缺少的包是“commons-lang3-3.2.jar”。
第七个异常:
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.RequestContext

缺少的包是“commons-fileupload-1.3.1.jar”。
第八个异常:
Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader

缺少的包是“freemarker-2.3.19.jar”。
到这里Tomcat已经可以正常启动了,这也就说明我们把Struts2必须的jar包都已经加到项目中来了。
Struts2至少需要下面8个jar包才可以正常运行。
struts2-core-2.3.20.jar
xwork-core-2.3.20.jar
ognl-3.0.6.jar
javassist-3.11.0.GA.jar
commons-io-2.2.jar
commons-lang3-3.2.jar
commons-fileupload-1.3.1.jar
freemarker-2.3.19.jar


现在我们来看例子中的最后一个文件struts.xml,这个是Struts2的配置文件。
在src目录下新建struts.xml文件,参照例子中的进行修改。
新建struts.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="hello" extends="struts-default">
		<action name="HelloStruts2" class="com.lnc.hello.struts2.HelloAction">
			<result>/hello.jsp</result>
		</action>
	</package>
</struts>


新建Action:
package com.lnc.hello.struts2;

public class HelloAction {
	public String execute() {
		return "success";
	}
}


新建jsp文件:
<!DOCTYPE html>
<html>
<head>
<title>Hello Struts2</title>
</head>
<body>
	<h1>Hello Struts2</h1>
</body>
</html>


现在可以将项目完整的部署到Tomcat中了,运行Tomcat,打开浏览器访问“http://localhost:18080/HelloStruts2/HelloStruts2.action”。
浏览器请求到服务器以后,第一个遇到的是Struts2的拦截器StrutsPrepareAndExecuteFilter,拦截器会结合Struts2配置文件struts.xml对请求进行分析,我们的请求.action前面是HelloStruts2,Struts2就会找看有没有对应的Action配置,找不到是会报错的,当然我们配置了HelloStruts2这个Action。
找到配置的Action以后,根据class属性可以知道处理这个请求的是HelloAction,Struts2就会调用HelloAction.execute()方法处理这个请求,当然也可以通过method属性指定处理请求的方法。
根据execute方法返回的字符串和对应Action中配置的result,Struts2就知道处理完成以后跳转到哪个视图。我们的execute返回的是success,配置文件中对应的Action配置的result是/hello.jsp,所以Struts2最后展示给我们的就是hello.jsp页面。
分享到:
评论

相关推荐

    struts2-config-browser-plugin-2.3.20.zip

    而"struts2-config-browser-plugin-2.3.20.zip"是一个Struts2框架的插件包,主要用于增强Struts2应用的配置管理能力。这个插件的主要功能是提供一个可视化的配置浏览器,帮助开发者更方便地浏览和管理Struts2应用的...

    struts-2.3.20-lib.zip

    Struts 2.3.20是Struts 2框架2.3系列中的一个重要版本,它包含了多项改进和优化,以提高性能和稳定性,同时提供了更多的功能和API供开发者使用。 Struts 2的核心设计原则是基于模型-视图-控制器(MVC)架构模式,它...

    struts-2.3.20-all

    总的来说,"struts-2.3.20-all"这个压缩包包含了完整的Struts 2框架资源,对于学习和开发基于Struts 2的应用程序非常有帮助。通过深入理解并熟练运用其核心特性,开发者可以构建高效、稳定且易于维护的Java Web应用...

    struts2-spring-plugin-2.3.20.jar

    Struts和spring整合必备包struts2-spring-plugin-2.3.20.jar

    struts2.3.20版本的jar包

    commons-fileupload-1.3.1.jar commons-io-2.2.jar commons-lang3-3.2.jar freemarker-2.3.19.jar javassist-3.11.0.GA.jar ognl-3.0.6.jar struts2-core-2.3.20.jar struts2-json-plugin-2.3.20.jar xwork-core-...

    struts-2.3.20使用包

    在您提供的"struts-2.3.20使用包"中,"lib"目录包含了开发Struts2应用所需的各种库文件。 **Struts2框架的核心组件及功能:** 1. **Action类**:这是业务逻辑处理的主要部分,实现了Action接口,处理用户请求,并...

    struts-2.3.20-docs

    struts-2.3.20-docs,该文档来自官网,经本人制作成chm格式,方便使用。

    最新版struts-2.3.20+hibernate-4.3.8+spring-4.1.4集成

    最新版struts-2.3.20+hibernate-4.3.8+spring-4.1.4集成,运行时需要修改db.properties里面的用户名和密码以及数据库名称

    struts-2.3.20-jfreechart插件源码

    `struts-2.3.20-jfreechart插件`是Struts 2框架的一个扩展,它整合了JFreeChart的功能,使得在Struts 2应用中生成动态图表变得简单易行。 首先,让我们深入了解Struts 2框架的核心特性: 1. **Action类**:在...

    freemarker-2.3.20-API文档-中文版.zip

    赠送原API文档:freemarker-2.3.20-javadoc.jar; 赠送源代码:freemarker-2.3.20-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.20.pom; 包含翻译后的API文档:freemarker-2.3.20-javadoc-API文档-中文...

    struts-2.3.20-josn插件源码

    Struts 2.3.20 是 Apache Struts 框架的一个版本,它是一个流行的、基于 MVC(Model-View-Controller)设计模式的 Java Web 应用开发框架。Struts 2 提供了用于构建企业级应用的结构,使得开发者能够更高效地管理...

    Struts 2.3.20升级日志

    最后,Struts 2.3.20 引入了一个名为 `org/apache/struts2/views/TagLibrary` 的新接口,虽然被标记为 @Deprecated,但这是一个过渡性的改变,可能是为了未来的版本改进。 在升级过程中,需要注意替换相应的 JAR 包...

    freemarker-2.3.20-API文档-中英对照版.zip

    赠送原API文档:freemarker-2.3.20-javadoc.jar; 赠送源代码:freemarker-2.3.20-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.20.pom; 包含翻译后的API文档:freemarker-2.3.20-javadoc-API文档-中文...

    Struts2.3.20_doc.chm

    根据Struts2.3.20源代码生成的格式为.chm的API帮助文档,希望对大家有所帮助

    struts-2.3.20.zip

    下面将详细讨论Struts 2的核心概念、特性以及与2.3.20相关的知识点。 1. **Struts 2框架核心概念**: - **Action类**:它是业务逻辑处理的主要载体,继承自`com.opensymphony.xwork2.ActionSupport`或其子类,处理...

    struts-2.3.20文档资料

    在"struts-2.3.20文档资料"中,我们可以深入理解这个版本的具体特性和使用方法。 1. **MVC架构**:Struts 2遵循Model-View-Controller设计模式,将业务逻辑、数据处理和用户界面分离开来,使代码更易于维护和扩展。...

    S2-045 struts2-core-2.3.32.jar 相关jar包,测试可用

    信息安全、网络安全在“互联网+”始终是一个非常重要的问题。没有网络安全就没有国家安全。近日,安恒信息安全研究院WEBIN... 修复方式:更新至Struts 2.3.32 或者 Struts 2.5.10.1 或 使用第三方的防护设备进行防护。

    struts-2.3.20.all

    "struts-2.3.20.all"这个压缩包很可能是包含了Struts 2框架的所有组件和相关资源,方便开发者在项目中快速集成和使用。 Struts 2的核心特性包括: 1. **Action与Result**:Action类是业务逻辑的载体,处理用户请求...

    struts2.3.20环境搭建

    struts2.3.20环境搭建详解.doc----介绍strus2.3.20环境搭建的官方文件

Global site tag (gtag.js) - Google Analytics