SSM框架快速整合与测试

来源:互联网 发布:建筑学前景知乎 编辑:程序博客网 时间:2024/06/08 08:12

要整合Spring、SpringMVC、Mybatis框架,由于前两者本来就是一家,所以说到底还是Spring与Mybatis框架的整合,根据三次架构思想,我们可以根据Dao层,Service层,Controller层一层一层给配起。
1、创建maven项目,使用maven进行导包

<dependencies>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>4.3.10.RELEASE</version>    </dependency>    <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.12</version>    </dependency>    <dependency>        <groupId>org.glassfish.web</groupId>        <artifactId>javax.servlet.jsp.jstl</artifactId>        <version>1.2.2</version>    </dependency>    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis-spring</artifactId>        <version>1.2.3</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>1.7.2</version>    </dependency>    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.43</version>    </dependency>    <dependency>        <groupId>commons-dbcp</groupId>        <artifactId>commons-dbcp</artifactId>        <version>20030825.184428</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-jdbc</artifactId>        <version>4.3.10.RELEASE</version>    </dependency>    <dependency>        <groupId>commons-pool</groupId>        <artifactId>commons-pool</artifactId>        <version>1.5.6</version>    </dependency>    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis</artifactId>      <version>3.2.8</version>    </dependency>  </dependencies>

2、引入属性配置文件jdbc.properties和spring配置文件
applicationContext.xml

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/mybatis2?characterEncoding=utf-8jdbc.username=rootjdbc.password=123456
<!-- 加载配置文件 -->    <context:property-placeholder location="classpath:jdbc.properties"/>    <!-- 配置数据库连接池 -->    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">        <property name="url" value="${jdbc.url}"></property>        <property name="driverClassName" value="${jdbc.driver}"></property>        <property name="username" value="${jdbc.username}"></property>        <property name="password" value="${jdbc.password}"></property>    </bean>    <!-- 配置SqlSessionFactory -->    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">        <property name="dataSource" ref="dataSource"/>        <property name="configLocation" value="classpath:sqlMapConfig.xml"/>    </bean>     <!--         mybatis获取mapper接口:        SqlSession session = SqlSessionFactory.openSession();        UserMapper mapper = session.getMapper(UserMapper.class);        与spring整合的话,如下配置顶替上面获取方式        会自动扫描com.scu.mybatis.mapper包下所有mapper接口,同时会在自动在容器        中寻找Session工厂。     -->    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.scu.mvc.mapper"></property>    </bean>    <!-- 注解事务 -->    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">        <property name="dataSource" ref="dataSource"/>    </bean>    <!-- 开启事务 -->    <tx:annotation-driven transaction-manager="transactionManager"/>

用到mybatis全局配置文件(比如用到了分页插件)那么也要引入sqlMapConfig.xml,到这里最好先创建好包com.scu.mvc.mapper和com.scu.mvc.entity以免后面再搞忘了。
3、引入SpringMVC配置文件springmvc.xml (只是为了层次分明而已,完全可以将配置都写到一个spring配置文件中)

<!--开启组件扫描--><context:component-scan base-package="com.scu.mvc"/><!--注解驱动,替代注解处理器和处理器适配器的配置-->    <mvc:annotation-driven/><!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/jsp/"/>    <property name="suffix" value=".jsp"/></bean>

创建好包com.scu.mvc.web
到这里SSM框架的整合就结束了。后面进行测试,展示商品列表。

4、web.xml

<!-- 指定spring配置文件位置,如果使用了ContextLoaderListener        而没有指定位置默认会去 找/WEB-INF/applicationContext.xml        从而会抛出FileNotFound异常        -->  <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:applicationContext.xml</param-value>   </context-param>   <!-- 使用Spring容器 -->  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   </listener>   <!-- 解决中文乱码问题 -->   <filter>    <filter-name>encoding</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>    <init-param>        <param-name>encoding</param-name>        <param-value>UTF-8</param-value>    </init-param>   </filter>   <filter-mapping>    <filter-name>encoding</filter-name>    <url-pattern>/*</url-pattern>   </filter-mapping>   <servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>        <!-- 指定springmvc配置文件位置 -->        <param-name>contextConfigLocation</param-name>        <param-value>classpath:springmvc.xml</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <!--         1./* 拦截所有 jsp js .png .css  真的全拦截.struts2不拦截这些   建议不使用        2.*.action,*.do拦截以action和*.do结尾的请求    肯定能使用  ERP        3./拦截所有(不包括jsp)(包含.js,.png.css)   强烈建议使用  前台面向消费者(如天猫,京东)     -->    <url-pattern>*.action</url-pattern>  </servlet-mapping>

注:如果拦截了静态资源,而静态资源在jsp中又需要使用的时候则需要在springmvc.xml中添加资源映射标签

<mvc:resources location="/WEB-INF/js/" mapping="/js/**"/>    <mvc:resources location="/WEB-INF/css/" mapping="/css/**"/>    <mvc:resources location="/WEB-INF/css/" mapping="/images/**"/>

数据库tb_item(商品表)如下
这里写图片描述
5、实体类,sql映射文件以及mapper均使用mybatis逆向工程生成。(是为了省事,自己根据需求写也很简单)
6、Service层

@Servicepublic class ItemServiceImpl implements ItemService{    @Autowired    private TbItemMapper itemMapper;    @Transactional    public List<TbItem> itemList() {    //查询所有商品信息        List<TbItem> list = itemMapper.selectByExample(null);        return list;    }}

7、Controller层

@Controllerpublic class ItemController {    @Autowired    private ItemService itemService;    @RequestMapping("/show")    public String showUserList(HttpServletRequest request){        List<TbItem> list = itemService.itemList();        request.setAttribute("itemList", list);        return "itemList";    }}

8、itemList.jsp中

<body> <form action="${pageContext.request.contextPath }/item/queryitem.action" method="post">查询条件:<table width="100%" border=1><tr><td><input type="submit" value="查询"/></td></tr></table>商品列表:<table width="100%" border=1><tr>    <td>标题</td>    <td>卖点</td>    <td>价格</td>    <td>销售截止日期</td></tr><c:forEach items="${itemList }" var="item"><tr>    <td>${item.title }</td>    <td>${item.sellPoint }</td>    <td>${item.price }</td>    <%-- <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td> --%>    <td><input type="text" name="sellDeadline"                 value='<fmt:formatDate value="${item.sellDeadline }" pattern="yyyy-MM-dd HH:mm:ss"/>' /></td>    <td><a href="${pageContext.request.contextPath }/toEdit.action?id=${item.id}">修改</a></td></tr></c:forEach></table></form></body>

这里写图片描述
启动工程指定tomcat作为运行环境,页面访问
http://localhost:8080/SpringMVC/show.action
显示:
这里写图片描述