我用的struts包是struts-2.3.24.1,是比较新的版本,第一次刚开始接触struts的时候感觉是很兴奋的,把包下载下来后,看着教程安装部署,但是第一次运行helloword的时候竟然报错了,感觉写的跟教材的一摸一样,就是不知道为什么会报错。研究了一早上,也没研究出来,很让人头疼,后面有点想放弃,但是还是坚持了下来。终于把它配好了。在这儿写下我的配置过程,希望让大家少走弯路。

struts2和struts1上配置区别还是比较大的,但是如果配好后,会发现其实两个差不多。

struts2是用过滤器(Filter)来当容器的。

一、配置过程

首先在eclipse中创建一个项目,项目名随便起,比如叫hellostruts,创建好项目后,在WEB-INF下面的web.xml中需要创建过滤器,代码如下.

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
	<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>


这儿也没啥主意的,比较简单,配好就可以,我这儿filter-class写的类可能与网上有些地方说的不一样,可能我这个版本比较新吧,这个可以参照struts-2.3.24.1-all.zip这个压缩包里面的apps文件夹下面的一些项目配置。

xml文件配好后,需要引入相应的jar包,jar可以在struts-2.3.24.1-all.zip里面的lib目录里面找。

这个里面jar比较多,可能初学的时候不知道该引入那些jar包,所以官方再struts-2.3.24.1-all.zip这个压缩文件中有对应的案例程序,可以从这些里面引入,就在apps里面有好几个项目。第一次写struts的话就选第一个,struts2-blank.war,这个就是一个框架能运行起来,并且是jar引入最少的空白项目,但是这个里面也有可能缺一两个jar包会导致程序运行不起来。

下图为必须引入的jar包。

wKioL1bieyOjVHD7AAAqiWBzHwg964.png

把jar引入后就可以创建一个类文件了,先建一个包名。

wKiom1biexDgCuIiAAAY0MuvjkY888.png

这儿起的包名叫action,类文件叫HelloStruts。

类文件创建好后写一些代码。

public class HelloStruts {
	
	private String name;
	public void setName(String name){
		this.name = name;
	}
	public String execute(){
		
		this.setName("hello");
		
		return "success";
	}
	public String getName(){
		return this.name;
	}
	
}

这个类里面写的就是一个成员变量,有set、get方法 还有一个execute方法。

注:这儿本应该是要继承ActionSupport这个类的,但是不写的话,是默认继承这个类的,这个过程大家要懂。

这个类写好后,就需要配置struts的配置信息,就得在src目录下面创建一个struts.xml,这个struts.xml文件不用咱们自己写,可以到你下载的struts文件中的apps目录里面随便打开一个项目,在里面拷贝个就可以了。

注:这儿的struts.xml文件目录必须放在src目录下面,不能放错,要不然就会出错,我之前学的时候 刚开始就没放对,所以导致研究了好长时间。

复制到src目录下面后,打开该文件。打开后把它改成这样

<?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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
        <action name="hello" class="action.HelloStruts">
            <result name="success">/hellowrod.jsp</result>
        </action>
    </package>

    <!-- Add packages here -->

</struts>

package这个标签里面的信息就不要修改了,咱们需要修改的就是action这个标签里面的。

action->name 这个就是配置从地址栏 也就是url访问的名称,其实就跟写servlet配置web.xml里面的url-partten这个属性一样,这儿就起hello。

action下面还有一个字段这儿没有写 就是method,这个字段就是说要访问的那个方法,如果这儿没写,默认找的就是execute这个方法,所以在上面的类里面我就定义了一个execute。

action->class这个自然就不用说,就是你要访问的那个类,需要带包名,和web.xml配置差不多。

这个result标签里面的name就得注意一下啦,这个name里面填写的信息就是咱上面写的HelloStruts这个类里面的execute方法返回的那个字符串,根据返回的这个字符串来跳转到对应的页面。所以/helloword.jsp就是跳转的页面。

至此上面的配置已经基本完成,但是现在还缺一步。

就是在WebContent(myeclipse里面是webroot)目录创建helloword.jsp文件。

创建完成后 需要引入struts2的标签。

wKiom1bif6CDsy_hAAAWaQKle2Y919.png

引入后在body体内写一个句标签。

<s:property value="name"/>

这儿的value="name"  这个name就是 hellostruts类里面的name成员变量。

这儿的name其实访问的是这个类里面的getName,所以在hellostruts这个类里面有个get方法。

保存后就完成了。

接下来就发布运行。

当tomcat运行起来后 ,就可以访问这个网页了。

路径为 http://localhost:8080/hellostruts(项目名)/hello.action

注:strtus2是以action为控制器,所以后面是action,这个hello就是struts.xml文件里面的action标签的name属性填写的值。action->name。

最后就是运行成功。