1. 在开始界面点击“create new project”新建一个项目
2. 创建webapp项目,这个webapp不要选错了,因为这里面有两个是以webapp为后缀的,一定要选择maven-archetype-maven这个,我之前有一次疏忽大意就选错过
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文件是没有
标签的,我们先手动添加一个即可
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包删除掉,再运行就行了