SpringMVC以及SSM整合

本人才疏学浅,如有错误欢迎批评!转载请注明出处:https://www.cnblogs.com/lee-yangyaozi/p/11226145.html

SpringMVC概述

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

 

什么是MVC

MVC(Model-View-Controller)即模型-视图-控制器。

  • 模型:数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean 组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
  • 视图:负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
  • 控制器:接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。 也就是说控制器做了个调度员的工作。

 

SpringMVC的强大之处

  • Spring MVC 实现了即用的 MVC 的核心概念。它为控制器和处理程序提供了大量与此模式相关的功能。并且当向 MVC 添加反转控制(Inversion of Control,IoC)时,它使应用程序高度解耦,提供了通过简单的配置更改即可动态更改组件的灵活性。Spring MVC 为您提供了完全控制应用程序的各个方面的力量。
  • Spring 的 Web MVC 模块是围绕 DispatcherServlet 而设计的。DispatcherServlet 给处理程序分派请求,执行视图解析,并且处理语言环境和主题解析,此外还为上传文件提供支持。
  • DispatcherServlet 通过使用处理程序映射来决定哪一个处理程序应当处理传入的请求。处理程序映射只是用于标识使用哪一个处理程序来处理特定 URL 模式的映射。处理程序是只有一种方法 ModelAndView handleRequest(request,response) 的控制器接口的实现。Spring 还有一些可用的高级处理程序实现;其中一个重要的高级处理程序实现是 SimpleFormController,它提供了将命令对象绑定到表单、对其执行验证等功能。

这些描述都是我从别的文档上摘下来了,看得云里雾里的,我个人理解,SpringMVC其实就是对servlet的封装。没用ssm的时候,前端页面调用Controller(servlet)时需要在web.xml内为每一个servlet进行配置,非常麻烦;使用SpringMVC之后,只需要几个注解就可以轻松访问Controller,并且数据的传输也变得非常方便,其实说白了,框架就是简化开发而存在的,使得程序员更关注在业务上而不是(基础)代码上。

 

常用的SpringMVC注解

  • @Controller:表明该类是一个Controller
  • @RequestMapping:前端访问地址
  • @RequestBody:将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象
  • @ResponseBody:加在方法前,表明该方法的返回值不再是jsp页面名称,而是向前端传输数据
  • @RestController:表明该类是一个Controller,并且相当于类中全部方法都是@ResponseBody方法
  • @RequestParam("xxx"):加在方法参数前,其内的名字和前端传来的参数名相同,常用于方法参数名和前端表单元素名不同
  • @PathVariable:获取请求路径中部分数据

 

SSM整合

  • 加入依赖(jar)包

 

    <dependency><groupId>javax.servletgroupId><artifactId>javax.servlet-apiartifactId><version>3.1.0version><scope>providedscope>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-testartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webmvcartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-jdbcartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-coreartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-beansartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-contextartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-txartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>org.springframeworkgroupId><artifactId>spring-webartifactId><version>4.3.8.RELEASEversion>dependency><dependency><groupId>com.google.code.gsongroupId><artifactId>gsonartifactId><version>2.8.2version>dependency><dependency><groupId>org.apache.httpcomponentsgroupId><artifactId>httpclientartifactId><version>4.5.3version>dependency><dependency><groupId>org.slf4jgroupId><artifactId>slf4j-apiartifactId><version>1.7.21version>dependency><dependency><groupId>org.slf4jgroupId><artifactId>slf4j-log4j12artifactId><version>1.7.21version>dependency><dependency><groupId>log4jgroupId><artifactId>log4jartifactId><version>1.2.17version>dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>5.1.46version>dependency><dependency><groupId>com.alibabagroupId><artifactId>druidartifactId><version>1.1.10version>dependency><dependency><groupId>org.mybatisgroupId><artifactId>mybatisartifactId><version>3.2.8version>dependency><dependency><groupId>org.mybatisgroupId><artifactId>mybatis-springartifactId><version>1.3.1version>dependency><dependency><groupId>org.mybatis.generatorgroupId><artifactId>mybatis-generator-coreartifactId><version>1.3.7version>dependency><dependency><groupId>org.projectlombokgroupId><artifactId>lombokartifactId><version>1.18.8version>dependency><dependency><groupId>commons-fileuploadgroupId><artifactId>commons-fileuploadartifactId><version>1.3.2version>dependency><dependency><groupId>commons-iogroupId><artifactId>commons-ioartifactId><version>2.5version>dependency><dependency><groupId>taglibsgroupId><artifactId>standardartifactId><version>1.1.2version>dependency><dependency><groupId>jstlgroupId><artifactId>jstlartifactId><version>1.2version>dependency>

 

  • 配置web.xml

 

xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>log4jConfigLocationparam-name><param-value>classpath:log4j.propertiesparam-value>context-param><context-param><param-name>log4jRefreshIntervalparam-name><param-value>60000param-value>context-param><listener><listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class>listener><context-param><param-name>contextConfigLocationparam-name><param-value>classpath:spring-context*.xmlparam-value>context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>listener><filter><filter-name>encodingFilterfilter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class><init-param><param-name>encodingparam-name><param-value>UTF-8param-value>init-param><init-param><param-name>forceEncodingparam-name><param-value>trueparam-value>init-param>filter><filter-mapping><filter-name>encodingFilterfilter-name><url-pattern>/*url-pattern>filter-mapping><servlet><servlet-name>springServletservlet-name><servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class><init-param><param-name>contextConfigLocationparam-name><param-value>classpath*:/spring-mvc*.xmlparam-value>init-param><load-on-startup>1load-on-startup>servlet><servlet-mapping><servlet-name>springServletservlet-name><url-pattern>/url-pattern>servlet-mapping><welcome-file-list><welcome-file>static/index.htmlwelcome-file><welcome-file>index.htmwelcome-file><welcome-file>index.jspwelcome-file>welcome-file-list>web-app>

 

xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><context-param><param-name>log4jConfigLocationparam-name><param-value>classpath:log4j.propertiesparam-value>context-param><context-param><param-name>log4jRefreshIntervalparam-name><param-value>60000param-value>context-param><listener><listener-class>org.springframework.web.util.Log4jConfigListenerlistener-class>listener><context-param><param-name>contextConfigLocationparam-name><param-value>classpath:spring-context*.xmlparam-value>context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>listener><filter><filter-name>encodingFilterfilter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class><init-param><param-name>encodingparam-name><param-value>UTF-8param-value>init-param><init-param><param-name>forceEncodingparam-name><param-value>trueparam-value>init-param>filter><filter-mapping><filter-name>encodingFilterfilter-name><url-pattern>/*url-pattern>filter-mapping><servlet><servlet-name>springServletservlet-name><servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class><init-param><param-name>contextConfigLocationparam-name><param-value>classpath*:/spring-mvc*.xmlparam-value>init-param><load-on-startup>1load-on-startup>servlet><servlet-mapping><servlet-name>springServletservlet-name><url-pattern>/url-pattern>servlet-mapping><welcome-file-list><welcome-file>static/index.htmlwelcome-file><welcome-file>index.htmwelcome-file><welcome-file>index.jspwelcome-file>welcome-file-list>web-app>

 

  • 编写ssm的配置文件

db.properties

 

# JDBC
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.userName=root
jdbc.password=123456# JDBC Pool
jdbc.pool.init=1
jdbc.pool.minIdle=3
jdbc.pool.maxActive=20# JDBC Test
jdbc.testSql=SELECT 'x' FROM DUAL#============================#
#==== Framework settings ====#
#============================## \u89c6\u56fe\u6587\u4ef6\u5b58\u653e\u8def\u5f84
web.view.prefix=/WEB-INF/views/
web.view.suffix=.jsp

 

spring-context.xml

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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><context:annotation-config/><context:component-scan base-package="com.alfred"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>context:component-scan><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/>bean><tx:annotation-driven transaction-manager="transactionManager"/>
beans>

spring-context-druid.xml

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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><context:property-placeholder ignore-unresolvable="true" location="classpath:db.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="driverClassName" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.connectionURL}"/><property name="username" value="${jdbc.userName}"/><property name="password" value="${jdbc.password}"/><property name="initialSize" value="${jdbc.pool.init}"/><property name="minIdle" value="${jdbc.pool.minIdle}"/><property name="maxActive" value="${jdbc.pool.maxActive}"/><property name="maxWait" value="60000"/><property name="timeBetweenEvictionRunsMillis" value="60000"/><property name="minEvictableIdleTimeMillis" value="300000"/><property name="validationQuery" value="${jdbc.testSql}"/><property name="testWhileIdle" value="true"/><property name="testOnBorrow" value="false"/><property name="testOnReturn" value="false"/><property name="filters" value="stat"/>bean>
beans>

 

spring-context-mybatis.xml

xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="typeAliasesPackage" value="com.alfred.domain"/><property name="mapperLocations" value="classpath:/mapper/*.xml"/><property name="configLocation" value="classpath:/mybatis-config.xml">property>bean><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.alfred.mapper" />bean>
beans>

 

spring-mvc.xml

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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"><description>Spring MVC Configurationdescription><context:property-placeholder ignore-unresolvable="true" location="classpath:db.properties"/><context:component-scan base-package="com.alfred" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>context:component-scan><mvc:annotation-driven/><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="${web.view.prefix}"/><property name="suffix" value="${web.view.suffix}"/>bean><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="utf-8"/><property name="maxUploadSize" value="10485760000"/><property name="maxInMemorySize" value="40960"/><property name="resolveLazily" value="true"/>bean><mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/><mvc:cors><mvc:mapping path="/**"allowed-origins="*"allowed-methods="POST, GET, OPTIONS, DELETE, PUT,PATCH"allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"allow-credentials="true"/>mvc:cors>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">
<configuration><settings><setting name="logImpl" value="STDOUT_LOGGING" /><setting name="cacheEnabled" value="false"/><setting name="lazyLoadingEnabled" value="true"/><setting name="aggressiveLazyLoading" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="mapUnderscoreToCamelCase" value="true"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="NULL"/>settings>configuration>

 逆向工程(一键生成实体类、sql语句、接口)

pom文件

 

<dependency><groupId>org.mybatis.generatorgroupId><artifactId>mybatis-generator-coreartifactId><version>1.3.7version>dependency><build><plugins><plugin><groupId>org.mybatis.generatorgroupId><artifactId>mybatis-generator-maven-pluginartifactId><version>1.3.5version><dependencies><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><version>8.0.16version>dependency>dependencies><configuration><configurationFile>src/main/resources/generator/generatorConfig.xmlconfigurationFile><overwrite>trueoverwrite>configuration>plugin>plugins><resources><resource><includes><include>**/*.*include>includes><directory>src/main/resourcesdirectory>resource>resources>build>

 

 

 

配置文件

generatorConfig.xml

 

xml version="1.0" encoding="UTF-8"?>
DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="DB2Tables" targetRuntime="MyBatis3"><commentGenerator><property name="suppressDate" value="false"/><property name="suppressAllComments" value="true"/>commentGenerator><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/beitong?serverTimezone=Asia/Shanghai"userId="root"password="101203"><property name="nullCatalogMeansCurrent" value="true"/>jdbcConnection><javaModelGenerator targetPackage="com.alfred.domain" targetProject="./src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/>javaModelGenerator><sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources"><property name="enableSubPackages" value="true"/>sqlMapGenerator><javaClientGenerator targetPackage="com.alfred.mapper" targetProject="./src/main/java" type="XMLMAPPER"><property name="enableSubPackages" value="true"/>javaClientGenerator><table tableName="orders" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"enableSelectByExample="false" selectByExampleQueryId="false"/>context>
generatorConfiguration>

 

转载于:https://www.cnblogs.com/lee-yangyaozi/p/11226145.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部