Maven运行struts2
今早上试了一下如何生成war包形式用tomcat运行,知道了idea是自动编译的,生成war包方式:
先在web下创建一个目录:一会要create mainfest用
选择file- project structure, artifacts ,+号, 选择 archive的那个 起个名字,错错错!!!
是先选择exploded 再在类型里选择archive。
点击下面的create mainfest 选择刚刚创的目录即可。然后Build下选择Build Artifacts,黄色的out里找到war包放到webapps下面,然后tomcat也换成生成的war包。运行成功,之前好像就是少了一步创建META-INF这一步(里面的文件是生成后的,我们只要创建目录即可),并且没有create manifest,好像是选择了web content,所以找不到路径。随后,webapp下:
可能用jsp页面的都会多出来一个文件夹吧。文件夹内容:
看到都是和jsp相关的内容,也就是web下所有的内容。
maven运行struts2
用了半小时左右试了一下用maven项目将struts2项目跑起来且成功。
步骤:基本是按照网上来的:
1.选择maven 的create archetype下的webapp。
2.你懂的:
3.你懂的;
新建Folder后在上面选择她的类型即可。在main下建java和resources,java蓝色,resources是带金色的:注意:框起来的三个是平级的。
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的时候就是用的上面的,会报红。
6. 配置 struts.xml 文件 (重要,易出错)
在 \WEB-INF\classes 目录下,新建 struts.xml 文件。
有人会说,不应该在 src 目录下新建 struts.xml 文件吗 ?
答: 不行,maven项目打包的时候,会忽略 src 目录下的 xml配置文件, 但是我们可以进行配置,告诉IDE打包的时候,打包到指定路径。也就是我们下文讲的,“在哪建立文件并不重要“”
其实这个文件 建在哪里并不重要, 但是打包的时候 一定要 打包到 \WEB-INF\classes路径下 , 我们下面会介绍如何设置*
所以:我们在WEB-INF下新建classes文件夹,lib不需要了,因为是maven管理jar。
struts.xml:
7.然后将jsp页面的几个文件夹复制到web下,还有java代码复制到main java下。
8.部署!!!!
IDEA MAVEN struts项目中,如果我们把 struts.xml 文件放在 src 目录下,编译的时候,将无法打包到 *\WEB-INF\classes* 路径下,运行程序的时候自然就会报错
MAVEN项目 打包到指定路径 解决方案
设置步骤如下:
FILE -> Project Structure -> Artifacts -> 选择运行的方式 -> 找到 \WEB-INF\classes\ 路径,
-> 点击 + 号 -> 选择 File -> 找到 struts.xml 文件 -> ok ,
这样我们便可以设置 将 指定文件 打包到指定目录了。
这是网上的图片,我按照它来的,一模一样,没错。
然后是maven的打war包过程:
需要在pom.xml中注明打包方式为war
点击界面最右侧的选项:找到Lifecycle,双击package
结果:在与src平级的下面多了黄色的target文件夹,找到war放到webapp下。Tomcat配置一下即可。
我们发现,用maven方式打包运行后,webapp下只有我们的war包,没有项目名的文件夹。且work下也没有该项目的任何文件,这就是maven管理的好处。
结果是先跳到index.jsp。显示Hello World!地址栏改下我们要访问的就行:
我们发现一个问题:
跳到hello.action的时候。路径名不对,框中应该是项目名。
原因:跟我的一样、
解决方法:
之前的头替换成:
<?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">
现在好了:
如果不改动头的话还有一种方式,就是创建项目时候就指定web版本:
找到project structor,找到modul:找到Web,删除已经有的web.xml,
点+,这时候可以看到可以选择版本了:最高4.0,我选择3.1.
重要的一点:
结果:
<?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>
两者比较有不同的地方,不必知道原因能用就行。
加上我们需要的内容:
在犹豫要不要重新打包,我直接运行tomcat后发现不需要:
另外:tomcat目录: