本文来自慕课网:Struts2入门 ,网址:http://www.imooc.com/learn/464
使用Eclipse基于Maven的Struts2 调试心得
1.从 Maven 下载依赖包
有关如何在Eclipse中配置Maven请看Spring MVC 入门调试心得,这里不再赘述。
(1)通过配置 Maven 的依赖下载文件 pom.xml,下载以下几个开发Struts2 的必备jar包。
①groupId :org.apache.struts
artifactId : struts2-core
version : 2.3.24.1
②groupId : commons-logging
artifactId : commons-logging
version : 1.1.3
(2)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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<groupId>jackson_study</groupId>
<artifactId>struts2_study</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>struts2_study</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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.3.24.1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
</project>
2.web.xml文件的配置
在web.xml中需要添加两个节点,分别是filter和filter-mapping,主要是将 filter-mapping中的url-pattern中拦截的内容交给对应的filter去处理。这里filter和filter-mapping类似 servlet中的servlet 和servlet-mapping 这两个属性
(1)filter中需要添加两个子节点,分别是filter-name 和 filter-class。
filter主要是用于接收对应的filter-mapping所拦截的URL,并将其交给filter-class处理。filter与filter-mapping对应关系主要由filter中的filter-name和filter-mapping中的filter-name相匹配。这里filter-name 和 filter-class 类似 servlet中的 servlet-name 和 servlet-class。
① 这里配置filter-name是struts2,这个并不是唯一的。
② 这里配置filter-class是
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
,这个是默认的拦截器,以后还可以自定义拦截器。
(2)filter-mapping中需要添加两个子节点,分别是filter-name 和 url-pattern。filter-mapping主要是用于拦截相应的URL,并交给相应的filter处理。其中,url-pattern匹配URL的样式,“/*”表示匹配所有的URL样式。
① 这里配置的filter-name应和(1)中配置的filter-name相同,是struts2。
② 这里配置url-pattern是/*。
(3)web.xml的完整配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-appversion="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">
<display-name>Struts2 MVCStudy</display-name>
<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>
3.struts.xml文件的配置
(1)配置struts.xml文件的主节点struts前应先加载struts的dtd文件。加载位置位于xml文件头声明和struts节点中间,内容如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
(2)配置struts节点
struts节点需要配置package节点,package节点中需要配置action节点,action节点中需要配置result节点。具体来说就是:
<struts>
<package>
<action>
<result>
</action>
</package>
</struts>
接下来将具体介绍package,action,result 节点的配置。
(3)配置package节点
package节点有三个属性:name,namespace,extends。
① name属性配置的值为:default。
② namespace属性是配置要访问相应的.action页面的路径名,比如:namespace需要配置值为“/test”,此时访问也需要加上属性namespace的值,这里需要加上“/test”。“/”代表根路径。
③ extends属性配置的值为:struts-default。
(4)配置action节点
action节点有两个属性:name,class。
① name属性配置的是要访问的 .action页面的名称,访问此 .action 页面则会跳转到相应的 class 中进行处理。
② class属性配置的是访问name页面后所要进行处理的类,此处应配置为类的全名(即包括包名)。
(5)配置result节点
result节点需要配置name属性和节点文本内容。可以同时存在多个result节点。
① name属性配置的是经过action节点class属性的类处理后返回的字符串的值,根据返回的字符串的值不同,进入不同的result节点并选择不同的页面进行展示。
② 节点文本内容配置的是jsp页面的WebContent下的路径全名。
(6)struts.xml文件完整配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default"namespace="/test" extends="struts-default" >
<action name="helloworld"class="jackson_study.struts2_study.HelloWorldAction">
<result name="success">/result.jsp</result>
</action>
</package>
</struts>
4.控制器类的编写
控制器类主要是进行业务逻辑,并选择返回的相应的视图显示。此处控制器类需继承com.opensymphony.xwork2.ActionSupport类并重写其中的excute() 方法。
(1)新建一个类,并使类全名与struts.xml文件中的struts-->package --> action 节点中的class属性的值相同,此类需继承com.opensymphony.xwork2.ActionSupport 类。
(2)重写excute() 方法,返回的字符串值与struts.xml文件中的struts -->package --> action --> result 节点中的name属性的值相同。此时才能跳转到result指定的界面。
(3)控制器类的完整程序如下:
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldActionextends ActionSupport
{
@Override
public String execute() throws Exception
{
// TODO 自动生成的方法存根
System.out.println("Excuting Action");
return SUCCESS;
}
}
5.注意问题
(1)struts.xml文件需保存在src/main/resources/路径下,否则系统可能找不到此配置文件。