一、先介绍webapp形式

1. 在开始界面点击“create new project”新建一个项目
在这里插入图片描述

2. 创建webapp项目,这个webapp不要选错了,因为这里面有两个是以webapp为后缀的,一定要选择maven-archetype-maven这个,我之前有一次疏忽大意就选错过

在这里插入图片描述

3. 设置项目名和项目存放的路径
在这里插入图片描述
在这里插入图片描述

4. 配置本地Maven
这是我已经默认配置好的,可以参考我上一篇博文IDEA 新建Maven项目的时候设置所有的项目默认为本地Maven仓库
然后点击Finish就行了
在这里插入图片描述

5. 进来之后,会提示你“maven projects need to be imported”,这时候选择自动导入“Enable Auto-import”就行了,这样之后在pom.xml里添加的依赖,maven都会自动帮你导入
在这里插入图片描述

6. 添加Struts2的依赖
一般添加maven依赖都可采用以下的方式,在百度中输入maven+依赖名然后搜索即可,这里直接附上Struts2.3.37的地址在这里插入图片描述在这里插入图片描述
下拉找到想要的版本
在这里插入图片描述
在这里插入图片描述
然后粘贴到在pom.xml中的dependencies标签下
在这里插入图片描述
之后maven就会自动加载struts2相关的依赖,可以展开External Libraries查看有没有添加成功
在这里插入图片描述

7.web.xml文件的配置

web.xml中这一步的过滤器是一定要配置的,如果不配置是访问不了页面的

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <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>

需要注意的是,如果使用的是低版本的struts(例如2.2),filter-class值前面的ng是没有的,去掉即可。

在这里插入图片描述

低版本的struts中的filter-class的配置

<filter-class>
      org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
</filter-class>

如果不确定是否要删,那么可以试着把前面的“ng”删掉,看看语句会不会报错变红,如果删掉变红报错,没有删除的时候是白色没有报错的,那就是不需要删的。
之前我碰到过一个问题,就是启动tomcat之后,提示“java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter”,查了百度是说可能是struts版本的问题,修改一下filter-class就好了,但是其实问题不是这样的,我修改成了低版本的filter-class值之后,还没启动tomcat,这条语句就变红了,idea就直接提示报错了。毕竟现在使用struts的已经很少了,使用低版本的struts更少,一般使用的都是高版本的struts,这个问题的解决将在本文的后面进行讲解。

8.struts.xml文件配置

struts.xml应该放在WEB-INF ——> classes路径下

在这里插入图片描述
我们先在WEB-INF下新建一个directory,命名为classes
在这里插入图片描述
然后再在classes下面新建一个xml文件
在这里插入图片描述
文件命名为struts.xml
在这里插入图片描述
然后idea会生成如下的struts.xml文件

<?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>
</struts>

9.配置tomcat并部署项目
点击“run”——>“run”进入到configurations界面
在这里插入图片描述
也可以点击上方的“Add Configurations”进入到configurations界面
在这里插入图片描述
然后点击“+”号——>下拉,找到tomcat server——>选择“Local",配置在本地的tomcat
在这里插入图片描述
点击右侧的“Configure…”选项,图里的tomcat7是我之前配好的,我们再来重新配一个
在这里插入图片描述
点击左上方的+号
在这里插入图片描述
选择本地tomcat存放的位置,选择好之后点右下方的“ok”就好了
在这里插入图片描述
切换到“Deployment”选项卡——>点击“+”号——>选择“Artifact”
在这里插入图片描述
选择“war_exploded”热部署这一项
在这里插入图片描述
之前百度的时候,好多博主都说要删除“application context”里的路径“test_war_exploded”,但是其实删不删都可以,只是访问路径不一样而已,毕竟启动tomcat之后它会自动跳转到正确的路径
在这里插入图片描述
如果要手动在浏览器中输入路径的话,可以在“Server”选项卡——>“URL”这里查看具体的访问路径
在这里插入图片描述
之后,只要等待tomcat启动就能访问成功了

在这里插入图片描述
10.在webapp项目中创建java源文件夹
一般新建的maven-webapp项目是没有java源文件夹的,这里介绍一下创建方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
新建好的java文件夹一般是灰色的,还不能存放java源文件,要将它设置成“Sources”
在这里插入图片描述

二、默认形式

1.创建Maven项目
在这里插入图片描述
选择Maven项目,然后直接点Next
在这里插入图片描述
输入项目名,然后点Finish,项目就创建完成了
在这里插入图片描述
2.添加Struts2依赖

这里选择“Enable Auto-Import”,Maven就会自动导入之后添加的依赖
在这里插入图片描述
idea默认创建的pom.xml文件是没有<dependencies>标签的,我们先手动添加一个即可
在这里插入图片描述
在这里插入图片描述

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>test_two</artifactId>
    <version>1.0-SNAPSHOT</version>

	<dependencies>
    	<dependency>
        	<groupId>org.apache.struts</groupId>
        	<artifactId>struts2-core</artifactId>
        	<version>2.3.37</version>
    	</dependency>
	</dependencies>
</project>

3.添加Struts2框架
右键项目——>选择"Add Framework Support"
在这里插入图片描述
这里选择好了之后,点“OK”就行了
在这里插入图片描述
然后会有这个提示,可以直接忽略
在这里插入图片描述
这样,Struts2的框架就添加好了,struts.xml和web.xml里面的过滤器都自动配置好了
在这里插入图片描述
4.配置tomcat并部署项目
在这里插入图片描述

在这里插入图片描述
这里选择了artifact之后,项目就部署完成了,然后运行等待就好了
在这里插入图片描述

5.java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
一般这样配置完成之后,server会报错
在这里插入图片描述
然后查看bug说是找不到类
在这里插入图片描述
查了百度,大多数说可能是struts版本的问题,低版本的filter-class的值需要删除“ng.”,但是我这个版本(Struts2.3.37)的filter-class的值是没有问题的,而且idea也没有提示这条语句是错的

后来查了百度又想了想,识别不到类是在启动tomcat之后,很有可能是tomcat识别不了,所以可以在本地tomcat的lib目录下放struts2相应的jar包
在这里插入图片描述
找到本地tomcat的安装路径,找到lib
在这里插入图片描述
先下载jar包(struts2.3.37 jar包下载链接),在文章开头我已经上传了struts2.3.37的jar包
在这里插入图片描述
参照maven添加的依赖,在下载好的struts里找到相应的jar包,总共是11个
在这里插入图片描述
把jar包拉进tomcat的lib文件夹里,然后重启tomcat就可以了

在这里插入图片描述
成功运行!
在这里插入图片描述
6.“Unable to load configuration. - bean - jar:file:/C:/Program%20Files/Java/apache-tomcat-8.5.53/lib/struts2-core-2.3.37.jar!/struts-default.xml:70:72”
在tomcat的lib里添加了那些jar包之后,之后如果创建的maven+struts项目是刚开始介绍的那种web-app模式,会出现“Unable to load configuration. - bean - jar:file:/C:/Program%20Files/Java/apache-tomcat-8.5.53/lib/struts2-core-2.3.37.jar!/struts-default.xml:70:72”
这个时候把刚刚添加进tomcat里的那些jar包删除掉,再运行就行了
在这里插入图片描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐