还是那句话,网上大都是误人子弟…麻烦要死…搞一堆东西没啥用的…讲也不讲清楚的…垃圾教程。
不过还是有幸找到了一篇好的供学习总结了一下…
先给上链接: http://blog.csdn.net/gallenzhang/article/details/51932152
然后如果还没有运行起来的 SpringMVC Demo的话,可以先看前一篇文章:
http://blog.tk-xiong.com/archives/1227
然后这里我们按前一篇文章给出的教程,创建一个web项目…请注意,仅仅只创建出来,不做任何修改。
得到目录如下:
这里可以要注意,这就是项目刚创建出来的样子…
然后接下来我们要先将 SpringMVC 的Demo运行起来。
章节一:运行SpringMVCDemo…
这一部分可以按照前一篇文章来搞…
1. 加载相关依赖项
这里我可以看到创建后自带有一个 junit3.8.1 我选择删掉。
然后加上一个 spring-webmvc 的依赖。
为了稳定,我还是选择了 4.3.6.RELEASE 版本…虽然刚刚 4.3.7 出来了。
2. 修改 web.xml 文件
修改分为两个部分,第一部分是要更换掉这个版本较低的头部文件。
未修改前:
1 2 3 4 5 6 7 |
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> </web-app> |
修改后:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>SSMDemo Maven Webapp</display-name> <!-- spring mvc servlet--> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--指定欢迎页面--> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app> |
大致就是这样,相比上一篇的话,多了一个指定欢迎页面,希望大家能接受。不能就删掉它…手动微笑。
这里的servlet和之前的相比,换了一种方式。之前的是默认地址载入,这次换成了从资源位置载入。
说实话我不太懂这些…我也是初学,希望不要教坏你们了。
所以接下来我们要做的事情就是 写 spring-mvc.xml文件…
它相当于我们前一篇文章里的 XXX-servlet.xml 文件…
这次我们在 Resources 里面添加 spring-mvc.xml 文件。
内容如下:注意 com.tank.comtroller…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" 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/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 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <context:component-scan base-package="com.tank.controller"/> <context:annotation-config /> <mvc:default-servlet-handler/> <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans> |
然后接下来我们要在 main.java 里面创建 com.tank.controller 文件夹…
当然我们要先创建java ,设置为 Sources 然后再创建这个 com.XXX 对吧?
创建完毕后如下所示:
当然你可以借此机会,看清之前的 spring-mvc.xml 文件的位置了
注意是在 resources 文件夹下面的哦…
接下来我们应该写 MainController 了…(在 com.tank.controller 文件夹下面创建 MainController 的Java类)
最终内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com.tank.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * Created by hzxiongtiankai on 2017/3/5. */ @Controller public class MainController { @RequestMapping(value = "/", method = RequestMethod.GET) public String index() { return "index"; } } |
接下来我们可能要尝试运行下SpringMVC…
这次我们不用Local的Tomcat…而是用Maven的插件…是的,换了一种方法。
首先我们需要修改Pom.xml文件。
在<build> 里面添加如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <path>/</path> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> <contextReloadable>true</contextReloadable> </configuration> </plugin> </plugins> |
修改后pom.xml文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<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.tank</groupId> <artifactId>BlogSSMDemo</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>BlogSSMDemo Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.6.RELEASE</version> </dependency> </dependencies> <build> <finalName>BlogSSMDemo</finalName> <plugins> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.1</version> <configuration> <path>/</path> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> <contextReloadable>true</contextReloadable> </configuration> </plugin> </plugins> </build> </project> |
然后接下来教配置 Tomcat…
如图操作即可:
在右上角找到这个下三角,点 Edit…
点击这个加号,然后找到Maven…
接下来,就是要改名了…然后写 运行代码
然后点击运行…右上角绿色的…不解释了。
运行完了之后,打开浏览器,链接如下网址:
然后应该是得到一个Hello World!
好了 SpringMVC 配置完毕…
接下来是 Spring 和 MyBatis 的集成。
在此之前我们需要一个数据库…Mysql – 当然我这里是用Mysql做例子的。
首先创建一个数据库,名字叫 mybatis…当然我这里是这个名字…
然后内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `t_user` -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` bigint(11) NOT NULL auto_increment, `user_name` varchar(255) default NULL COMMENT '用户名', `user_phone` varchar(20) default NULL COMMENT '手机号', `user_email` varchar(255) default NULL COMMENT '邮箱地址', `user_pwd` varchar(32) default NULL COMMENT '加盐后用户密码', `pwd_salt` varchar(6) default NULL COMMENT 'MD5盐', `create_time` datetime default NULL COMMENT '创建时间', `modify_time` datetime default NULL COMMENT '最后修改时间', `is_delete` tinyint(4) default NULL COMMENT '是否删除,0-未删除;1-已删除', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户登录表'; INSERT INTO `t_user` VALUES ('1', '赵一', '13285250574', '1045221654@qq.com', '05126a423a9379d529e4ee61a212fa55', 'KJUYT5', '2016-07-15 23:38:56', '2016-07-15 23:39:09', '0'); INSERT INTO `t_user` VALUES ('2', '张二', '15985250574', '1198224554@qq.com', '98bd3a1bebde01ad363d3c5a0d1e56da', '656JHU', '2016-07-15 23:39:01', '2016-07-15 23:39:13', '0'); INSERT INTO `t_user` VALUES ('3', '王三', '13685250574', '1256221654@qq.com', '5470db9b63c354f6c8d628b80ae2f3c3', '89UIKQ', '2016-07-15 23:39:05', '2016-07-15 23:39:16', '0'); |
创建好了之后,我们就该…搞其他事了,比如,链接数据库?
比如我们先写一个 jdbc.properties 文件。存放数据库的链接信息。
作为资源文件,还是放在 Resources 里面好了。
内容如下:——记得替换password内容!
1 2 3 4 5 6 7 8 9 10 |
driverClass=com.mysql.cj.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC username=root password=******** initialSize=0 maxActive=20 maxIdle=20 minIdle=1 maxWait=60000 |
然后我们针对我们刚才写的数据库内容,写一些文件。
大致分为: Model…Service…Dao…三层的样子。
实际上是四个文件…(⊙﹏⊙)b
文件1. User
在java文件夹下面新建一个 com.tank.model,如下图:
然后,在里面创建一个 User 的 Java类。
编码内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
package com.tank.model; import java.util.Date; /** * Created by hzxiongtiankai on 2017/3/5. */ public class User { private Long id; private String userName; private String userPhone; private String userEmail; private String userPwd; private String pwdSalt; private Date createTime; private Date modifyTime; private Short isDelete; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPhone() { return userPhone; } public void setUserPhone(String userPhone) { this.userPhone = userPhone; } public String getUserEmail() { return userEmail; } public void setUserEmail(String userEmail) { this.userEmail = userEmail; } public String getUserPwd() { return userPwd; } public void setUserPwd(String userPwd) { this.userPwd = userPwd; } public String getPwdSalt() { return pwdSalt; } public void setPwdSalt(String pwdSalt) { this.pwdSalt = pwdSalt; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getModifyTime() { return modifyTime; } public void setModifyTime(Date modifyTime) { this.modifyTime = modifyTime; } public Short getIsDelete() { return isDelete; } public void setIsDelete(Short isDelete) { this.isDelete = isDelete; } } |
然后 再创建 Service 和 Dao 两个文件夹,然后创建UserService 和 UserDao两个类
创建完毕后,如下图:
内容如下:
UserDao:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
package com.tank.dao; import com.tank.model.User; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; /** * Created by hzxiongtiankai on 2017/3/5. */ @Repository public interface UserDao { User selectUserById(@Param("userId") Long userId); User selectUserByPhoneOrEmail(@Param("emailOrPhone") String emailOrPhone, @Param("state") Short state); List<User> selectAllUser(); } |
UserService:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package com.tank.service; import com.tank.model.User; import java.util.List; /** * Created by hzxiongtiankai on 2017/3/5. */ public interface UserService { List<User> getAllUser(); User getUserByPhoneOrEmail(String emailOrPhone, Short state); User getUserById(Long userId); } |
写完之后,发现,Service 是没出什么问题的,但是Dao好像有一些包报错了…
好像是 ibatis 这个东西… 它好像是 MyBatis的前身?
那我们给 pom.xml 文件里面添加MyBatis的库
1 2 3 4 5 6 7 8 9 10 11 12 |
<!-- 添加mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <!-- 添加mybatis/spring整合包依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> |
PS.这里如果不知道放哪里的话,等会我会给出全部的pom.xml文件,或者git地址的。
接下里,我们要在 Service 层里面去添加 一个 Impl 文件夹,以及 UserServiceImpl Java类
内容我已经贴出来了,不过荣阳可以看到一些报错信息…
等会解决,我先把 UserServiceImpl 内容给你..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
package com.tank.service.impl; import com.tank.model.User; import com.tank.dao.UserDao; import com.tank.service.UserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * Created by hzxiongtiankai on 2017/3/5. */ @Service @Transactional(rollbackFor = Exception.class) public class UserServiceImpl implements UserService { @Resource private UserDao userDao; public User getUserById(Long userId) { return userDao.selectUserById(userId); } public User getUserByPhoneOrEmail(String emailOrPhone, Short state) { return userDao.selectUserByPhoneOrEmail(emailOrPhone, state); } public List<User> getAllUser() { return userDao.selectAllUser(); } } |
然后解决这个问题哈。。。还是在Pom.xml里面加包
1 2 3 4 5 |
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.6.RELEASE</version> </dependency> |
好了,不报错了…
接下来我们写一个 spring-batis.xml 文件。用来设置 spring 和 batis 集成的配置信息。
创建目录还是在 Resource里面。
内容如下:
注意是这样创建的哦…
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <context:component-scan base-package="com.tank"/> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"/> </bean> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClass}"/> <property name="url" value="${jdbcUrl}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property> <!-- 连接池最大数量 --> <property name="maxTotal" value="${maxActive}"></property> <!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property> <!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property> <!-- 获取连接最大等待时间 --> <property name="maxWaitMillis" value="${maxWait}"></property> </bean> <!-- mybatis和spring完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:mapping/*.xml"></property> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.tank.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans> |
然后可以发现又报错了…
主要是在这里:
1 |
org.apache.commons.dbcp2.BasicDataSource |
和这这里…
1 |
org.springframework.jdbc.datasource.DataSourceTransactionManager |
还有一个 mapping这里是文件夹的问题…等会儿讲。
分别对应两个包…加上去。
1 2 3 4 5 |
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.1.1</version> </dependency> |
1 2 3 4 5 |
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.6.RELEASE</version> </dependency> |
然后先解决文件夹问题吧。
这里在 Resources 目录下创建 mapping 文件夹。
mapping 文件夹里面 创建 UserMapping.xml 文件。
这样可以发现它的报错就没了。
然后UserMapping 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?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" > <mapper namespace="com.tank.dao.UserDao"> <resultMap id="UserBaseMap" type="com.tank.model.User"> <id column="id" property="id" jdbcType="BIGINT"/> <result column="user_name" property="userName" jdbcType="VARCHAR"/> <result column="user_phone" property="userPhone" jdbcType="VARCHAR"/> <result column="user_email" property="userEmail" jdbcType="VARCHAR"/> <result column="user_pwd" property="userPwd" jdbcType="VARCHAR"/> <result column="pwd_salt" property="pwdSalt" jdbcType="VARCHAR"/> <result column="create_time" property="createTime" jdbcType="DATE"/> <result column="modify_time" property="modifyTime" jdbcType="DATE"/> <result column="is_delete" property="isDelete" jdbcType="SMALLINT"></result> </resultMap> <select id="selectUserById" parameterType="java.lang.Long" resultMap="UserBaseMap"> SELECT * FROM t_user WHERE id = #{userId} </select> <select id="selectUserByPhoneOrEmail" resultMap="UserBaseMap"> SELECT * FROM t_user WHERE user_email = #{emailOrPhone} OR user_phone = #{emailOrPhone} AND user_state = #{state} </select> <select id="selectAllUser" resultMap="UserBaseMap"> SELECT * FROM t_user </select> </mapper> |
到这里,数据库配置大致就写完了…重要的操作也差不多了。
接下来就是解决 数据库的…数据展示。
我们在WEB-INF文件夹里面创建一个jsp文件夹。
然后在文件夹里面创建一个 ShowUser.jsp
如下图:
然后修改文件内容,用来展示数据。——前面信息保不保留随意的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Title</title> </head> <body> Hello... <br/> <c:if test="${!empty userList}"> <c:forEach var="user" items="${userList}"> 姓名:${user.userName} 手机号:${user.userPhone} 邮箱:${user.userEmail} <br> </c:forEach> </c:if> </body> </html> |
然后可以发现报错了。好像是jstl…那就pom.xml文件…继续加好了。
1 2 3 4 5 |
<dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> |
最后我们要修改 Controller 来让它将一个页面指向 ShowUser.jsp …
修改后内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package com.tank.controller; import com.tank.model.User; import com.tank.service.UserService; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; @Controller @RequestMapping("/") public class MainController { public String index() { return "index"; } @Resource private UserService userService; @RequestMapping("/showUser") public String showUser(HttpServletRequest request, Model model){ List<User> userList = userService.getAllUser(); model.addAttribute("userList",userList); return "showUser"; } } |
可以发现http报错…恩,你知道又要加 pom.xml的文件了。
1 2 3 4 5 |
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> |
然后接下来,我们是不是忘了把 spring-batis 加进来?
所以在 web.xml 里面增加这两段:
1 2 3 4 5 6 7 8 9 |
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <!-- spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> |
看起来好像没什么错了?
我忽然发现,我把 showUser 打成了 ShowUser…
不知道有没有人发现。然后运行
打开 http://localhost:8080/showUser
发现还是 404…
那就在sping-mvc.xml 里面加上一小段
1 |
<mvc:annotation-driven/> |
然后再运行… 500…
掉了包!!! 数据库驱动包!
在pom.xml里面增加:
1 2 3 4 5 6 |
<!-- 添加mysql驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.5</version> </dependency> |
再运行…成功!
最后是垃圾的 Git 地址: https://github.com/tk-xiong/SSMDemo
Tips: 这里如果项目运行不起来,那就把 Tomcat 的配置换成第一篇文章里的那种本地的方式试试 。好吧,我承认我换了!
其他,有问题留言,尽力帮助解决。每天都在线。
大佬,运行的时候报这个错误是什么意思
30-Aug-2018 17:14:37.751 警告 [RMI TCP Connection(5)-127.0.0.1] org.springframework.web.context.support.XmlWebApplicationContext.refresh Exception encountered during context initialization – cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘mainController’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userServiceImpl’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.two.dao.UserDao’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}
30-Aug-2018 17:14:37.756 严重 [RMI TCP Connection(5)-127.0.0.1] org.springframework.web.context.ContextLoader.initWebApplicationContext Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘mainController’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userServiceImpl’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.two.dao.UserDao’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}