最简单的Struts2使用例子[struts-2.3.20]
程序员文章站
2022-07-13 21:30:51
...
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配置:
把项目部署到Tomcat并启动,报错是肯定的,因为我们还没有放Struts2的jar包到工程里面。
有些人会说,Struts2中的jar那么多,是不是全部要放进去呢,或者要挑哪些放?
当然如果你只是想把项目运行起来,也可以把刚才解压的例子struts2-blank中的12个jar包都加进去,或者可以把整个Struts2的jar包加进来,这都是可以的。
缺少jar包在项目启动的时候是会抛异常的,根据这些异常信息我们就可以知道要加入哪些jar包了,下面我们就一起来看看最简单的Struts2例子到底想要哪些jar包。
第一个异常:
这个是我们在web.xml文件中配置的filter,这个class是在Struts2的核心包里面。
缺少的包是“struts2-core-2.3.20.jar”。
第二个异常:
大家都知道Struts2是基于WebWork的,这个class就在WebWork的包里面。
缺少的包是“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”。
到这里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文件:
新建Action:
新建jsp文件:
现在可以将项目完整的部署到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页面。
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页面。