Spring mvc spring mybatis学习过程中遇到的问题以及解决办法

1.spring mvc

在学习SpringMVC的时候,用eclipse创建了动态Web项目,用maven打包成war直接在tomcat运行成功。我用IDEA中的Maven构建了项目,发现打开网页时显示404错误。而我用eclipse重新构建项目后就能正常访问页面了,然而当我用IDEA自带的tomcat配件启动tomcat时,却发现出现404错误。/65b1e82074754cf1895699b30094c23e.png

搭建框架方面
   和搭建ssh等开发环境步骤基本一致,struts2是通过filter的方式拦截所有客户端的请求,spring mvc是通过一个自动装载的servlet来拦截,struts2是拦截所有的请求,写法如下:
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
spring mvc的配置为拦截/的请求,如下:
    <servlet-mapping>
        <servlet-name>spring3</servlet-name>
        <!-- 这里可以用 / 但不能用 /* ,拦截了所有请求会导致静态资源无法访问,所以要在spring3-servlet.xml中配置mvc:resources -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>  .

如何接收前台提交的数据?

spring mvc与struts2的最大区别就在这里,struts2的action方法都是无参数的,接收客户端提交的数据一般都是在action类定义实体类实例的方式来实现的,spring mvc则主要是通过定义action 方法参数来接3

 

2.spring

(1)项目中缺少日志jar包
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
这个问题是说,项目中缺少spring依赖的jar包文件。解决方案:加入commons-logging-1.1,.3.jar即可。
(2)找不到bean异常
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'filter2' is defined
这个问题是说,项目中找不到name为filter2的bean,需要配置一下。

3.mybatis 

(1)Type interface xx is not known to the MapperRegistry

原因:有以下两点:
a.在主配置文件中没有加入mapper.xml;
b.在mapper.xml文件中;

<mapper namespace="xxxxxx">中xxxxxx的名称与mapper接口的全程不一致;
(2)在进行数据模糊查询时,不能获取到数据,但是sql语句可以在数据库中查询到数据。

解决办法:

在配置文件的jdbc中的url上加上utf-8编码即可:

 

Mybatis学习笔记:

MyBatis框架在操作数据库时,大体经过了8个步骤。
(1) 读取MyBatis配置文件mybatis-config.xml。mybatis-config.xml作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,其中主要内容是获取数据库连接。

(2) 加载映射文件Mapper.xml。Mapper.xml文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在mybatis-config.xml中加载才能执行。mybatis-config.xml可以加载多个配置文件,每个配置文件对应数据库中的一张表。

(3) 构建会话工厂。通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。

(4) 创建SqlSession对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL的所有方法。

(5) MyBatis底层定义了一个Executor接口来操作数据库,它会根据SqlSession传递的参数动态的生成需要执行的SQL语句,同时负责查询缓存的维护。

(6) 在Executor接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装,用来存储要映射的SQL语句的id、参数等。Mapper.xml文件中一个SQL对应一个MappedStatement对象,SQL的id即是MappedStatement的id。

(7) 输入参数映射。在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数进行定义(可以定义为Map、List类型、基本类型和POJO类型),Executor执行器会通过MappedStatement对象在执行SQL前,将输入的Java对象映射到SQL语句中。这里对输入参数的映射过程就类似于JDBC编程中对preparedStatement对象设置参数的过程。

(8) 输出结果映射。在数据库中执行完SQL语句后,MappedStatement对象会对SQL执行输出的结果进行定义(可以定义为Map和List类型、基本类型、POJO类型),Executor执行器会通过MappedStatement对象在执行SQL语句后,将输出结果映射至Java对象中。这种将输出结果映射到Java对象的过程就类似于JDBC编程中对结果的解析处理过程。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值