步骤总结
-
在
WEB-INF
目录下新建lib
文件夹,导入jar
包,并将lib
设置为library
-
在
web.xml
配置 struts2 的核心过滤器
创作背景
-
最近有人问我为什么他用 idea 创建的 Struts2 程序老是出错,我给他排查了一下,发现这些错误新手都很常见,因此这里将创建 Struts2 的流程和注意事项记录下来
-
下面介绍两种用 idea 创建 Struts2 程序的方法,第一种方法在创建时不勾选 Struts 2 选项,第二种方法在创建时勾选 Struts 2 选项
-
在创建 Struts2 程序之前,我已经创建了一个名为 01_struts2 的空项目,因此这里演示的两种方法都是在这个项目下新建 Module 来创建 Struts2 程序
方法一
-
点击「File」——「New」——「Module…」
-
按下图所示操作
-
初始创建完成的项目结构如下图所示
-
在
src
目录下创建struts.xml
文件(注意:只能是这个文件名)
-
在
WEB-INF
目录下新建一个名为lib
的文件夹,然后在 Struts2 官网 下载下图所示这个压缩包
-
将压缩包解压,再将里面的文件全部复制到
lib
文件夹下,然后选中lib
文件夹,右键,点击「Add as Library…」,此时弹出如下对话框(如果你不是在一个项目里新建 Module,是没有这个对话框的)
-
此时程序结构如下
-
在
web.xml
文件的<web-app></web-app>
标签里添加如下内容(注意:不要把内容添加到标签体外面去了)<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>
- 关于
<filter-class></filter-class>
标签中的内容,网上有些教程可能写的是org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
,这是因为在之前的版本中StrutsPrepareAndExecuteFilter
类的位置和现在的版本不一样,所以多了个.ng
- 此时
web.xml
文件可能会报错,这时我们需要点击「File」——「Project Structure…」,这时左边栏的 Problems 下就会列出项目存在的一些问题,我们点击 「Fix」即可,没报错就直接下一步
- 注意:当我们的项目部署运行出现问题时,很可能就是这里的设置有问题,一定要记得多点进来看一下这里有没有问题
-
在
src
目录下新建一个名为com.lwx.web.action
的包,然后新建一个名为HelloAction
的类,类的内容如下package com.lwx.web.action; public class HelloAction { public String sayHello() { System.out.println("HelloAction 中的 sayHello 方法被调用了"); return "success"; } }
-
在
struts.xml
文件的<struts></struts>
标签里输入如下内容<!-- package:表示一个包 name:包名,起到标识作用,可以随便起,但不能与其他包名重复(在struts.xml文件中不能有相同的包名) extends:继承,固定 struts-default action:配置 Action 类 name:相当于 Servlet 的映射路径(@WebServlet),决定了 Action 类的访问路径 class:处理请求的 Action 的完整类名,此 Action 相当于一个 Servlet 类 method:处理请求的方法,指定调用 Action 类中的哪个方法来处理请求 result:结果配置,写返回的 jsp 页面 name: 标识结果处理的名称,与 Action 方法的返回值对应 type: 指定调用哪一个 result 类来处理结果,默认使用转发 标签体:填写页面的相对路径 --> <package name="p1" extends="struts-default"> <action name="helloAction" class="com.lwx.web.action.HelloAction" method="sayHello"> <result name="success">/success.jsp</result> </action> </package>
- 此时
struts-default
可能会报错,在第 9 步中我们已经说过了,当程序报错的时候很可能就是Project Structure
里面的配置没做好
-
在
web
目录下新建一个名为success.jsp
的文件,将 body 标签里的内容改为下面这句话(不是必须的)由HelloAction的sayHello方法返回的页面
-
启动 Tomcat,输入
http://localhost:8080/struts2Demo1_war_exploded/helloAction
(注意:项目名struts2Demo1_war_exploded
以及 Action 类的访问路径helloAction
要和自己配置的一致) -
回车即可看到页面上输出了
由HelloAction的sayHello方法返回的页面
这句话。至此,一个最简单的 Struts2 程序已经创建并启动成功。 -
最终的程序结构如下图所示
方法二
-
点击「File」——「New」——「Module…」
-
按下图所示操作
-
初始创建完成的项目结构如下图所示
-
可以发现,idea 自动给我们创建了一个
struts.xml
文件 -
并且
web.xml
文件里也给我们写好了struts2
的过滤器,不过却报错了,个人认为这是因为当时的 idea 自带的 struts2 的版本和我们在官网下载的不一样,导致找不到那个类,应该将其替换为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
- 下面的步骤就和方法一中的是一样的了,这里就不一一演示了