idea创建Struts2程序

步骤总结

  1. WEB-INF 目录下新建 lib 文件夹,导入 jar 包,并将 lib 设置为 library

  2. web.xml 配置 struts2 的核心过滤器

创作背景

  • 最近有人问我为什么他用 idea 创建的 Struts2 程序老是出错,我给他排查了一下,发现这些错误新手都很常见,因此这里将创建 Struts2 的流程和注意事项记录下来

  • 下面介绍两种用 idea 创建 Struts2 程序的方法,第一种方法在创建时不勾选 Struts 2 选项,第二种方法在创建时勾选 Struts 2 选项

  • 在创建 Struts2 程序之前,我已经创建了一个名为 01_struts2 的空项目,因此这里演示的两种方法都是在这个项目下新建 Module 来创建 Struts2 程序

方法一

  1. 点击「File」——「New」——「Module…」
    在这里插入图片描述

  2. 按下图所示操作
    在这里插入图片描述
    在这里插入图片描述

  3. 初始创建完成的项目结构如下图所示
    在这里插入图片描述

  4. src 目录下创建 struts.xml 文件(注意:只能是这个文件名)
    在这里插入图片描述

  5. WEB-INF 目录下新建一个名为 lib 的文件夹,然后在 Struts2 官网 下载下图所示这个压缩包
    在这里插入图片描述

  6. 将压缩包解压,再将里面的文件全部复制到 lib 文件夹下,然后选中 lib 文件夹,右键,点击「Add as Library…」,此时弹出如下对话框(如果你不是在一个项目里新建 Module,是没有这个对话框的)
    在这里插入图片描述

  7. 此时程序结构如下
    在这里插入图片描述

  8. 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
  1. 此时 web.xml 文件可能会报错,这时我们需要点击「File」——「Project Structure…」,这时左边栏的 Problems 下就会列出项目存在的一些问题,我们点击 「Fix」即可,没报错就直接下一步
    在这里插入图片描述
  • 注意:当我们的项目部署运行出现问题时,很可能就是这里的设置有问题,一定要记得多点进来看一下这里有没有问题
  1. src 目录下新建一个名为 com.lwx.web.action 的包,然后新建一个名为 HelloAction 的类,类的内容如下

    package com.lwx.web.action;
    
    public class HelloAction {
        
        public String sayHello() {
            System.out.println("HelloAction 中的 sayHello 方法被调用了");
            return "success";
        }
    }
    
  2. 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 里面的配置没做好
    在这里插入图片描述
  1. web 目录下新建一个名为 success.jsp 的文件,将 body 标签里的内容改为下面这句话(不是必须的)

    由HelloAction的sayHello方法返回的页面
    
  2. 启动 Tomcat,输入 http://localhost:8080/struts2Demo1_war_exploded/helloAction (注意:项目名 struts2Demo1_war_exploded 以及 Action 类的访问路径 helloAction 要和自己配置的一致)

  3. 回车即可看到页面上输出了 由HelloAction的sayHello方法返回的页面 这句话。至此,一个最简单的 Struts2 程序已经创建并启动成功。

  4. 最终的程序结构如下图所示
    在这里插入图片描述

方法二

  1. 点击「File」——「New」——「Module…」
    在这里插入图片描述

  2. 按下图所示操作
    在这里插入图片描述
    在这里插入图片描述

  3. 初始创建完成的项目结构如下图所示
    在这里插入图片描述

  • 可以发现,idea 自动给我们创建了一个 struts.xml 文件

  • 并且 web.xml 文件里也给我们写好了 struts2 的过滤器,不过却报错了,个人认为这是因为当时的 idea 自带的 struts2 的版本和我们在官网下载的不一样,导致找不到那个类,应该将其替换为 org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    在这里插入图片描述

  1. 下面的步骤就和方法一中的是一样的了,这里就不一一演示了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值