对于Struts2的配置的教程网上有一大堆,但初次接触Struts2环境的配置难免有点手足无措之感(本人就是如此(⊙﹏⊙)b),下面就初步介绍一下在Eclipse for JavaEE这个IDE下如何配置Struts2.5这个版本吧。
Struts2和Tomcat下载链接
Struts2下载:http://struts.apache.org/download.cgi
Tomcat下载:http://tomcat.apache.org
从官网上下载后,直接解压到本地即可。注意保存路径不能有中文。
Struts必备组件
- 动作
创建一个包含完整的业务逻辑和控制用户,模型和视图之间的交互的动作类。 - 拦截器
如果需要,则创建拦截器,或者使用已存在的拦截器,这是控制器的部分。 - 视图
创建一个与用户交互的JSPs,它接受输入并显示最后的信息 - 配置文件
创建连接动作,视图和控制器的配置文件,配置文件有:struts.xml、web.xml、struts.properties。
创建动态Web项目
启动Eclipse for JavaEE,然后File->new->Dynamic Web Project,创建一个新的动态的Web项目。
接着一路Next过去,只是注意默认的动态Web项目是不带Web.xml这个配置文件的,这里在图示箭头打勾。
项目创建成功,在Project Explorer中可以看到创建成功的项目,同时WebContent下的WEB-INF目录下就自带了一个Web.xml配置文件。
然后从下载的Struts2文件夹中的lib目录中选择相应包,拖拽到WEB-INF下的lib下。下面列出了Struts2的核心库:
- struts2-core-2.5.2.jar
- commons-io-2.4.jar
- commons-lang3-3.4.jar
- commons-logging-1.1.3.jar
- commons-fileupload-1.3.2.jar–freemarker-2.3.23.jar
- ognl-3.1.10.jar
除了上面的库,我还加入了javassist-3.20.0-GA.jar、log4j-api-2.5.jar库,这两个库也是常用的。还有一个servlet-api.jar库是Tomcat中的lib,这主要是为了防止后面配置文件时出现Warning时导入的。
创建Action
当用户点击一个url时,Action类响应用户动作。执行一个或多个Action类中的方法并且返回一个字符串结果。基于结果的值,将呈现一个指定的JSP页面。
基于此,我们在Java Resources ->src目录下的com.learnweb.struts2包下,创建一个java文件HelloWorldAction.java文件。内容如下:
package com.learnweb.struts2;
public class HelloWorldAction{
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
创建视图
对于视图,需要一个JSP提交信息,当一个预定义动作发生时,这个页面会被Struts2页面框架调用,这种映射关系定义在struts.xml文件中,所以现在应该在WebContent文件夹下新创建一个JSP文件,名字叫做HelloWorld.jsp,内容如下:
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page contentType="text/html; charset=UTF-8"%>
Hello World
Hello World,
标签库指令告诉Servlet容器这个页面将使用struts2的标签,而且这些标签将在s之前。s:property标签显示动作类属性name>的值,它是由HelloWorldAction类的getName()方法返回的。
创建主页
还需要在WebContent文件夹中创建index.jsp。这个文件作为初始URL,用户可以点击它来告诉struts2框架调用HelloWorldAction类定义的方法,并且呈现HelloWorld.jsp视图。内容如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
Hello World
Hello World From Struts2
在struts.xml中将上面的视图文件中定义的hello动作映射到HelloWorldAction类和它的执行方法中。当用户点击提交按钮时,将引起 Struts 2 框架运行在 HelloWorldAction 类中定义的执行方法,根据方法的返回值一个适当的视图将被作为响应进行选择和呈现。
配置文件
struts.xml配置
这次让我们创建一个叫struts.xml的文件,在这个文件中我们可以配置一个将URL、HelloWorldAction类(模型)和HelloWorld.jsp(视图)连结起来的映射。该映射可以告诉我们Struts2框架哪个类将响应用户的动作(URL),这个类的哪个方法将被执行,根据方法返回的字符串结果将呈现什么视图。
所以我们应当在WebContent/WEB-INF/classes文件夹下创建struts.xml文件。默认情况下,WEN-INF下不会有classes文件夹,所以得自己创建一个。struts.xml的内容如下:
/HelloWorld.jsp
关于上述配置文件有几点需要注意。在这里我们设置常量 struts.devMode 为 true,是因为我们正工作在程序开发环境中,我们需要看到一些有用的日志信息。然后,我们定义了一个名为 helloworld 的包。当你想要把你的动作分成一组时,创建一个包是有用的。在我们的例子中,我们命名我们的动作为 “hello”,它对应着 URL /hello.action 和通过HelloWorldAction.class 进行备份。当 URL /hello.action 调用时,HelloWorldAction.class 的执行方法是运行的方法。如果执行方法的结果返回 “success”,然后我们把 HelloWorld.jsp 呈现给用户。
web.xml配置
web.xml是一个任何对struts2请求的入口点。Struts2应用程序的入口点是在web.xml中定义的过滤器。所以我们要在web.xml中定义一个org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter类。由于项目已经创建了一个默认的web.xml文件,现今将该文件改为:
Struts 2
index.jsp
struts2
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
struts2
/*
这里我们指定了index.jsp为welcome文件。然后配置了Struts2的过滤器来运行所有的URL(即任何匹配模式/*的URL)。
执行应用程序
右键Project->Run As->Run on Server
点击Finish之后,就可以看到下列画面:
还有一种方法就是在项目名称上右键,单击Export->WAR file导出一个WAR文件,然后在Tomcat的webapps目录下部署这个WAR。最后启动Tomcat服务器,并且尝试访问URL(http://localhost:8080/HelloWorld/) 也会得到上列画面。
最后
至此,struts2的配置就基本完成了。但目前自身对struts2框架了解还不够多,还需不断的学习。