在使用SSM开发项目之前,需要单独学习springmvc、spring、mybatis。
springmvc:当一个请求到来,springmvc执行流程:
1.前端控制器DispatcherServlet:拦截请求
2.处理器映射器(HandlerMapping):找到对应的Handler
3.处理器适配器(HandlerAdaptor):执行处理器
4.处理器(Handler):处理请求(开发者编写,类似于Servlet),获取参数,查询数据库等操作
5.视图解析器(viewResolver):解析视图并响应回浏览器
常用的注解:@RequestMapping("映射路径"):在方法中添加时表示此方法是一个处理器、@ResponseBody:返回json数据(ajax)、@RequestParam("key"):参数绑定等
spring:两个核心,IOC、AOP
IOC:依赖注入,管理bean,工厂模式,属性注入(set方法),构造器注入(构造函数)、静态工厂的方法注入、实例工厂的方法注入
AOP:面向切面编程,可以将方法插入或环绕在某个方法里,前置:在某个方法执行之前执行;后置:在执行之后执行;环绕:在执行之前和执行之后。aspect
切面方法:必须有参数JoinPoint类型或ProceedingJoinPoint类型
/** *环绕 **/ public Object around(ProceedingJoinPoint point){ System.out.println("执行之前要执行的代码"); Object returnMsg = point.proceed(); //放行,执行原方法 System.out.println("执行之后要执行的代码"); return returnMsg; } public void beforeOrAfter(JoinPoint point){ System.out.println("执行之前或之后要执行的代码"); }
mybatis:根据配置文件自动实现dao接口(创建实现类),半自动orm(Object Relation Mapping)框架,只需配置入参、出参、sql即可。
常用的配置标签:
sql:
映射标签:
动态sql:
------------------------------------SSM整合开发----------------------------------
一、springmvc准备
1.配置springmvc.xml
xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 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" xmlns:tx="http://www.springframework.org/schema/tx" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <context:component-scan base-package="com.hgx.note.*.*">context:component-scan> <mvc:annotation-driven>mvc:annotation-driven> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> bean> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8value> list> property> bean> <mvc:default-servlet-handler/> beans>
2.在web.xml配置DispatcherServlet和拦截路径
<servlet> <servlet-name>springmvcservlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> <init-param> <param-name>contextConfigLocationparam-name> <param-value>classpath:config/spring-mvc.xmlparam-value> init-param> <load-on-startup>1load-on-startup> servlet> <servlet-mapping> <servlet-name>springmvcservlet-name> <url-pattern>/url-pattern> servlet-mapping>
到这里springmvc准备完毕
二、mybatis准备:mybatis.xml配置,开发时在配置mapper.xml
mybatis.xml一般只配置typeAilases和plugins,其他数据源等都与spring整合
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 type="java.util.Map" alias="Map"/> typeAliases> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <property name="dialect" value="oracle"/> plugin> plugins> configuration>
三、spring整合springmvc和mybatis:关于spring的配置
1.springmvc不需要我们手动整合,springmvc默认整合了spring,使用spring创建的controller-bean
2.spring整合mybatis:
xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 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" xmlns:tx="http://www.springframework.org/schema/tx" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"> <context:property-placeholder location="classpath:config/jdbc.properties"/> <context:component-scan base-package="com.hgx.note.*.*"/> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName"> <value>${driver_class}value> property> <property name="url"> <value>${jdbc_url}value> property> <property name="username"> <value>${jdbc_username}value> property> <property name="password"> <value>${jdbc_password}value> property> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:config/mybatis.xml"/> <property name="mapperLocations" value="classpath:mappers/*.xml"/> bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> bean> <tx:annotation-driven transaction-manager="transactionManager"/> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.hgx.note.*.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> bean> beans>
四、最后也是最关键的一步,配置web.xml,加载spring
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>Archetype Created Web Applicationdisplay-name> <context-param> <param-name>contextConfigLocationparam-name> <param-value>classpath:config/spring.xmlparam-value> context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class> listener> <servlet> <servlet-name>springmvcservlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class> <init-param> <param-name>contextConfigLocationparam-name> <param-value>classpath:config/spring-mvc.xmlparam-value> init-param> <load-on-startup>1load-on-startup> servlet> <servlet-mapping> <servlet-name>springmvcservlet-name> <url-pattern>/url-pattern> servlet-mapping> <servlet> <servlet-name>imgServletservlet-name> <servlet-class>note.ImageServletservlet-class> servlet> <servlet-mapping> <servlet-name>imgServletservlet-name> <url-pattern>/imageServleturl-pattern> servlet-mapping> <filter> <filter-name>encodingfilter-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>encodingfilter-name> <url-pattern>/*url-pattern> filter-mapping> <context-param> <param-name>log4jConfigLocationparam-name> <param-value>classpath:config/log4j.propertiesparam-value> context-param> <listener> <listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class> listener> <servlet-mapping> <servlet-name>defaultservlet-name> <url-pattern>*.jsurl-pattern> <url-pattern>*.cssurl-pattern> <url-pattern>/assets/*"url-pattern> <url-pattern>/images/*url-pattern> <url-pattern>/static/*url-pattern> servlet-mapping> <welcome-file-list> <welcome-file>WEB-INF/index.jspwelcome-file> welcome-file-list> <error-page> <error-code>500error-code> <location>/WEB-INF/jsp/errorpage/500.jsplocation> error-page> <error-page> <error-code>404error-code> <location>/WEB-INF/jsp/errorpage/404.jsplocation> error-page> <context-param> <param-name>webAppRootKeyparam-name> <param-value>hgx.rootparam-value> context-param> web-app>
最后的最后,附上maven的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0modelVersion> <groupId>com.hgxgroupId> <artifactId>noteartifactId> <packaging>warpackaging> <version>0.0.1-SNAPSHOTversion> <name>note Maven Webappname> <url>http://maven.apache.orgurl> <properties> <spring.version>3.2.4.RELEASEspring.version> <mybatis.version>3.2.4mybatis.version> <slf4j.version>1.6.6slf4j.version> <log4j.version>1.2.9log4j.version> properties> <dependencies> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-coreartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-oxmartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-txartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-jdbcartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-webmvcartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-aopartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-context-supportartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.springframeworkgroupId> <artifactId>spring-testartifactId> <version>${spring.version}version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatisartifactId> <version>${mybatis.version}version> dependency> <dependency> <groupId>org.mybatisgroupId> <artifactId>mybatis-springartifactId> <version>1.2.2version> dependency> <dependency> <groupId>com.github.pagehelpergroupId> <artifactId>pagehelperartifactId> <version>4.1.4version> dependency> <dependency> <groupId>com.oraclegroupId> <artifactId>ojdbc6artifactId> <version>11.2.0.3version> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>4.11version> <scope>testscope> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>druidartifactId> <version>1.0.2version> dependency> <dependency> <groupId>org.codehaus.jacksongroupId> <artifactId>jackson-mapper-aslartifactId> <version>1.9.13version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-coreartifactId> <version>2.4.3version> dependency> <dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> <version>2.4.3version> dependency> <dependency> <groupId>com.alibabagroupId> <artifactId>fastjsonartifactId> <version>1.2.4version> dependency> <dependency> <groupId>commons-beanutilsgroupId> <artifactId>commons-beanutilsartifactId> <version>1.8.3version> dependency> <dependency> <groupId>commons-collectionsgroupId> <artifactId>commons-collectionsartifactId> <version>3.2.1version> dependency> <dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-lang3artifactId> <version>3.4version> dependency> <dependency> <groupId>commons-logginggroupId> <artifactId>commons-loggingartifactId> <version>1.1.1version> dependency> <dependency> <groupId>net.sf.json-libgroupId> <artifactId>json-libartifactId> <version>2.2.3version> dependency> <dependency> <groupId>log4jgroupId> <artifactId>log4jartifactId> <version>${log4j.version}version> dependency> <dependency> <groupId>org.slf4jgroupId> <artifactId>slf4j-apiartifactId> <version>${slf4j.version}version> dependency> <dependency> <groupId>org.slf4jgroupId> <artifactId>slf4j-log4j12artifactId> <version>${slf4j.version}version> dependency> <dependency> <groupId>junitgroupId> <artifactId>junitartifactId> <version>3.8.1version> <scope>testscope> dependency> <dependency> <groupId>jstlgroupId> <artifactId>jstlartifactId> <version>1.2version> dependency> <dependency> <groupId>taglibsgroupId> <artifactId>standardartifactId> <version>1.1.2version> dependency> <dependency> <groupId>javax.servletgroupId> <artifactId>servlet-apiartifactId> <version>2.5version> <scope>providedscope> dependency> <dependency> <groupId>javax.servlet.jspgroupId> <artifactId>jsp-apiartifactId> <version>2.2version> <scope>providedscope> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> <version>5.1.35version> dependency> dependencies> <build> <finalName>notefinalName> build> project>