三大框架整合之配置SpringMVC
配置前端控制器
在配置前端控制器之前导入相关的开发包,并把包的结构创建好
在web.xml中配置前端控制器,并且指定springmvc的核心位置文件的位置,前端控制器的本质是一个servlet
##在核心配置文件中 配置视图解析器
配置映射到网页的前缀和后缀,prefix表示前缀 suffix表示后缀
三大框架整合之配置Spring
配置spring
在src目录下创建applicationContext.xml文件(这里的文件名可以随意取)
三大框架整合之整合Spring与SpringMVC
在web.xml中添加一个监听器,监听应用的创建,使Spring容器在web初始化时就创建 配置监听器,用于创建和销毁容器
下面展示一些 web.xml中的配置
。
// A code block
<!--Spring与SpringMVC的整合-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置Spring的核心配置文件位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
<!--Spring与SpringMVC的整合-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置Spring的核心配置文件位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/applicationContext.xml</param-value>
</context-param>
配置完成以后,理论上Spring与SpringMVC已经整合在一起了,接下来可以编写代码进行测试
在service层的代码`。
// A code block
@Service
public class UserServiceImpl implements UserService{
@Override
public void addUser() {
System.out.println("测试Spring整合SpringMVC");
}
}
@Service
public class UserServiceImpl implements UserService{
@Override
public void addUser() {
System.out.println("测试Spring整合SpringMVC");
}
}
在web层的代码测试`。
// A code block
@Controller
@RequestMapping("/my01")
public class MyControllor01 {
@Autowired
private UserService userService = null;
@RequestMapping("/test01.action")
public void test01(){
System.out.println("my01test01...");
userService.addUser();
}
}
// An highlighted block
@Controller
@RequestMapping("/my01")
public class MyControllor01 {
@Autowired
private UserService userService = null;
@RequestMapping("/test01.action")
public void test01(){
System.out.println("my01test01...");
userService.addUser();
}
}
开启服务器,访问网址为locallhost:/my01/test01.action
在控制台查看输出内容,出现以下内容表示整合成功
整合Spring与MyBaties
配置MyBaties
在src下创建sqlMapConfig 里面只有一个configure标签,没有其他内容,注意:虽然这里的salMapConfig里面没有内容,但是这个文件不可省略
在src下创建一个包,里面用于创建xxxmapper.xml,即MyBaties的核心配置文件,在核心配置文件中写sql语句
创建bean
为了方便测试准备了一些数据,创建与数据库对应的bean ,并插入相应的bean属性,get,set方法
这是创建的Bean,这里的名字与数据库里的列名相对应,如果不对应不能进行自动封装bean,需要自己手动指定映射关系
配置数据源
由于数据库中的数据不止在MyBaties中需要使用,所以数据源不能配置在sqlMapConfig.xml中,需要配置在整个Spring中,所以应该在applicationContext.xml中配置数据源,对于配置数据源为了以后不用修改源代码,数据源的四大金刚一般情况下配置在配置文件中
编写一个jdbc.properties配置文件
在applicationContext.xml中配置数据源
下面展示一些 内联代码片
。
// A code block
<!--引入外部配置文件-->
<context:property-placeholder location="classpath:/jdbc.properties"/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
</bean>
<!--引入外部配置文件-->
<context:property-placeholder location="classpath:/jdbc.properties"/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
</bean>
其中的 d r i v e r C l a s s , {driverClass}, driverClass,{jdbcUrl}与配置文件的key值相对应
Spring整合MyBaties
主要配置MyBaties所需要的三大内容,数据源,恶心文件位置,配置文件位置,代码如下
下面展示一些 内联代码片
。
// A code block
<!--整合MyBaties-->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="dataSource"/>
<!--配置sqlMapConfig的位置-->
<property name="configLocation" value="classpath:/sqlMapConfig.xml"/>
<!--配置核心配置文件的位置-->
<property name="mapperLocations" value="classpath:/mapper/*.xml"/>
</bean>
<!--整合MyBaties-->
<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="dataSource"/>
<!--配置sqlMapConfig的位置-->
<property name="configLocation" value="classpath:/sqlMapConfig.xml"/>
<!--配置核心配置文件的位置-->
<property name="mapperLocations" value="classpath:/mapper/*.xml"/>
</bean>
整合完MyBaties后,由于我们的MyBaties的sql操作通过接口实现,所以还需要配置一个MyBaties扫描器,将这个接口交由Spring管理,以降低耦合性
下面展示一些 内联代码片
。
// A code block
<!--配置MyBaties扫描器,负责为mapperBean生成实现类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xyxhu.mapper"/>
</bean>
<!--配置MyBaties扫描器,负责为mapperBean生成实现类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xyxhu.mapper"/>
</bean>
测试三大框架的整合
//创建一个userMapper,命名空间与接口的全路径名一致,
<mapper namespace="com.xyxhu.mapper.UserMapper">
<select id="selectById" resultType="com.xyxhu.domain.User">
select * from user where id = #{id};
</select>
//编写接口中的函数,注意三点
//函数名与userMapper中的id一致,参数与userMapper中的参数一致
//返回类型与userMapper的返回值类型一致
public interface UserMapper {
public User selectById(int id);
}
//在service层中编写函数调用UserMapper的方法
@Autowired
private UserMapper userMapper = null;
public User selectById(int id) {
return userMapper.selectById(id);
}
//在service层中编写函数调用UserMapper的方法
@Autowired
private UserMapper userMapper = null;
public User selectById(int id) {
return userMapper.selectById(id);
}
//在web层调用service层的方法进行展示
@Autowired
private UserService userService = null;
User user = userService.selectById(5);
System.out.println(user);