要想搭建好ssm框架的开发环境。首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis。

然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就能有一个清晰的思路。

以便于我们把ssm整合起来。(后面有ssm框架的xml配置文件的命名空间)


spring的核心组件是IOC,DI还有AOP,spring作用就是通过这几个核心组件帮我们管理对象的。在ssm整合中spring也充当粘合剂的角色。

说道spring,那他一定是离不开ApplicationContext对象。在我们练习时,装配好的对象都是用这个对象来获取的。可以认定它就是管理我们装配好的对象的。

就java程序而言,main方法是程序的入口,我们实例化一次ApplicationContext对象就可以一直用他拿到装配好的对象了,可是我们要开发web应用程序,它

web程序没有统一的入口,我们也不能需要对象就创建有一个ApplicationContext对象,这样很耗费性,不能这样做。还有一个方法,就是当服务器启动时(tomcat)

,通过监听器将springIOC容器初始化。也就是说wen项目启动时,会自动加载web.xml,因此需要在web.xml中加载 监听器,这样ApplicationContext对象就被初始化了 ,

很幸运我们不用自己去写一个监听器了。spring框架就是这样帮我们写好了,因此我们在web.xml中配置spring提供的监听器就ok了。

<!-- 注册ServletContext监听器 (单例模式化context,context初始化一次就好,不需要用一次创建一个容器,耗费性能。) -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

web.xml文件在web程序中很重要,我们的所有配置都是通过这个配置文件关联起来的。所以我们还要关联其他配置文件。

因此web.xml中我们还要有个关联的配置。为了方便管理这些配置文件,我们创建一个Source Folder类型的文件夹来管理这些配置文件。为了提高可读性,我们配置文件的命名规范统一。

例:spring-xxx.xml。这样关联的配置也简化了。

<!-- 指定spring配置文件的位置和名称(把spring配置文件关联到web容器。) -->

<context-param>
<!-- contextCofigLocation命名规范见名知意吧,就叫这个,值要设置为我们spring配置文件的地址,可以使用通配符,关联多个配置文件。 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>

接下来我们还有在web.xml中配置springmvc,springmvc是controller层的框架,他是代替了以前的jsp和servlet,那他帮我们处理的就是模型数据,视图和控制的,

他的核心是DispatcherServelt(前端控制器),所以springmvc框架是围绕DispatcherServelt设计的。它处理所有的http请求和响应。那我们在web.xml中来配置它。

<!-- 注册springmvc的核心中央调度器(前端控制器,web的入口) -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfigLocation是DispatcherServlet类的属性,它的值设置为我们springmvc的配置文件地址,初始化的作用。 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>

<!--这个是启动优先级别,大于等于0代表容web器启动就跟着启动,这个值必须是整数-->
<load-on-startup>1</load-on-startup>
</servlet>

<!--拦截所有请求-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

(这里存在静态资源处理问题,我在springmvc静态资源处理文章中有写过解决办法)

然后我们在web.xml中在配置一个springmvc的视图编码过滤器

<!-- 注册视图编码过滤器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<!-- encoding是CharacterEncodingFilter类的属性他的值规定了视图编码 -->
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这样我们web.xml就配置完了。


然后我们搭建springmvc的组件HandlerMapping

在resources文件夹下创建spring-mvc.xml。

这个配置文件最主要干的一件事,就是把请求的url和对应controller的handlerMethod绑定在一起。就是组件HandlerMapping做的事。

而完成这个操作有两种方式。

1是通过标签来配置。默认是使用标签的方式实现HandlerMapping。name代表访问的url,class代表对应的controller。不灵活,推荐用注解。

<bean name="/index.html" class="cn.MVC.controller.IndexController"></bean>

2是通过注解的方式。driven是设置配置方案的(这样写就是使用注解的方案实现HandlerMapping),scan标签是扫描注解的,这样写就是扫描某个包下的注解。

<mvc:annotation-driven />

<context:component-scan base-package="controller"></context:component-scan>

然后我们在配置视图解析器,它的作用是拼接逻辑视图名,然后给我们返回一个完整的视图。

这里用的是jsp视图解析器(InternalResourceViewResolver),还有其他视图解析器,以及多视图解析器。

<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- prefix和suffix是这个试图解析父类里的属性,这里帮我们返回完整的视图/WEB-INF/jsp/index(index是逻辑视图名).jsp
他先拼接然后在帮我们找到这里,并跳转到这。 -->
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!-- 后缀 -->
<property name="suffix" value=".jsp" />
</bean>

ok。springmvc基本就配置完了,当然springmvc还有许多的组件用到时在扩充。


接下来在resources文件夹下创建spring-service.xml。

这个配置文件,我们就配置一个扫描service层注解的标签就ok了。

<context:component-scan base-package="com.xxx.biz"></context:component-scan>


最后准备搭建dao层框架mybatis的开发环境。

在resources文件夹下创建spring-mybatis.xml。

mybatis框架是专注于sql的框架。可想而知我们需要配置数据源。

配置数据源有2种方式

1之前单独用mybatis时,我们在mybatis-config.xml中配置数据源。

这里看我的博客mybatis学习经验。有详细的解说。

2但是现在我们搭建ssm开发环境,就在spring-mybatis.xml中配置数据源。

<!--引入连接数据库的一些必要参数》jdbc.properties(保存连接数据库的必要参数)-->

<context:property-placeholder location="classpath:jdbc.properties" />

<!-- 这里用dbcp连接池管理数据源,当然你还可以用其他的连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>

之前我们使用mybatis时,都是用创建的核心对象sqlSessionFactory来调用sql的。

但是现在我们搭建ssm开发环境,对象都交给了spring来管理,那就应该把他和spring融合在一起,我们就不再去创建sqlsession对象了。

都装配到spring了由它来管理。

<!-- 注册sqlsession,这个名字最好不用 SqlSessionFactory,可能导致数据源》${}通过key获取不到properties文件的值-->
<bean id="mySqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<!--把数据源给它-->
<property name="dataSource" ref="dataSource"></property>

<!--mybatis还有其他的一些配置,我们在这关联,一会在于配置-->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>

<!-- 这个类MapperScannerConfigurer帮我们生成 对应的动态代理类,类名就是该动态代理类的对象(首字母大写),这个对象就是我们最需要的,调用sql的对象。-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 把sqlsession给它 -->
<property name="sqlSessionFactoryBeanName" value="mySqlSessionFactory"></property>

<!--把dao层包路径给它,他会全部扫描-->
<property name="basePackage" value="com.xxx.dao"></property>
</bean>


接下来我们配置mybatis-config.xml,首先在resources文件夹下创建它。

这里我们要配置2个主要的东西,一个是把pojo或者beans里面的实体类,起别名,

关联所有*mapper.xml。还可以配置日志。

<!--日志-->

<settings>
<setting name="logImpl" value="LOG4J" />
</settings>

<!-- 给实体类起别名,用于*mapper.xml文件,我们写sql时,实体类数据类型的简写 -->
<typeAliases>
<package name="com.xxx.beans" />
</typeAliases>

<!-- 这里如果写错会导致获取不到dao的实例,无法映射*mapper.xml。可能导致许多问题 -->
<mappers>
<package name="com.xxx.dao" />
</mappers>


之后是jdbc.properties和log4j的properties。这2个文件,可以下载到。你自己写也行。

到这你就完成了搭建ssm开发环境的工作。


ssm框架的命名空间规范

spring系列框架的命名空间

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

<!--*mapper.xml命名空间-->

<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

搭建ssm框架经验的更多相关文章

  1. Maven项目搭建(二):Maven搭建SSM框架

    上一章给大家讲解了如何使用Maven搭建web项目. 这次给大家介绍一下怎么使用Maven搭建SSM框架项目. 首先我们来看一下pom.xml的属性介绍: project: pom的xml根元素. p ...

  2. 快速搭建ssm框架

    快速搭建SSM框架 因为最近有很多朋友问我自己的项目搭建的不够完善,并且经常出现一些小问题,那么今天我又整理了一下文档教大家如何快速搭建SSM框架我是用 eclipse搭建的,如果想用idear的话我 ...

  3. Eclipse中使用Maven搭建SSM框架

    Eclipse中不使用Maven搭建SSM框架:https://www.cnblogs.com/xuyiqing/p/9569459.html IDEA中使用Maven搭建SSM框架:https:// ...

  4. 第n次搭建 SSM 框架

    什么说第 N 次搭建SSM框架呢? 刚学习java的时候,搭建 SSM 框架想做一个个人项目之类的,后来没搭起来,也就拖延了,进入公司之后,接触的第一个项目就是SSM的,模仿了一下,也能搭个简简单单的 ...

  5. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)

    在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...

  6. 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...

  7. 使用Springboot快速搭建SSM框架

    Spring Boot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 一.环境准备 Idea 2017 或 201 ...

  8. IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;

    最近玩起IDEA这开发工具,搭建ssm框架测试时,部署项目出现如下问题: 信息: The APR based Apache Tomcat Native library which allows opt ...

  9. 2018用IDEA搭建SSM框架(Spring+SpringMVC+Mybatis)

    使用IDEA搭建ssm框架 环境 工具:IDEA 2018.1 jdk版本:jdk1.8.0_171 Maven版本:apache-maven-3.5.3 Tomcat版本:apache-tomcat ...

随机推荐

  1. asp.net后台获取html控件的值

    1.asp.net后台获取前台type=text控件的值 前台:<input name="txtName" class="username" type=& ...

  2. http状态码汇总及代表意思

    成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求,但没有返回任何内容. 重定向3×× 每次请求中使用重定向不要超过 5 次.301 请 ...

  3. vuejs源码摘抄

    订阅功能的部分实现代码如下: /* */ var uid = 0; /** * A dep is an observable that can have multiple * directives s ...

  4. sharepoint2007就地升级2010系列(一)2007概览

    大家可能熟悉了sharepoint2010,熟悉了sharepoint2013,做了N多个项目,但是有没有做过从sharepoint2007升级或者迁移到sharepoint2010的项目呢?我们做实 ...

  5. 隐藏 google 地图 Logo 隐藏 百度 地图 Logo

    Google 地图 var isFirstLoad=true; //地图瓦片加载完成之后的回调 google.maps.event.addListener(map, 'tilesloaded', fu ...

  6. 用AutoHotkey一键完成Xmind里的几个功能

    F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击[主题],激活光标到输入框. Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i ...

  7. Oracle SYS用户无法设置session级别的read only

    官方文档参考:SYSDBA is used internally in the Oracle database and has specialized functions. Its behavior ...

  8. STM32-F429ZIT6-开发流程

    ---恢复内容开始--- 一.开发环境搭建 1.编译器安装破解 2.STM32Cube MX安装 3.驱动安装 4.固件库安装 二.硬件准备 1.PC 2.STM32开发板 3.下载线 三.资料准备 ...

  9. 漫谈C++:良好的编程习惯与编程要点(转载)

    这个博主写的文章真是细腻,全面,严谨,应当多读几回 原文http://www.cnblogs.com/QG-whz/p/5517643.html 阅读目录 以良好的方式编写C++ class Clas ...

  10. 【BZOJ1171】大sz的游戏(线段树+单调队列)

    点此看题面 大致题意: 有\(n\)个点,两点间最大通讯距离为\(L\).已知除\(1\)号点外第\(i\)个点能够发出和接收的信号区间\([l_i,r_i]\)以及到\(1\)号点的距离\(dis_ ...