初学Struts,因为Struts版本较多,在网上找的Struts版本差不多都是Struts2.3版本的,现在就写一写最新的Struts2.5.16版本在eclipse中的配置。
目录:
1、添加项目所需要的jar包
2、struts.xml
3、web.xml
4、新手在运行动态action程序时会遇到的问题
一、添加项目所需要的jar包
首先,去Struts官网下载Struts包。官网地址:http://struts.apache.org——download——struts-2.5.16-all.zip
其次,解压下载包,在解压后的struts-2.5.16文件夹的lib文件夹下将以下jar包复制到eclipse的web项目的WEB-INF的lib文件夹下,接着再选中该web项目,右键,配置构建路径,将这些jar导入该项目。
需要导入的jar包有:
附注:与Struts2.3比起来少了一个xwork-core-2.3.34.jar,多了一个log4j-api-2.7.jar。这是因为xwork-core-2.3.34.jar已经整合到Struts2-core中了,如果没有导入log4j-api-2.7jar的话,在web.xml和struts.xml都配置正确的情况下,会报出以下的错误:
二、struts.xml的配置
首先要生成一个struts.xml文件。
方法是:选中项目。右键——新建——其他,在搜索框内输入xml,然后选择:
(注意一定要将该xml文件命名为:struts.xml,不能出错。)
但是在新生成的xml文档中只有版本信息,因此还需要将以下内容复制到xml文档中
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
这样eclipse才会出现提示。
(以上需要复制的内容可以从Struts目录下打开apps文件夹,其中有两个war包,随便其中一个war包解压出来,依次打开WEB-INF——src找到里面的Struts.xml就可以找到上面的这段话)
三、web.xml
在这部分,Struts2.3与Struts2.5有一个区别:
Struts2.3中的filter配置如下:
-
<filter>
-
<filter-name>struts2 </filter-name>
-
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class>
-
</filter>
而Struts2.5中的filter配置如下:
-
<filter>
-
<filter-name>struts2 </filter-name>
-
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class>
-
</filter>
可以观察到在Struts2.5中filter-class标签中少了一个ng,这是因为在Struts2.5.16中,Struts2-core-2.5.16.jar中是没有子目录ng的,因此想找到上面的StrutsPrepareAndExecuteFilter类,只能通过以上的路径。
四、新手在运行动态action程序时会遇到的一些问题
出现这个问题,需要检查:在Struts.xml文件夹下的文件名、类名有没有输入错误,其次是在Struts.xml文件中添加
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
出现这个问题,需要在package节点下添加一个允许方法列表
<global-allowed-methods>add, update</global-allowed-methods>
最后
学习任何一门技术都是一个循序渐进并且需要不断练习巩固加强的,所以遇到问题第一件事就是先分析可能的问题出在哪里,然后借助网上的经验进行修改,不要畏难,给自己自信就可以做好(完)。
以后再遇到问题再行补充。
补充1:在创建一个Struts程序时,如用到jsp页面,如表单提交页面,在表单提交页面需要用到Struts的标签,且定义前缀为s,则需要在jsp页面的顶端加上一行引用标签库的代码如下:
<%@ taglib prefix="s" uri="/struts-tags" %>
而且由于Struts的标签库要求所有的请求通过其servlet过滤器时才可以使用,这是因为该过滤器初始化该标签所需的Struts调度器。因此需要在web.xml文件中配置相应的filter,代码如下:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <filter-mapping>
补充2:在Struts2中默认页面提交的代码的编码格式是utf-8,因此如果编写的jsp页面的编码格式非utf-8,则会出现乱码问题