SSM案例(员工CRUD)学习心得

作者:LouisHaoL
本文为原创文章,如需转载请与作者联系,谢谢!

SSM案例(员工CRUD)学习心得

  • SSM案例(员工CRUD)学习心得
    • 1、web.xml 文件的配置
      • 1.1 编码集过滤器配置
      • 1.2 REST请求处理方式过滤器配置
      • 1.3 springMVC核心控制器DispatchServlet配置
      • 1.4 配置spring监听器,用于启动Web容器时,自动装配指定spring配置文件的配置信息
    • 2、spring配置文件
      • 2.1开启注解扫描组件,并需要将控制层组件交由springMVC管理
      • 2.2 配置JDBC,引用第三方数据库管理插件
      • 2.3 声明事务管理器,开启事务注解驱动
      • 2.4 配置SqlSessionFactoryBean
      • 2.5 配置MapperScannerConfigurer
    • 3、springMVC配置文件
      • 3.1 开启扫描组件
      • 3.2 配置视图解析器
      • 3.3 配置默认servlet
    • 4、Mybatis配置
    • 5、log4j的配置
    • 6、XxxMapper.xml配置

SSM案例(员工CRUD)学习心得

SSM:

  • S:spring 整合型框架,设计型框架,搭建整个项目的结构
  • S:SpringMVC MVC框架(对应控制层)
  • M:Mybatis 持久层框架(对应DAO层,与数据库进行交互)

用到的jar包

spring
- spring-beans-4.0.0.RELEASE.jar
- spring-context-4.0.0.RELEASE.jar
- spring-core-4.0.0.RELEASE.jar
- spring-expression-4.0.0.RELEASE.jar

springMVC
- spring-web-4.0.0.RELEASE.jar
- spring-webmvc-4.0.0.RELEASE.jar

日志
- commons-logging-1.1.3.jar
- log4j.jar

mybatis
- mybatis-3.4.1.jar
- mybatis-spring-1.3.0.jar

数据库
- mysql-connector-java-5.1.37-bin.jar
- druid-1.1.9.jar

jdbcTemplate
- spring-jdbc-4.0.0.RELEASE.jar
- spring-orm-4.0.0.RELEASE.jar
- spring-tx-4.0.0.RELEASE.jar

jackson
- jackson-annotations-2.1.5.jar
- jackson-core-2.1.5.jar
- jackson-databind-2.1.5.jar

taglibs
- taglibs-standard-impl-1.2.1.jar
- taglibs-standard-spec-1.2.1.jar

AspectJ切面管理
- spring-aop-4.0.0.RELEASE.jar
- spring-aspects-4.0.0.RELEASE.jar
- com.springsource.net.sf.cglib-2.2.0.jar
- com.springsource.org.aopalliance-1.0.0.jar
- com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

分页管理
- pagehelper-5.0.0.jar
- jsqlparser-0.9.5.jar


1、web.xml 文件的配置

1.1 编码集过滤器配置

  • 必须要放在其他配置的前面,否则将失效
  • 需要设置初始化参数encoding为UTF-8
  • 映射路径为/*
<filter>
    <filter-name>CharacterEncodingFilterfilter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
    <init-param>
        <param-name>encodingparam-name>
        <param-value>UTF-8param-value>
    init-param>
filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilterfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

1.2 REST请求处理方式过滤器配置

  • org.springframework.web.filter.HiddenHttpMethodFilter类
  • 映射路径为/*
<filter>
    <filter-name>HiddenHttpMethodFilterfilter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
filter>
<filter-mapping>
    <filter-name>HiddenHttpMethodFilterfilter-name>
    <url-pattern>/*url-pattern>
filter-mapping>

1.3 springMVC核心控制器DispatchServlet配置

  • 可通过提示直接生成
  • 初始参数contextConfigLocation为classpath:+指定位置及文件名
  • 映射路径为/

<servlet>
    <servlet-name>springDispatcherServletservlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    <init-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:springMVC.xmlparam-value>
    init-param>
    <load-on-startup>1load-on-startup>
servlet>


<servlet-mapping>
    <servlet-name>springDispatcherServletservlet-name>
    <url-pattern>/url-pattern>
servlet-mapping>

注意:需要加上classpath:,用来指定为项目根路径


1.4 配置spring监听器,用于启动Web容器时,自动装配指定spring配置文件的配置信息

  • org.springframework.web.context.ContextLoaderListener
  • 配合上下文初始化参数(contextConfigLocation)来指定spring配置文件的位置
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>

<context-param>
    <param-name>contextConfigLocationparam-name>
    <param-value>classpath:spring.xmlparam-value>
context-param>

注意:需要加上classpath:,用来指定为项目根路径



2、spring配置文件

spring主要作用是作为IOC容器来管理对象。

2.1开启注解扫描组件,并需要将控制层组件交由springMVC管理

  • 以达到在整合springMVC的同时不重复生成对象
  • 使用context:exclude-filter标签来将控制层组件排除
    • type属性为annotation时指定注解为@Controller的组件
    • 思考是否可以将type属性设置为regex,使用正则表达式来排除控制层组件?
  • base-package属性需指定具体包
<context:component-scan base-package="com.louis.ssm">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
context:component-scan>

2.2 配置JDBC,引用第三方数据库管理插件

  • 引入JDBC配置文件
  • 配置第三方数据库连接对象,并交由spring管理
	
	<context:property-placeholder location="classpath:jdbc.properties"/>
	
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<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>

2.3 声明事务管理器,开启事务注解驱动

  • 用来配合注解(@Transactional)管理事务
	
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource">property>
	bean>
	
	
	<tx:annotation-driven transaction-manager="transactionManager"/>

2.4 配置SqlSessionFactoryBean

  • SqlSession是用来生成XxxMapper的代理对象,是Mybatis组件之一
  • 是与数据库进行交互的重要组成部分
	<bean class="org.mybatis.spring.SqlSessionFactoryBean">
		
		<property name="configLocation" value="classpath:mybatis-config.xml">property>
		
		<property name="dataSource" ref="dataSource">property>
		
		<property name="typeAliasesPackage" value="com.louis.ssm.bean">property>
		
		<property name="mapperLocations" value="classpath:com/louis/ssm/mapper/*.xml">property>
	bean>

注意:只有设置dataSource时是用ref来引用之前配置的数据源,其他都是直接对属性进行设置


2.5 配置MapperScannerConfigurer

  • 用来扫描指定包目录下的mapper配置文件,并生成对应的mapper代理对象,交由spring容器管理
  • 可以存放在另一个source folder的同名包下,以区分配置文件和Java代码,便于项目维护和管理
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.louis.ssm.mapper">property>
	bean>


3、springMVC配置文件

  • M: Model,Java的实体类,javabean
  • V: View,视图层 jsp,显示页面
  • C: Controller,控制层 servlet,控制请求

3.1 开启扫描组件

  • controller包下不会有其他组件存在,故不需要指定不扫描文件
	<context:component-scan base-package="com.louis.ssm.controller"/>

3.2 配置视图解析器

  • class属性为org.springframework.web.servlet.view.InternalResourceViewResolver
  • prifix为指定目录结构,可根据实际情况进行调整,若设置为/则最为灵活
  • suffix为指定解析后缀
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/view/">property>
		<property name="suffix" value=".jsp">property>
	bean>

如:控制层返回字符串为"list",则解析为"/WEB-INF/view/list.jsp",并进行转发处理
如需重定向,只需要将返回的字符串定义为"redirect:+指定路径"


3.3 配置默认servlet

  • 默认servlet常用来处理静态资源的访问,DispatchServlet只会在控制层进行请求路径的寻找,找不到就会跳转404
  • 通常还需要与annotation-driven同时配置,以更好处理请求
	<mvc:default-servlet-handler/>
	<mvc:annotation-driven/>


4、Mybatis配置

  • 在spring的配置文件中已经进行了属性及资源的配置
  • 在Mybatis的配置文件中,通常进行一些属性的设置及一些插件的配置
  • 通常直接复制配置文件就好了


 
<configuration>

	<settings>
		
		<setting name="mapUnderscoreToCamelCase" value="true"/>
		
		<setting name="lazyLoadingEnabled" value="true"/>
		
		<setting name="aggressiveLazyLoading" value="false"/>
		
		<setting name="cacheEnabled" value="true"/>
	settings>
	
	
	<plugins>
		<plugin interceptor="com.github.pagehelper.PageInterceptor">plugin>
	plugins>
	
configuration>


5、log4j的配置

  • 日志记录框架组件
  • 直接复制配置文件




<log4j:configuration
	xmlns:log4j="http://jakarta.apache.org/log4j/">

	<appender name="STDOUT"
		class="org.apache.log4j.ConsoleAppender">
		<param name="Encoding" value="UTF-8" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
		layout>
	appender>
	<logger name="java.sql">
		<level value="debug" />
	logger>
	<logger name="org.apache.ibatis">
		<level value="info" />
	logger>
	<root>
		<level value="debug" />
		<appender-ref ref="STDOUT" />
	root>
log4j:configuration>


6、XxxMapper.xml配置

  • 需要放在对应XxxMapper.java的同名包下
  • mapper标签的namespace属性需要知道对应mapper的全类名


 
 <mapper namespace="com.louis.ssm.mapper.DeptMapper">
 	
 	
 	
 	<select id="getAllDept" resultType="Dept">
 	
 		select did, dname from dept
 	select>
 	
 mapper>
  • 如有配置resultMap标签,则后面的sql语句可以使用resultMap属性进行映射,否则一律使用resultType属性,否则无法完成查询等功能,直接报错。
  • resultMap属性对应的是resultMap标签里的id属性

你可能感兴趣的:(自学Java,SSM,总结)