发表于: 2022-05-18 19:04:47

1 633



在springmvc-servlet.xml中添加查询路径指向controller文件


<!-- 自动扫描装配视图层,Controller -->
<context:component-scan base-package="com.weixiao.controller"/>


在applicationContext.xml添加查询路径指向serviver文件

<context:component-scan base-package="com.weixiao.Service"/>


将昨天的xml文件代码整理好


applicationContext.xml:

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

   <!--启用spring的一些annotation -->
   <context:component-scan base-package="com.weixiao.Service"/>


   <!--引入数据库配置文件-->
   <context:property-placeholder location="classpath:db.properties"/>

   <!--配置数据源-->
   <!--  这里用的是dbcp连接池,也可以换成druidc3p0  -->
   <bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="driverClassName" value="${db.driver}" />
       <property name="url" value="${db.url}"/>
       <property name="username" value="${db.username}"/>
       <property name="password" value="${db.password}"/>
       <property name="maxActive"  value="10"/>
       <property name="maxIdle" value="5"/>
   </bean>

   <!--配置sqlSessionFactory-->
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <!--指定Mybatis项目指定的配置文件-->
       <property name="configLocation" value="classpath:mybatis-config.xml"/>
       <!--指定数据源-->
       <property name="dataSource" ref="dataSource1"/>
   </bean>

   <!--  配置mapper扫描,动态实现了mapper接口可以注册到spring容器中  -->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
       <!--  要扫描的mapper  -->
       <property name="basePackage" value="com.weixiao.dao"/>
   </bean>





   <!--jdbc配置-->




   <bean id="biageDao" class="com.weixiao.JdbcTemplateTest"/>
   <bean id="biageService" class="com.weixiao.JdbcTemplateTest"/>


   <!--系统默认配置的连接池-->
   <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="username" value="root"></property>
       <property name="password" value="adbrk"></property>
       <property name="url" value="jdbc:mysql://localhost:3306/fc"></property>
       <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
   </bean>

   <bean id="jdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
       <property name="dataSource" ref="dataSource"></property>
   </bean>



</beans>


springmvc-servlet.xml

<?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.xsd
      http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd

         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

   <!--此文件负责整个mvc中的配置-->

   <!-- 自动扫描装配视图层,Controller -->
   <context:component-scan base-package="com.weixiao.controller"/>

   <!-- 静态资源过滤-->
   <mvc:default-servlet-handler/>
   <!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
   <mvc:annotation-driven>
       <mvc:message-converters register-defaults="true">
           <bean class="org.springframework.http.converter.StringHttpMessageConverter">
               <property name="supportedMediaTypes">
                   <list>
                       <!-- 解决中文乱码问题 -->
                       <value>application/json;charset=UTF-8</value>
                       <value>text/plain;charset=UTF-8</value>
                       <value>text/html;charset=UTF-8</value>
                   </list>
               </property>
           </bean>
       </mvc:message-converters>
   </mvc:annotation-driven>
   <!--静态资源映射-->
   <!--本项目把静态资源放在了webappstatics目录下,资源映射如下-->
   <mvc:resources mapping="/css/**" location="/static/css/"/>
   <mvc:resources mapping="/js/**" location="/static/js/"/>
   <mvc:resources mapping="/image/**" location="/static/images/"/>
   <mvc:default-servlet-handler/>  <!--这句要加上,要不然可能会访问不到静态资源,具体作用自行百度-->

   <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
   <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- -->
   <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
       <!--设置JSP文件的目录位置-->
       <property name="prefix" value="/WEB-INF/views/"/>
       <property name="suffix" value=".html"/>
       <property name="exposeContextBeansAsAttributes" value="true"/>
   </bean>


</beans>


mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
       PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <mappers>
       <!-- 映射器告诉MyBatis到哪里去找映射文件-->
       <mapper resource="com/mapper/UserMapper.xml"/>
   </mappers>

</configuration>




问题1:中文乱码:


原因jsp文件当中缺少一个配置:


<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>

配置补充完,乱码解决。




问题2:

Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on project weixiao01: Could not start Tomcat


发现是tomcat端口占用,将还在执行的程序关闭之后在运行,发现还是报错.

原因:target文件没有 更新,删除targe文件之后重新运行,执行成功。





遇到的问题:查询数据时候一直显示错误




原因:dbproperties文件中的数据库名称输入错误,一直找不到数据库的来源。之前一直将这里当成查询表的信息,经过提醒找到了原因所在。


web.xml文件中缺少了一个ContextLoaderListener配置:


<!-- 使用ContextLoaderListener初始化Spring容器 -->
<listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>



更改完成之后:查询成功







这个web.xml配置指扫描resources目录下的xml文件:


<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:*.xml</param-value>
</context-param>


param-value:对象来获取请求参数的所有值



查询到的结果与数据库一致。



完成mybatis之后查询一些配置和注释信息的意思:

ContextLoaderListener:可以指定在Web应用程序启动时载入Ioc容器,正是通过ContextLoader来实现的,可以说是Ioc容器的初始化工作。


 

@responseBody注解的作用是将(控制器)controller的方法返回的对象通过适当的转换器转换为指定的格式之后,

  写入到response对象的body区(body是用在网页中的一种HTML标签),通常用来返回JSON数据或者是XML。



SqlSessionFactory是MyBatis中的一个重要的对象,它是用来创建SqlSession对象的,而SqlSession用来操作数据库的。


 SqlSessionFactory是Mybatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或者一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。每一个Mybaits的应用给程序都以一个SqlSessionFactory对象的实例为核心,同时SqlSessionFactory也是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在,在应用运行期间不要重复创建多次,建议使用单例模式。SqlSessionFactory是创建SqlSession的工厂。


SqlSession是MyBatis的关键对象,它是应用程序与持久层之间交互操作的一个单线程对象,类似于JDBC中的Connection。SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行被映射的SQL语句。每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,同时SqlSession也是线程不安全的,绝对不能讲SqlSeesion实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Servlet当中的HttpSession对象中。使用完SqlSeesion之后关闭Session很重要,应该确保使用finally块来关闭它。


configLocation:配置文件




ContextLoaderListener:上下文加载程序侦听器


ContextLoaderListener的作用就是启动Web容器时,读取在contextConfigLocation中定义的xml文件,自动装配ApplicationContext的配置信息,

并产生WebApplicationContext对象,然后将这个对象放置在ServletContext的属性里,

这样我们只要得到Servlet就可以得到WebApplicationContext对象,并利用这个对象访问spring容器管理的bean。简单来说,就是上面这段配置为项目提供了spring支持,初始化了Ioc容器。




明天计划:将mymatis重新编写一遍巩固知识点。









返回列表 返回列表
评论

    分享到