我用的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包。
把jar引入后就可以创建一个类文件了,先建一个包名。
这儿起的包名叫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的标签。
引入后在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。
最后就是运行成功。