创建项目,通过mavenrepository.com 找jar 包的映射关系 , 并且添加映射关系

项目构建

  1. 新建maven项目

2、调过骨架,如果不跳过骨架选择创建出的项目目录是不全的

 

  1. 填写坐标

3、创建工程

4、处理红色叉号

手动在webapp文件夹下创建一个WEB-INF文件夹,在里面放一个web.xml文件

5、处理编译版本

在pom.xml中添加如下代码

<build>
<!-- 配置了很多插件 -->
<plugins>
	<plugin>
	 <groupId>org.apache.maven.plugins</groupId>
	 <artifactId>maven-compiler-plugin</artifactId>
	 <version>3.5.1</version> 
	 <configuration>
			   <source>1.7</source>
			  <target>1.7</target>
			   <encoding>UTF-8</encoding>
	 </configuration>
	</plugin>
</plugins>
</build>

更改了以后要更新项目

5、创建一个servlet

 

修改web.xml

删除重复的代码

xmlns=http://java.sun.com/xml/ns/javaee

 

 

添加jar包

在pom中添加如下代码:


<dependencies>
   <dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.9</version>
	<scope>test</scope>
   </dependency>
   <dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>servlet-api</artifactId>
	<version>2.5</version>
	<scope>provided</scope>
   </dependency>
   <dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jsp-api</artifactId>
	<version>2.0</version>
	<scope>provided</scope>
   </dependency>
</dependencies>

会发现jar包已添加到项目中

改为

 

或者

 

问题1解决:

错误提示如下:

严重: Allocate exception for servlet struts2
java.lang.ClassCastException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Servlet
 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1116)
 at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 at java.lang.Thread.run(Thread.java:722)

找了半天愣是没发现哪里有问题,一个简单的struts2配置都搞不定,蛋疼哪。。。

无奈之下只好找度娘。。。结果发现是web.xml配错了,struts2的核心过滤器叫我给配成servlet了。。。真是无语到家,错误的配置如下:(in web.xml)

 

<servlet>
   <servlet-name>struts2</servlet-name>
   <servlet-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</servlet-class>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>struts2</servlet-name>
   <url-pattern>/*</url-pattern>
  </servlet-mapping> 

 

天天说struts2的核心过滤器,核心过滤器,人家是过滤器哪。。。。,改成如上正确的配置后问题解决:

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

 

2 还有一种情况
 

INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ maven-first ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< tomcat-maven-plugin:1.1:run (default-cli) < compile @ maven-first <<<
[INFO]
[INFO] --- tomcat-maven-plugin:1.1:run (default-cli) @ maven-first ---
[INFO] Running war on http://localhost:8080/maven-first
[INFO] Creating Tomcat server configuration at E:\videos\【阶段08】Maven\Maven第一天\黑马32期MAVEN\day01\源码\maven-first\target\tomcat
九月 04, 2018 3:55:09 下午 org.apache.catalina.startup.Embedded start
信息: Starting tomcat server
九月 04, 2018 3:55:09 下午 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.29
九月 04, 2018 3:55:10 下午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.ClassCastException: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter cannot be cast to javax.servlet.Filter
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
    at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
    at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
    at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

九月 04, 2018 3:55:10 下午 org.apache.catalina.core.StandardContext start
严重: Error filterStart
九月 04, 2018 3:55:10 下午 org.apache.catalina.core.StandardContext start
严重: Context [/maven-first] startup failed due to previous errors

从上面可以看出,即使在pom.xml 中没有配置tomcat 但是实际上,tomcat 会以插件的形式进来,所以tomcat 中的servlet-api.jar 和jsp-api.jar 和pom.xml 中的已经含有的这两个jar 包是冲突的,所以解决方案是

provided 表示的是不用我提供的jar 包,因为tomcat 里面有这个jar 包,所以就不用我提供的jar 包就可以了

这种情况下打出的jar 包中是不含有那两个jar 包的

 这种情况下,把这两个jar 包交给tomcat 就不会有问题了

  1. Compile  struts2-core

编译(compile)时需要 测试时需要,运行时需要,打包时需要

  1. Provided  jsp-api.jar   servlet-api.jar

编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要

  1. Runtime   数据库驱动包

编译时不需要(编译的时候不报错就代表编译的时候不需要),测试时需要,运行时需要,打包时需要

    Compile  struts2-core
编译(compile)时需要 测试时需要,,运行时需要,打包时需要
    Provided  jsp-api.jar   servlet-api.jar
编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要

    Runtime   数据库驱动包
编译时不需要,测试时需要,,运行时需要,打包时需要
    Test  junit.jar
编译时不需要,测试时需要,运行时不需要,打包也不需要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值