[手把手教程][JavaWeb]SSM框架验证、修复和实例
【可能本篇文章篇幅有点长,但是内容都非常详细,满满的干货知识等着你,文末有福利记得签收哦】
java学习交流qun:925895158,只为爱学习java的小伙伴创建一个小交流圈
工具
- IDE为idea15
- JDK环境为1.8
- maven版本为maven3
- Mysql版本为5.5.27
- Tomcat版本为7.0.52
本期目标
- 项目框架介绍和冲突解决。
- 实例Service和Dao。项目框架测试。
- 登录、注册业务的分析、创建和演示。
冲突解决
为什么我把冲突解决放在第一位?
因为在冲突解决后,我们可以进入测试阶段,同时在解决冲突的时候,我们会一点点的体会到SSM项目框架中各个框架之间是怎么协同工作的,也就可以完成项目介绍。
重要的是,在实际生活中,我们去公司上班,一般也是先解决项目框架冲突问题。
-
打开项目后,随意选择一个Spring的配置文件,会弹出如下界面:
ssm框架检测第一步
我们点击图中右上角圈出来部分,会弹出如下界面:
ssm框架检测第二步
这里我们什么都不需要做,直接点击OK。
上面两步是为了告诉Idea我们的Spring配置文件在哪。类似单一Spring配置文件的ApplicationContext.xml一样,我们只是将Spring根据模块分发而已。
-
在Tomcat中运行本项目,运行结果应该是在浏览器中显示Hello World界面。
-
配置Tomcat
-
配置项目的Tomcat启动设置。
-
参考连接:点击进入
-
在web浏览器中输入:localhost:8080/druid ,查看druid是否配置成功。
ssm框架检测第三步
如上面的图中,我们可以看到我们的druid并没有把JDBC驱动列出来。这说明我们的项目的JDBC驱动要么没有设置,要么是数据库驱动的配置文件没做好。
-
随意输入一个localhost:8080/下的地址,至此我们要展示错误404页面。并且把Tomcat不友好的404页面替换。
-
替换思路:错误404这种常出现的页面,我们可以设置为静态资源,以加快网页访问。
-
注意:我们需要先把WEB-IN\Fweb.xml下面的mvc-dispatcher更改为全局配置。
<servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <!-- 默认匹配所有的请求 --> <!-- 我们默认配置这个是为了让我们的Spring框架接管Servelt,实现Spring控制所有站点请求 --> <url-pattern>/</url-pattern> <!--<url-pattern>/css/*</url-pattern>--> <!--<url-pattern>/images/*</url-pattern>--> <!--<url-pattern>/fonts/*</url-pattern>--> </servlet-mapping>
配置了web.xml后,我们重启重启应用,输入一个错误的地址(跳转到404页面),会发现提示错误信息,主要报错如下
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in file [项目所在的物理地址\WEB-INF\classes\spring\spring-dao.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/slf4j/Logger //上面这个错误主要是提示我们:NoClassDefFoundError: org/slf4j/这个类找不到。 解决办法:偷懒的把log4j2从maven配置文件中删除了,开启了logback,在maven的pom.xml中: <!-- 1.日志 --> <!--<!– 实现slf4j接口并整合 –>--> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j.version}</version> </dependency> <!--log4j2支持--> <!--<dependency>--> <!--<groupId>org.apache.logging.log4j</groupId>--> <!--<artifactId>log4j-core</artifactId>--> <!--<version>${org.apache.logging.log4j.version}</version>--> <!--</dependency>--> <!--<dependency>--> <!--<groupId>org.apache.logging.log4j</groupId>--> <!--<artifactId>log4j-api</artifactId>--> <!--<version>${org.apache.logging.log4j.version}</version>--> <!--</dependency>-->
接着,我们重启Tomcat,等项目部署完成后,我们再次打开,再次输入错误地址,我们发现还是在报错,信息如下:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in file [项目物理地址\WEB-INF\classes\spring\spring-dao.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.springframework.core.io.Resource[]] for property 'mapperLocations'; nested exception is java.lang.IllegalArgumentException: Could not resolve resource location pattern [classpath:mapper/*.xml]: class path resource [mapper/] cannot be resolved to URL because it does not exist 根据上面的提示信息,我们可以看到提示的是mapper下面没有文件,那么我们就给他制定一个空的配置文件(BaseDao.xml),内容如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace是指明Mybatis扫描的目录,mapper是我们的Dao层的映射目录 --> <mapper namespace="cn.acheng1314.dao"> </mapper>
同样的,我们再次重启服务器,并且输入错误的地址,现在能正常显示错误404的页面了,但是页面太过Low了,我们得重写一下web.xml的配置。404页面如下所示:
-
-