最近在学习ssm试着自己做了一个小练习,有必要在重新理一下这个思路。
1.整合相关的ssm首先需要导入相关的jar包。
这些jar包我稍后会上传有需要的同学可以下载
在实际操作的时候我发现在myeclipse中Ja包导入并且buildpath了还是会出现jar包未导入的相关报错信息,这时候右键属性找到deployment assembly add java buld path entry就可以解决相关的问题这一点的使用和eclispe有点不一样,至于具体原因我也没有追究
2配置xml文档
<!-- 加载Spring容器配置 No Spring WebApplicationInitializer types detected on classpath-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 设置Spring容器加载所有的配置文件的路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置初始配置化文件,前面contextConfigLocation看情况二选一 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-mvc.xml</param-value>
</init-param>
<!-- 启动加载一次 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!--为DispatcherServlet建立映射 -->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
一开始也是直接网上搜一下代码复制粘贴,现在有必要理解一下各个元素的意思了。
2.1<context-param>加载你的springmvc.xml文件这里的<param-value>中的classpath我觉得很多人一开始跟我一样费解关于这个解释
首先 classpath是指 WEB-INF文件夹下的classes目录
解释classes含义:
1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml
2.存放模板文件 eg.actionerror.ftl
3.存放class文件 对应的是项目开发时的src目录编译文件
总结:这是一个定位资源的入口
2.2<listener>这个元素之所以没有第一个讲是因为我在一开始没有加入后来运的时候报错
No Spring WebApplicationInitializer types detected on classpath
就是缺少了这个元素
作用:http://blog.csdn.net/java_wliang/article/details/18044507
可以参考上面那个博客我觉得当你需要加载多个xml文件的时候就需要配置这个listener
3.配置spirngmvc.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-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.bbs.controller" />
<context:component-scan base-package="com.bbs.serviceImpl"/>
<context:component-scan base-package="com.bbs.mapper"/>
<!-- 开启注解 -->
<mvc:annotation-driven />
<!--
配置静态资源,直接映射到对应的文件夹,不被DispatcherServlet处理,3.04新增功能,需要重新设置spring-mvc-3.0.xsd
-->
<mvc:default-servlet-handler/>
<!-- 定义跳转的文件的前后缀 ,视图模式配置-->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
3.1关于springmvc.xml的作用归结起来就是2个字注解 扫描注解 开启注解 以及视图解析前面2个都是和注解有关,注解扫描没什么好说的视图解析也没什么好说的就是进行转发的时候帮你把那些前面一些路径和后缀给你加上这样你在controller里面只要return"success";就会转发到相关的jsp文件,注意这是转发,转发,转发,重要的事情说三遍。
3.2<mvc:default-servlet-handler/>和<mvc:annotation-driven/>是搭配一起使用的用来加载静态资源文件的不多说。
4建立相关的包和类
4.1重点是mapper这个包就是类似刀包和数据库进行交互的mybaits的一个优势就是讲sql语句放在特定的xml文件里面和java代码进行了分离,给人很清晰的感觉
来看一下userMapper.xml文件里面的代码就是映射UserMapper.java里面的方法的
先看一下UserMapper.java里面的代码
public interface UserMapper {
User login(String username,String password);
}
4.2 userMapper.xml
<?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">
<!--
namespace:必须与对应的接口全类名一致
id:必须与对应接口的某个对应的方法名一致
-->
<mapper namespace="com.bbs.mapper.UserMapper">
<!-- mybsits_config中配置的alias类别名,也可直接配置resultType为类路劲 -->
<select id="login" parameterType="java.lang.String" resultType="User">
select * from user where username=#{0} and password=#{1}
</select>
</mapper>
4.2.1注意这里的namespace就是上面的那个类的位置 id对应你的方法 <select>对应你的操作 主要有4个<select> <insert> <update> <delete>
paramterType对应传入的形参,resulttype:返回的类型,没什么好说的
5 建立mybatis-config.xml文件
5.1userMapper.xml其实就类似于UserMapper的一个实现类,我们之前都是这样做的啊建立一个接口类然后实现它的方法,只不过现在把dao层的操作放在了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>
<typeAliases>
<typeAlias alias="User" type="com.bbs.beans.User" />
</typeAliases>
<mappers>
<mapper resource="com/bbs/mapper/userMapper.xml" />
</mappers>
</configuration>
5.1.1没什么好说的typeAliases是别名的意思.
5.1.2既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了。但是首先我们需要告诉 MyBatis 到哪里去找到这些语句<mappers>的用法就是这个
6配置spring-common.xml文件进行连接数据库的操作以及Mybatis初始化工作
<?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:p="http://www.springframework.org/schema/p"
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-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/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 1. 数据源 : DriverManagerDataSource -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!--
2. mybatis的SqlSession的工厂: SqlSessionFactoryBean dataSource:引用数据源
MyBatis定义数据源,同意加载配置
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>
<!--
3. mybatis自动扫描加载Sql映射文件/接口 : MapperScannerConfigurer sqlSessionFactory
basePackage:指定sql映射文件/接口所在的包(自动扫描)
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.bbs.mapper"></property>
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
<!--
4. 事务管理 : DataSourceTransactionManager dataSource:引用上面定义的数据源
-->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 5. 使用声明式事务
transaction-manager:引用上面定义的事务管理器
-->
<tx:annotation-driven transaction-manager="txManager" />
</beans>
6.1 看着有点烦
<bean id="dataSource">这个就不说了 连接数据库的基本配置
<bean id="sqlsessionFactory">
我们每个数据库,对应一个SqlSessionFactory,可以明确的获取哪一个数据库的SqlSessionFactory。具体用处我现在也不怎么了解,总之俩个属性dataSource和conifgloaction目前告诉我们就是进行数据库的连接和指定mybatis的xml文件路径的。
6.2<bean id=..MapperScannerConfiguer>扫描mapper映射文件所在的包
6.3
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
将datasource注入transactionManager之后注册tx:annotation-driven内就可以在代码中使用注解Transactional进行定义事务了
这里是Spring在启动时将transactionManager的代码织入业务代码来实现事务管理(后续会研究如何织入的)。
http://download.csdn.net/detail/baidu_33403616/9792885 code 下载