ssm框架学习的第一个小应用,做完之后的总结
学习视频为B站UP主狂神说
整和视频链接
ssm学习笔记链接
应用下载(免费)
注:内容包含个人的某些理解,主要为帮助初学者理解,因而有不当之处希望大神不吝赐教
各层之间的关系:
前端 --> controller --> service --> dao -->数据库
其中service层和dao层代码类似。
ssm controller层和dao层之间为什么会有service层?
为了解耦:
用DAO接口,那么持久层用Hibernate,还是用myBatis,还是 JDBC,随时可以替换,不用修改业务层Service类的代码。
依赖注入(DI)和自动装配:
依赖注入的本质就是装配,装配是依赖注入的具体行为。
https://blog.csdn.net/lwj_199011/article/details/51512873
java web 中的${pageContext.request.contextPath }是什么意思
优点: 它的作用是取出部署应用程序的名字,这样不管如何部署,所用的路径都是正确的
缺点:其他工具无法正确解析它
关于底层配置:
applicationContext.xml
spring 配置,整个所有配置
<import resource="spring-dao.xml"/>
<import resource="spring-service.xml"/>
<import resource="spring-mvc.xml"/>
database.properties
数据源
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=false&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456
mybatis-config.xml
mybatis配置
可以整合进spring-dao.config中
spring-dao.xml
配置dao层----操作数据库,可以整合mybatis.xml配置文件
<context:property-placeholder location="classpath:database.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="maxPoolSize" value="30"/>
<property name="minPoolSize" value="10"/>
<property name="autoCommitOnClose" value="false"/>
<property name="checkoutTimeout" value="10000"/>
<property name="acquireRetryAttempts" value="2"/>
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.kuang.dao"/>
bean>
spring-mvc.config作用3个:
所以步骤1,2,3都是和数据库相关,告诉程序选择什么数据库,4和dao包相关,告诉程序dao包的位置。
sqlSessionFactoryBuild–>sqlSessionFactory–>sqlSession
sqlSession提供增删改查的方法。
spring-mvc.config
spring-mvc的配置,和整个web相关的配置
ssm包括的是mybatis spring 和springmvc,只有springmvc是和web相关的
<mvc:annotation-driven />
<mvc:default-servlet-handler/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
bean>
<context:component-scan base-package="com.kuang.controller" />
spring-service.config
spring-service层的配置文件
<context:component-scan base-package="com.kuang.service" />
<bean id="BookServiceImpl" class="com.kuang.service.BookServiceImpl">
<property name="bookMapper" ref="bookMapper"/>
bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
bean>
web.xml
web配置文件
一个总的servlet,
<servlet>
<servlet-name>DispatcherServletservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>DispatcherServletservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
spring 自带的过滤器,处理乱码
<filter>
<filter-name>encodingFilterfilter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
filter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>utf-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<session-config>
<session-timeout>15session-timeout>
session-config>