SpringMVC框架搭建杂记

本文详细记录了作者在Eclipse中部署Maven项目到Tomcat时遇到的问题及解决方案,包括处理ClassNotFoundException异常、解决ContextLoaderListener配置错误等,并分享了Spring MVC框架的基本配置流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话说我5年后重返java也是千辛万苦,为了调通一个框架,综合了极客学院、csdn、iteye,也是没谁了

先要按http://www.jikexueyuan.com/course/2135_4.html?ss=1说的做

1、在eclipse中新建一个maven项目

2、然后发现项目出现红叉,而且tomcat运行不起,在build路径中加入tomcat

3、加入maven依赖,在pom.xml中如下代码

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.gotoxoyo.mymvc</groupId>
  <artifactId>demo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>demo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <properties>
	<spring.version>4.0.5.RELEASE</spring.version>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<java.version>1.8</java.version>
  </properties>
  
  <dependencies>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>${spring.version}</version>
	</dependency>
<!--    
  	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-tx</artifactId>
		<version>${spring.version}</version>
	</dependency>
 -->

	<dependency>  
	    <groupId>org.springframework</groupId>  
	    <artifactId>spring-jdbc</artifactId>  
	    <version>${spring.version}</version>  
	</dependency>  

	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.43</version>
	</dependency>
    
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>demo</finalName>
  </build>
</project>

4、在web.xml中配置spring相关信息

<?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" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
  
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
  </context-param>  
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/spring-mvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
  
</web-app>

5、配置spring 的bean

在web.xml同一个目录下新增spring-mvc.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

	<context:component-scan base-package="com.你的包名" />
	
</beans>
		

iteye

Eclipse报错:java.lang.ClassNotFoundException: ContextLoaderListener

eclipsetomcatClassNotFoundExceptionContextLoaderListener 

Eclipse中tomcat部署工程启动后报错:

Shell代码 

 收藏代码

  1. 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener  
  2. java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener  
  3.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)  
  4.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)  
  5.     at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)  
  6.     at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)  
  7.     at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)  
  8.     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4660)  
  9.     at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)  
  10.     at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)  
  11.     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)  
  12.     at java.util.concurrent.FutureTask.run(FutureTask.java:138)  
  13.     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)  
  14.     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)  
  15.     at java.lang.Thread.run(Thread.java:662)  

问题背景

工程为maven工程,ContextLoaderListener类位于spring-web-3.1.0.RELEASE.jar包中。检查了maven的pom.xml,依赖引入正常。在工程Maven Dependencies视图中也能看到spring-web-3.1.0.RELEASE.jar包被正常引入进来了。

 

错误原因:

进入到tomcat的部署路径.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\下检查了一下,发现工程部署后在WEB-INF文件夹下没有生成lib目录,正常情况下,会生成lib目录并把工程的所有依赖jar包都部署到该目录下。

 

解决方案:

1.右键点击项目--选择Properties

选择Deployment Assembly,在右边点击Add按钮,在弹出的窗口中选择Java Build Path Entries。如下图所示:

2.点击Next,选择Maven Dependencies

3.点击Finish,然后可以看到已经把Maven Dependencies添加到Web应用结构中了

 

操作完后,重新部署工程,不再报错了。然后我们再到.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\目录下,发现工程WEB-INF目录下自动生成了lib目录,并且所有的依赖jar包也都已经部署进来。问题因此解决。

iteye原文

然后又CSDN

这是我于2013年9月4号晚遇到的问题,为了这个问题我一夜没睡!
对于这个问题,我相信我的方法已经能帮90%的人解决了!
当你用Eclipse运行web项目的时候,你就会看到控制台出现:
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:firstProject' did not find a matching property.
这样的字样,说的是server.xml的Service标签里的Engine标签里的Host标签里的Context标签配置了一个'source'属性,属性值是'org.eclipse.jst.jee.server:firstProject'.
但问题是Context标签是不支持source这个属性的,所以跳出了警告,所以大家也发现的是,尽管有警告,但是大部分人的程序是依然可以运行没有问题的,但少部分人的不能够运行。
也许你已经在网上查到很多像这样的问题,而且也给出了解决办法,但是你照着解决的方法去做了,警告依然存在!
那现在你就可以跟着我的步骤来做了:

我先说一下网上别人所说的步骤,埋个伏笔
1.双击Servers里的Tomcat v7.0 at localhost

2.然后跳出个界面:

看到没,在Server Options选项里有个Publish module contexts to separate XML files的选项,到这里我们也一样把勾勾上,不过问题不是这样就一定解决了,我说过有的朋友这样做了,问题依然没有解决,把勾勾上以后记得保存,如果警告依然存在的朋友们跟着我继续往下看。

3.

大家仔细对比下你自己的和我图片上的,你会发现你默认的选项应该是Use workspace metadata这个选项,只不过是笔者我改为了tomcat的安装路径罢了,因为Use workspace的路径文件夹不方便后面的讲解中要找的文件,所以笔者使用第2个tomcat安装目录来操作,而Deploy path:你如果没有改过的话,应该是叫wtpwebapps,因为在写文章之前,我已经改掉了也不清楚是不是这个名字了,但确定的一点是,它肯定不是webapps的,所以此处读者根据自己的Deploy path的值进行下面的操作。
好了准备工作差不多了,现在是重点来了,为什么好多人做了1.2步操作以后就好了而你自己的没好呢?
原因是,在做1 2 步操作之前你们已经运行过程序,而运行以后程序就会在tomcat文件夹下多了一个backup文件夹

里面的目录结构如图:

有没有很熟悉的感觉,没错这就是从tomcat目录里conf文件夹下拷贝过来的文件
接下来直接说操作好了:
4.
删除掉刚才的backup文件夹[backup所在位置根据第3步所说的,因为笔者使用的时tomcat安装目录所以就在目录下就直接发现了,但如果你用的是Use workspace metadata这个选项的话,你就在\workspace\.metadata\.plugins\org.eclipse.wst.server.core路径下可以看到里面有很多的文件,Eclipse就把项目发布到了这里,里面的目录结构和tomcat里面的差不多,总之把\workspace\.metadata\.plugins\org.eclipse.wst.server.core里面的文件全删除了就可以了]
5.
找到tomcat目录里的conf目录里的Catalina目录里有个localhost文件夹,把文件夹里面的文件全删除掉。
6.
此处告诉大家3.4.5步骤纯属告诉你们Eclipse发布的一个细节,删除上面的文件其实不用那么麻烦:
在Servers下Tomcat v7.0 at localhost里,首先右键-->移除里面已经添加的所有工程,然后右键-->Clean清空项目虚拟目录里的文件,然后重新运行你们的程序就可以了。

注意:如果有人想和我一样在第3步server locations里修改项目发布目录的话,只要发布过一次项目你会发现,server locations里面的选项是灰色的,不可以改,怎么办呢,这就需要你照着第6步里面的移除项目,清空文件,然后你就惊奇的发现,server locations可以修改了,OK,累了,我去,写了3个小时,希望能帮到你们解决你们的问题,See You!!!!

csdn原文

 

然后就可以大概有个SpringMVC的框架,买极客学院一个月的会员还花了30大洋,心痛之余好歹还是有了个可以工作的框架

转载于:https://my.oschina.net/xoyo/blog/1490357

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值