SpringMVC环境搭建超详细记录!五小时整理总结!

项目搭建实操



项目文件结构:

整个项目分为三个层次:controller层、service层、mapper层,分别放在三个单独的文件夹中

除此之外还有pojo(Plain Old Java Object),也就是一般来说的对象,防止在pojo文件夹中

所有配置文件放在resource文件夹中

整体看起来的样子:

SpringMVC环境搭建超详细记录!五小时整理总结!_第1张图片

由于只是一个简单的demo,所以看起来并不复杂 ,开发中有需要的话还可以放置vo、util等文件夹。

然后分别展开:

SpringMVC环境搭建超详细记录!五小时整理总结!_第2张图片

resource文件夹:

SpringMVC环境搭建超详细记录!五小时整理总结!_第3张图片

​ 可以看出,如果不使用注解的话,整个SpringMVC环境的搭建基本都是在围绕着配置配置文件的工作展开的,出错的几率非常高,使用起来非常的麻烦,这也是为什么人称 “配置地狱”了,也是因为这样才有后来的SpringBoot。

创建maven项目

添加依赖

  • Spring-webmvc
  • junit
  • c3p0
  • Mysql-java
  • Servlet-api
  • jsp-api
  • mybatis
  • Mybatis-spring
  • aop

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <groupId>com.lingroupId>
    <artifactId>PersonalPageartifactId>
    <version>1.0-SNAPSHOTversion>

    <dependencies>

        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>5.3.5version>
        dependency>

        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.13.2version>
            <scope>testscope>
        dependency>

        <dependency>
            <groupId>com.mchangegroupId>
            <artifactId>c3p0artifactId>
            <version>0.9.5.2version>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.47version>
        dependency>

        <dependency>
            <groupId>javax.servlet.jspgroupId>
            <artifactId>jsp-apiartifactId>
            <version>2.2version>
        dependency>

        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>servlet-apiartifactId>
            <version>2.5version>
        dependency>

        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.5.7version>
        dependency>

        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>2.0.2version>
        dependency>

        <dependency>
            <groupId>org.aspectjgroupId>
            <artifactId>aspectjweaverartifactId>
            <version>1.9.6version>
        dependency>
    dependencies>


project>

过滤静态资源文件

在pom.xml文件的依赖后面加入,防止打包的时候静态资源文件不被识别

    <build>
        <resources>
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
        resources>
    build>

项目右击,添加web框架支持

SpringMVC环境搭建超详细记录!五小时整理总结!_第4张图片 SpringMVC环境搭建超详细记录!五小时整理总结!_第5张图片

在项目中多出的web文件加中找到WEB-INF/web.xml文件

SpringMVC环境搭建超详细记录!五小时整理总结!_第6张图片

配置web.xml

未配置的样子:


<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_4_0.xsd"
         version="4.0">
    
web-app>

配置DispatcherServlet

每一个请求都会从这个Servlet经过,然后进行匹配处理,最终找到对应的controller分发出去。


    <servlet>
        <servlet-name>springmvcservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
      
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:ApplicationContext.xmlparam-value>
        init-param>
      
        <load-on-startup>1load-on-startup>
    servlet>
    
			
    <servlet-mapping>
        <servlet-name>springmvcservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>
    

注意:不要讲路径/误写为/*,会导致出错

/会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url

/ *会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和.html)等

配置CharacterEncodingFilter


    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    filter>

    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>
    

配置好的web.xml



<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_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>springmvcservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:ApplicationContext.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    
    <servlet-mapping>
        <servlet-name>springmvcservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>


    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    filter>

    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>
    
web-app>

配置ApplicationContext.xml文件

在src/main/resource文件夹下创建ApplicationContext.xml文件。resource文件主要用于存放一些静态资源(如,图片、jsp等) 和配置文件。

未配置的ApplicationContext.xml

可以用来注册bean,主要用于汇总其他配置文件。

其他配置文件最终都会导入这个文件中


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

beans>

创建数据库

先登陆自己的数据库,然后创建自己需要的数据库。

数据库中按照自己的需要去创建表

CREATE DATABASE personalPage;

IntelliJ Idea连接数据库

SpringMVC环境搭建超详细记录!五小时整理总结!_第7张图片

选择自己的数据库类型

SpringMVC环境搭建超详细记录!五小时整理总结!_第8张图片

输入配置信息,输入完成后复制下面的URL,点击Apply 然后 OK

SpringMVC环境搭建超详细记录!五小时整理总结!_第9张图片

连接成功,因为暂时还没有数据,所以没有显示太多东西

SpringMVC环境搭建超详细记录!五小时整理总结!_第10张图片

配置database.properties文件

同样在resource文件夹下创建database.properties文件.

用于放置连接数据库所必须的配置信息。

基本配置总共四种:

  • Driver:驱动

  • url:数据库地址 就是刚刚连接数据库时候复制的URL

    ​ 后面需要拼接一些参数:

    ​ useSSL=false 不使用安全连接

    ​ useUnicode=true 使用unicode编码

    ​ characterEncoding=utf8 字符编码使用utf-8

  • Username:登陆数据库的用户名

  • password:登陆数据库的密码

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/personalPage?useSSl=false&useUnicode=true&characterEncoding=utf8;
jdbc.username=root
jdbc.password=199803040.0

配置spring-dao.xml文件

在resource下创建spring-dao.xml文件

未配置的spring-dao.xml文件


<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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

beans>

在这个配置文件中,我们主要需要做一下几点事情:

  • 关联数据库文件
  • 配置数据库连接池,我们选择使用c3p0,还可以使用druid等
  • 注册SqlSessionFactoy对象
  • 配置自动扫瞄dao层对象

下面我们来逐一实现

  1. 关联数据库文件,就是刚刚的database.properties配置文件
<context:property-placeholder location="database.properties"/>
  1. 配置c3p0数据库连接池
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
      
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
  		
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
			  
        <property name="autoCommitOnClose" value="false"/>
        
        <property name="checkoutTimeout" value="10000"/>
        
        <property name="acquireRetryAttempts" value="3"/>
    bean>
  1. 注册SqlSessionFactory对象

获取sqlSessionFactory对象通常是构造SqlSession对象的重要一步,而Sqlsession又是使用Mybatis最重要的对象。

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      	
        <property name="dataSource" ref="dataSource"/>
      	
        <property name="configLocation" value="classpath:mybatis-config"/>
    bean>

配置mybatis-config.xml文件

在resource文件夹下创建mybatis-config.xml文件,主要用于配置mybaitis

未配置的文件:



<configuration>

configuration>

这个文件中要做两件事情

  • 将mapper文件注册进来
  • 配置需要的日志、别名等设置

在没有和spring整合之前,mybatis所有配置都需要在这个文件中进行,基本上写的是满满当当,和spring整合之后,由于注解等开发方式的介入,极大程度的减轻了配置文件的内容!

OK!我们现在还没有Mapper文件,那么我们需要去完善一下数据库和实体类!

创建数据表

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `username` varchar(30) NOT NULL,
  `id` int NOT NULL,
  `password` varchar(30) NOT NULL,
  `age` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

SET FOREIGN_KEY_CHECKS = 1;

插入数据

INSERT INTO `personalPage`.`user` (`username`, `id`, `password`, `age`) VALUES ('小明', 1, 'woshixm', 23);
INSERT INTO `personalPage`.`user` (`username`, `id`, `password`, `age`) VALUES ('小红', 2, 'woshixh', 18);
INSERT INTO `personalPage`.`user` (`username`, `id`, `password`, `age`) VALUES ('小亮', 3, 'woshixl', 20);
INSERT INTO `personalPage`.`user` (`username`, `id`, `password`, `age`) VALUES ('小白', 4, 'woshixb', 18);

修改id为自增

ALTER TABLE user CHANGE id id INT( 10 ) NOT NULL AUTO_INCREMENT;

在src/main/java路径下创建文件夹com.** 这里的 ** 随便起,然后在其下创建结构如下的目录

SpringMVC环境搭建超详细记录!五小时整理总结!_第11张图片

controller主要负责程序逻辑的控制,

service和mapper主要负责业务和数据的处理

pojo主要放置实体类。

创建实体类

在pojo文件夹中创建User实体类,注意属性字段和数据库中的字段名一一对应

package com.lin.pojo;

public class User {

    private int id ;

    private int age;

    private String username;

    private String password;

    public User() {
    }

    public User(int id, int age, String username, String password) {
        this.id = id;
        this.age = age;
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", age=" + age +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

创建mapper层

在mapper文件夹中创建接口 UserMapper

package com.lin.mapper;

import com.lin.pojo.User;

import java.util.List;

public interface UserMapper {

    //增加一个用户
    int addUser(User user);


    //通过id删除一个用户
    int deleteUserById(int id);

    //修改用户信息
    int updateUser(User user);

    //通过id查询一个用户
    User queryUserById(int id);

    //查询所有用户
    List<User> queryAllUser();


}

在mapper文件夹中创建UserMapper.xml文件来实现这个接口

空文件头:




在其中绑定对应的mapper接口




<mapper namespace="com.lin.mapper.UserMapper">

    <insert id="addUser" parameterType="com.lin.pojo.User">
        insert into personalPage.user (username, id, password, age)
        VALUES (#{username},#{id},#{password},#{age})
    insert>

    <delete id="deleteUserById" parameterType="int" >
        delete from personalPage.user
        where id = #{id}
    delete>

    <update id="updateUserById" parameterType="com.lin.pojo.User">
        update personalPage.user
        set username = #{username},
            age = #{age},
            password = #{password}
        where id = #{id};
    update>

    <select id="queryUserById" resultType="com.lin.pojo.User">
        select * from personalPage.user
        where id = #{id};
    select>

    <select id="queryAllUser" resultType="com.lin.pojo.User">
        select * from personalPage.user;
    select>


mapper>

然后我们返回去将这个mapper.xml文件注册进 mybatis-config.xml文件中



<configuration>


<mappers>
    <mapper class="com.lin.mapper.UserMapper"/>
mappers>
configuration>

再将spring-dao.xml文件完善,加入自动扫描mapper的配置

将下面的bean加入spring-dao.xml文件

    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.lin.mapper"/>
     bean>

创建service层

在service文件夹下创建UserService接口和UserServiceImpl.java

分别编写接口和实现类如下:

package com.lin.service;

import com.lin.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserService {
    //增加一个用户
    int addUser(User user);


    //通过id删除一个用户
    int deleteUserById(@Param("id") int id);

    //修改用户信息
    int updateUser(User user);

    //通过id查询一个用户
    User queryUserById(@Param("id") int id);

    //查询所有用户
    List<User> queryAllUser();

}

package com.lin.service;

import com.lin.mapper.UserMapper;
import com.lin.pojo.User;

import java.util.List;

public class UserServiceImpl implements UserService{
    UserMapper userMapper;

    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public int addUser(User user) {
        return userMapper.addUser(user);
    }

    public int deleteUserById(int id) {
        return userMapper.deleteUserById(id);
    }

    public int updateUser(User user) {
        return userMapper.updateUser(user);
    }

    public User queryUserById(int id) {
        return queryUserById(id);
    }

    public List<User> queryAllUser() {
        return userMapper.queryAllUser();
    }
}

配置spring-service.xml文件

在resource文件夹下创建spring-service.xml文件

空文件头模版:


<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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
         https://www.springframework.org/schema/aop/spring-aop.xsd
          http://www.springframework.org/schema/context
         https://www.springframework.org/schema/context/spring-context.xsd">

beans>

主要需要配置的功能有:

  • 自动扫描service包,将其中的组建注册到容器中
  • 将需要注册的业务注册到spring中,可以通过xml也可以通过注解
  • 声明事务
  • 通过AOP切入事务的支持
  1. 自动扫描service包

    <context:component-scan base-package="com.lin.service"/>
    
  2. 将UserServiceImpl注册到Spring中进行托管

    <bean id="bookServiceImpl" class="com.lin.service.UserServiceImpl">
        <property name="userMapper" ref="userMapper"/>
    bean>
    
  3. 声明事务

     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
    bean>
    
  4. AOP实现事务支持

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="*" propagation="REQUIRED"/>
            tx:attributes>
        tx:advice>
        
        <aop:config>
            <aop:pointcut id="txPointCut" expression="execution(* com.lin.mapper.*.*(..))"/>
            <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointCut"/>
        aop:config>
    

配置springmvc-servlet.xml文件

​ 最后 我们需要为整个项目配置springmvc-servlet.xml文件,保证整个项目在运行过程中,可以按照springmvc设计的流程正常运转

​ 同样,我们将此文件创建在resource文件夹下
未配置的pringmvc-servlet文件


<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.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">
beans>


我们需要做的事情有:

  • 自动扫描controller,将其进行注册
  • 实现静态资源的过滤
  • 实现视图解析器
  • 实现servlet映射和适配

我们开始吧:

  1. 配置自动扫描目录
<context:component-scan base-package="com.lin.controller"/>
  1. 实现静态资源过滤
<mvc:default-servlet-handler/>
  1. 实现servlet映射和适配
<mvc:annotation-driven/>
  1. 实现servlet映射和适配
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/jsp/"/>
     <property name="suffix" value=".jsp"/>
bean>
最后把spring-dao、spring-service、springmvc-servlet三个配置全部导入ApplicationContext.xml文件中
```xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
   <import resource="classpath:spring-dao.xml" /> 
   <import resource="classpath:spring-service.xml" /> 
   <import resource="classpath:springmvc-servlet.xml" /> 
beans>

创建controller层

package com.lin.controller;

import com.lin.pojo.User;
import com.lin.service.UserServiceImpl;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("user")
public class UserController {
    
    UserServiceImpl userService;
    
    @RequestMapping("/getUser")
    public String getUserById(int id, Model model){
        User user = userService.queryUserById(id);
        model.addAttribute("user",user);
        return "userInfo";
    }
}

设置jsp页面

设置默认页面index.jsp,输入id进行查询一个用户

<%--
  Created by IntelliJ IDEA.
  User: liushanlin
  Date: 2021/6/27
  Time: 1:17 下午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
  

设置查询结果页面 userInfo.jsp

<%--
  Created by IntelliJ IDEA.
  User: liushanlin
  Date: 2021/6/27
  Time: 4:56 下午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


${user.id}

${user.username}

${user.age}

${user.password}

配置Tomcat服务器

SpringMVC环境搭建超详细记录!五小时整理总结!_第12张图片

SpringMVC环境搭建超详细记录!五小时整理总结!_第13张图片

将maven依赖中的包添加到artifact中对应的文件夹下

SpringMVC环境搭建超详细记录!五小时整理总结!_第14张图片

SpringMVC环境搭建超详细记录!五小时整理总结!_第15张图片

配置context

在file–>project structure ---->module里面点击项目

可以看到配置文件的context设置

SpringMVC环境搭建超详细记录!五小时整理总结!_第16张图片

测试

service-dao层测试

首先测试业务层查询逻辑

建立在test/java文件夹下建立test类

import com.lin.pojo.User;
import com.lin.service.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    @Test
    public void test(){
        ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        UserServiceImpl userServiceImpl = context.getBean("userServiceImpl", UserServiceImpl.class);
        User user = userServiceImpl.queryUserById(2);
        System.out.println(user);
    }
}

控制台输出:

User{id=2, age=18, username=‘小红’, password=‘woshixh’}

Process finished with exit code 0

整体测试

启动Tomcat 在浏览器中方案http://localhost:8080/

不出意外应该得到上图所示的结果,输入查询的用户编号,点击查询

SpringMVC环境搭建超详细记录!五小时整理总结!_第17张图片

得到查询结果。

整个项目的前端页面只是为了验证项目的逻辑和环境的搭建是否成果,没有添加其他样式,看起来非常美观,但只要逻辑跑的通,前端的样式慢慢调整成自己喜欢的样子就好了!

BUG:

tx命名空间爆红

SpringMVC环境搭建超详细记录!五小时整理总结!_第18张图片

解决:其中tx命名空间爆红是因为缺少maven依赖,导入后恢复正常

<dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>5.3.5version>
dependency>

org.springframeworl.jdbc.dataSource.DataSourceTranssactionManager不会提示,但直接全限定名输入,也不会报错。

​ 太坑了!我一直以为自己哪里做的不对,反复检查对比!太坑爹了!

找不到CharacterEncodingFilter

java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter

解决方法:maven reload 然后吧包重新添加到项目的artifact的lib里面

找不到applicationContext.xml /接口无效绑定

IOException parsing XML document from class path resource [ApplicationContext.xml];

!!!

解决方案!
SpringMVC环境搭建超详细记录!五小时整理总结!_第19张图片

之前在项目中创建了一个子模块,然后项目的自动升级为父模块,项目的pom.xml文件中自动多了一行

《packaging》pom《/packaging》

pom ---------> 父类型都为pom类型

jar ---------> 内部调用或者是作服务使用

war ---------> 需要部署的项目

打包为pom没有代码需要编译,也没有资源需要处理!

也就是说!

打包的文件里面没有xml,properties等配置文件!

当调用mapper查询数据的时候,接口找不到绑定的mapper.xml文件!

就会报错:绑定未生效!坑!!!!!!!

你可能感兴趣的:(spring成神之路,springmvc,spring,java,ssm,mybatis)