就拿一个最简单的struts2的hello world为例来说明吧。
struts2是继承自ActionSupport类,所以说一个最简单的hello world是不能缺少该类的包的,也就是说不能缺少xwork-core-2.3.16.jar,由于我们要搭建的框架是struts2,所以说也不能缺少struts2-core-2.3.16.jar,否则这就不是struts2框架了。
综上所述,一个struts2框架必不可少的包文件有:
struts2-core-2.3.16.jar
xwork-core-2.3.16.jar
struts2框架的HelloWorld源码如下:
Struts2Test.java源码:
package com.test; import com.opensymphony.xwork2.ActionSupport; public class Struts2Test extends ActionSupport{ @Override public String execute() throws Exception { return SUCCESS; } }
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> <constant name="struts.devMode" value="true" /> <package name="default" extends="struts-default"> <action name="hello" class="com.test.Struts2Test"> <result name="success">/success.jsp</result> </action> </package> </struts>
web.xml源码:
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <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>
index.jsp源码:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> </head> <body> This is my JSP page. <br> </body> </html>
success.jsp源码:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <base href="<%=basePath%>"> <title>SUCCESS</title> </head> <body> SUCCESS! <br> </body> </html>
运行程序:
当出现下面的错误时:
严重: Exception starting filter struts2 java.lang.NoClassDefFoundError: ognl/PropertyAccessor
根据提示,这说明此时缺少的包文件是ognl,所以说我们要导入该包:
ognl-3.0.6.jar
重启,继续运行程序
当出现下面的错误时:
严重: Dispatcher initialization failed java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
根据提示,此时出现的错误是“调度程序初始化失败”,而实现该功能的包是javassist,所以说导入该包:
javassist-3.11.0.GA.jar
继续:
此时的错误提示为:
严重: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
根据提示,此时出现的问题是没有找到类,而该类是StringUtils,所以说我们要导入该类所在的包文件,由于提示中说该类在lang3包中,该包的上一级包是commons,所以根据提示,我们很容易找到下面的包,直接导入即可。
commons-lang3-3.1.jar
继续运行:
此时报的错误为:
警告: Could not create JarEntryRevision for [jar:file:/C:/apache-tomcat-6.0.20/webapps/Struts2Test/WEB-INF/lib/struts2-core-2.3.16.jar]! java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
根据提示,我们需要导入的包文件为:commons/io,也就是说,我们需要导入的包文件为commons-io,所以说此处导入的包文件为:
commons-io-2.2.jar
继续运行:
根据提示,此时报的错误是:
严重: Dispatcher initialization failed Unable to load configuration. - bean - jar:file:/C:/apache-tomcat-6.0.20/webapps/Struts2Test/WEB-INF/lib/struts2-core-2.3.16.jar!/struts-default.xml:64:179
根据提示,此时出现的问题仍然是前面出现的“调度程序初始化失败”,此时我们应该看其第二条信息,第一次出现“调度程序初始化失败”时,第二行报的错误是:“InvocationTargetException”,而现在再出现“调度程序初始化失败”时,第二行的报错信息为:“struts-default.xml:64:179”,所以说此时报的错误并不是上次的同一个错误,此时需要导入的包文件为:
commons-fileupload-1.3.jar
继续运行:
此时报的错误信息为:
严重: Dispatcher initialization failed Unable to load configuration. - bean - jar:file:/C:/apache-tomcat-6.0.20/webapps/Struts2Test/WEB-INF/lib/struts2-core-2.3.16.jar!/struts-default.xml:69:87
额。。。貌似刚才的问题没有被解决,但是仔细看第二行提示,此时的提示为:struts-default.xml:69:87,也就是说报的错误信息和刚才的其实是不一样的,也就是说这不是上一个问题,上一个问题已经被解决了,而这是一个新问题,此时导入的包文件为:
freemarker-2.3.19.jar
继续运行程序:
此时提示的信息是:信息:
Server startup in 7228 ms,
也就是说此时程序运行已经没有问题了。
接下来就是访问该程序的路径了:
http://localhost:8080/Struts2Test/
运行的结果:
当访问路径为:
http://localhost:8080/Struts2Test/hello
此时运行的结果为:
版权声明:本文为博主原创文章,未经博主允许不得转载。