Maven运行struts2

今早上试了一下如何生成war包形式用tomcat运行,知道了idea是自动编译的,生成war包方式:

先在web下创建一个目录:一会要create mainfest用

Maven运行struts2

选择file-  project structure, artifacts ,+号, 选择 archive的那个 起个名字错错错!!!

Maven运行struts2

是先选择exploded  再在类型里选择archive。

Maven运行struts2

点击下面的create mainfest 选择刚刚创的目录即可。然后Build下选择Build Artifacts,黄色的out里找到war包放到webapps下面,然后tomcat也换成生成的war包。运行成功,之前好像就是少了一步创建META-INF这一步(里面的文件是生成后的,我们只要创建目录即可),并且没有create manifest,好像是选择了web content,所以找不到路径。随后,webapp下:

Maven运行struts2

可能用jsp页面的都会多出来一个文件夹吧。文件夹内容:

Maven运行struts2

看到都是和jsp相关的内容,也就是web下所有的内容。

 

maven运行struts2

用了半小时左右试了一下用maven项目将struts2项目跑起来且成功。

步骤:基本是按照网上来的:

1.选择maven 的create archetype下的webapp。

2.你懂的:

Maven运行struts2

3.你懂的;

Maven运行struts2

新建Folder后在上面选择她的类型即可。在main下建java和resources,java蓝色,resources是带金色的:注意:框起来的三个是平级的。

Maven运行struts2

4.pom加依赖:

<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

    <version>2.5.14.1</version>

</dependency>

5.web.xml:

  <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>

Maven运行struts2

注意到我上周六没用maven的时候就是用的上面的,会报红。

6. 配置 struts.xml 文件 (重要,易出错)

在 \WEB-INF\classes 目录下,新建 struts.xml 文件。

有人会说,不应该在 src 目录下新建 struts.xml 文件吗 ?

答: 不行,maven项目打包的时候,会忽略 src 目录下的 xml配置文件, 但是我们可以进行配置,告诉IDE打包的时候,打包到指定路径。也就是我们下文讲的,“在哪建立文件并不重要“”

其实这个文件 建在哪里并不重要, 但是打包的时候 一定要 打包到 \WEB-INF\classes路径下 , 我们下面会介绍如何设置*

所以:我们在WEB-INF下新建classes文件夹,lib不需要了,因为是maven管理jar。

Maven运行struts2

struts.xml:

Maven运行struts2

7.然后将jsp页面的几个文件夹复制到web下,还有java代码复制到main java下。

8.部署!!!!

IDEA MAVEN struts项目中,如果我们把 struts.xml 文件放在 src 目录下,编译的时候,将无法打包到 *\WEB-INF\classes* 路径下,运行程序的时候自然就会报错

Maven运行struts2

MAVEN项目 打包到指定路径 解决方案

设置步骤如下:

FILE -> Project Structure -> Artifacts -> 选择运行的方式 -> 找到 \WEB-INF\classes\ 路径,

-> 点击 + 号 -> 选择 File -> 找到 struts.xml 文件 -> ok ,

这样我们便可以设置 将 指定文件 打包到指定目录了。

Maven运行struts2

Maven运行struts2

这是网上的图片,我按照它来的,一模一样,没错。

然后是maven的打war包过程:

需要在pom.xml中注明打包方式为war 

Maven运行struts2

点击界面最右侧的选项:找到Lifecycle,双击package 

Maven运行struts2

结果:在与src平级的下面多了黄色的target文件夹,找到war放到webapp下。Tomcat配置一下即可。

Maven运行struts2

我们发现,用maven方式打包运行后,webapp下只有我们的war包,没有项目名的文件夹。且work下也没有该项目的任何文件,这就是maven管理的好处。

Maven运行struts2

结果是先跳到index.jsp。显示Hello World!地址栏改下我们要访问的就行:

Maven运行struts2

Maven运行struts2

Maven运行struts2

我们发现一个问题:

跳到hello.action的时候。路径名不对,框中应该是项目名。

原因:跟我的一样、

Maven运行struts2

解决方法:

Maven运行struts2

之前的头替换成:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         
xmlns="http://java.sun.com/xml/ns/javaee"
         
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         
id="WebApp_ID" version="3.0">

现在好了:

Maven运行struts2

如果不改动头的话还有一种方式,就是创建项目时候就指定web版本:

找到project structor,找到modul:找到Web,删除已经有的web.xml,

Maven运行struts2

Maven运行struts2

点+,这时候可以看到可以选择版本了:最高4.0,我选择3.1.

Maven运行struts2

Maven运行struts2

重要的一点:

Maven运行struts2

结果:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        
version="3.1">
</web-app>

Maven运行struts2

两者比较有不同的地方,不必知道原因能用就行。

加上我们需要的内容:

Maven运行struts2

在犹豫要不要重新打包,我直接运行tomcat后发现不需要:

Maven运行struts2

另外:tomcat目录:

Maven运行struts2