SSM框架的简单搭建
转:https://blog.csdn.net/zhshulin/article/details/37956105
Spring+SpringMVC+MyBatis
spring : 4.3.13.RELEASE
springMVC : 4.3.13.RELEASE
mybatis : 3.2.6
开发工具 : IDEA
jar包管理工具: maven
首先先通过IDEA快速构建一个maven web项目,.....
先通过maven把相关的jar引入到项目中
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><!-- spring版本号 --><spring.version>4.3.13.RELEASE</spring.version><!-- mybatis版本号 --><mybatis.version>3.2.6</mybatis.version><!-- log4j日志文件管理包版本 --><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 表示开发的时候引入,发布的时候不会加载此包 --><scope>test</scope></dependency><!-- spring核心包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- mybatis核心包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!-- mybatis/spring包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- 导入java ee jar 包 --><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version></dependency><!-- 导入Mysql数据库链接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.8</version></dependency><!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!-- JSTL标签类 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志文件管理包 --><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- 格式化对象,方便输出日志 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- log end --><!-- 映入JSON --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- 上传组件包 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.9</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.2</version></dependency><!-- jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.8.5</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.5</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.8.5</version></dependency></dependencies>
项目目录结构:
创建一个jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_zsl?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username=root
password=123456
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
建立spring-mybatis.xml配置文件
这个文件就是用来完成spring和mybatis的整合的。这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库。注释也很详细,大家看看就明白了。
<?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:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"default-lazy-init="false"><!-- 自动扫描 --><context:component-scan base-package="com.lyl" /><!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化连接大小 --><property name="initialSize" value="${initialSize}"></property><!-- 连接池最大数量 --><property name="maxActive" value="${maxActive}"></property><!-- 连接池最大空闲 --><property name="maxIdle" value="${maxIdle}"></property><!-- 连接池最小空闲 --><property name="minIdle" value="${minIdle}"></property><!-- 获取连接最大等待时间 --><property name="maxWait" value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations" value="classpath:com/lyl/mapping/*.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.lyl.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 事务注解支持 --><tx:annotation-driven/><!-- 切面事务 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="insert*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="create*" propagation="REQUIRED"/><tx:method name="change*" propagation="REQUIRED"/><tx:method name="give*" propagation="REQUIRED"/><tx:method name="save*" propagation="REQUIRED"/><tx:method name="cancel*" propagation="REQUIRED"/><tx:method name="do*" propagation="REQUIRED"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice><!-- 通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务 --><aop:config proxy-target-class="true"><aop:pointcut id="serviceMethods" expression="execution(* com.lyl.service.*.*(..))"/><aop:advisor pointcut-ref="serviceMethods" advice-ref="txAdvice"/></aop:config></beans>
Log4j的配置
为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
log4j.properties
#定义LOG输出级别
log4j.rootLogger=DEBUG,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
JUnit测试
经过以上步骤(log4j不配也没影响),我们已经完成了Spring和mybatis的整合,这样我们就可以编写一段测试代码来试试是否成功了。
创建测试用表
既然我们需要测试,那么我们就需要建立在数据库中建立一个测试表,这个表建的很简单,SQL语句为:
DROP TABLE IF EXISTS `user_t`;CREATE TABLE `user_t` (`id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(40) NOT NULL,`password` varchar(255) NOT NULL,`age` int(4) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;/*Data for the table `user_t` */insert into `user_t`(`id`,`user_name`,`password`,`age`) values (1,'测试','sfasgfaf',24);
利用MyBatis Generator自动创建代码
先创建genreatorConfig.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="testTables" targetRuntime="MyBatis3"><commentGenerator><!-- 是否去除自动生成的注释 true:是 : false:否 --><property name="suppressAllComments" value="true" /></commentGenerator><!--数据库连接的信息:驱动类、连接地址、用户名、密码 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/db_zsl" userId="root"password="123456"></jdbcConnection><!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"userId="yycg"password="yycg"></jdbcConnection> --><!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal --><javaTypeResolver><property name="forceBigDecimals" value="false" /></javaTypeResolver><!-- targetProject:生成PO类的位置 --><javaModelGenerator targetPackage="com.lyl.entity"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /><!-- 从数据库返回的值被清理前后的空格 --><property name="trimStrings" value="true" /></javaModelGenerator><!-- targetProject:mapper映射文件生成的位置 --><sqlMapGenerator targetPackage="com.lyl.dao"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></sqlMapGenerator><!-- targetPackage:mapper接口生成的位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.lyl.mapper"targetProject=".\src"><!-- enableSubPackages:是否让schema作为包的后缀 --><property name="enableSubPackages" value="false" /></javaClientGenerator><!-- 指定数据库表 --><table tableName="user_t" enableCountByExample="false"enableUpdateByExample="false"enableDeleteByExample="false"enableSelectByExample="false"selectByExampleQueryId="false"></table><!-- 有些表的字段需要指定java类型<table schema="" tableName=""><columnOverride column="" javaType="" /></table> --></context> </generatorConfiguration>
再创建一个java类
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;import java.io.File;
import java.util.ArrayList;
import java.util.List;/*** @Auther: long* @Date: 2018/5/14 17:37* @Description:*/
public class GeneratorSqlmap {public void generator() throws Exception{List<String> warnings = new ArrayList<String>();boolean overwrite = true;//指定 逆向工程配置文件File configFile = new File(this.getClass().getResource("genreatorConfig.xml").getPath());ConfigurationParser cp = new ConfigurationParser(warnings);Configuration config = cp.parseConfiguration(configFile);DefaultShellCallback callback = new DefaultShellCallback(overwrite);MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,callback, warnings);myBatisGenerator.generate(null);}public static void main(String[] args) throws Exception {try {GeneratorSqlmap generatorSqlmap = new GeneratorSqlmap();generatorSqlmap.generator();} catch (Exception e) {e.printStackTrace();}}}
运行一下main方法就能生成对应的实体和xml,dao层代码,在把相应的文件放到对应的目录下即可
建立Service接口和实现类
下面给出具体的内容:
IUserService.jave
package com.lyl.service;import com.lyl.entity.UserT;/*** @Auther: long* @Date: 2018/5/15 09:48* @Description:*/
public interface IUserservice {public UserT getUserById(int userId);public int insertUser(UserT userT);
}
UserServiceImpl.java
package com.lyl.service.impl;import com.lyl.dao.UserTMapper;
import com.lyl.entity.UserT;
import com.lyl.service.IUserservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @Auther: long* @Date: 2018/5/15 09:50* @Description:*/
@Service("userService")
public class UserServiceImpl implements IUserservice {@Autowiredprivate UserTMapper userDao;@Overridepublic UserT getUserById(int userId) {return this.userDao.selectByPrimaryKey(userId);}@Overridepublic int insertUser(UserT userT) {return userDao.insert(userT);}
}
建立测试类
如果测试成功,表示Spring和Mybatis已经整合成功了。输出信息使用的是Log4j打印到控制台。
package com.lyl.service.impl;import com.alibaba.fastjson.JSON;
import com.lyl.entity.UserT;
import com.lyl.service.IUserservice;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*** @Auther: long* @Date: 2018/5/16 08:32* @Description:*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class UserServiceImplTest {private static Logger logger = Logger.getLogger(UserServiceImplTest.class);@Autowiredprivate IUserservice userService;@Testpublic void getUserById() {UserT user = userService.getUserById(1);logger.info(JSON.toJSONString(user));}}
测试结果
至此,完成Spring和mybatis这两大框架的整合,下面在继续进行SpringMVC的整合。
整合SpringMVC
上面已经完成了2大框架的整合,SpringMVC的配置文件单独放,然后在web.xml中配置整合。
配置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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><mvc:annotation-driven /><!--<context:annotation-config />--><!--<!– 包扫描 –>--><!--<context:component-scan base-package="com.lyl" />--><!--避免IE执行AJAX时,返回JSON出现下载文件 --><!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --><context:component-scan base-package="com.lyl" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 --></list></property></bean><!--<!– 切面支持 需要配置在扫描 –>--><!--<aop:aspectj-autoproxy proxy-target-class="true"/>--><!-- 定义跳转的文件的前后缀 ,视图模式配置--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></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" /></bean></beans>
配置一个spring-context.xml,把Controller注解的扫描和其他注解分离开来,然后引入其他的配置文件
<?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" default-lazy-init="true"> <!-- 只扫描除了@Controller的所有注解 --> <context:component-scan base-package="com.lyl"> <context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/> </context:component-scan> <!-- 引入配置文件 --> <!--<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">--> <!--<property name="locations">--> <!--<list>--> <!--<value>classpath*:jdbc.properties</value>--> <!--</list>--> <!--</property>--> <!--</bean>--> <!-- 引入其他配置文件 --> <import resource="classpath:spring-mybatis.xml"/> </beans>
配置web.xml文件
这里面对spring-context.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。配置一样有详细注释,不多解释了。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>Archetype Created Web Application</display-name><!-- Spring和mybatis的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-context.xml</param-value></context-param><!-- 编码过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防止Spring内存溢出监听器 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><!-- Spring MVC servlet --><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list></web-app>
测试
至此已经完成了SSM三大框架的整合了,接下来测试一下,如果成功了,那么恭喜你,如果失败了,继续调试吧,作为程序员就是不停的与BUG做斗争!
新建jsp页面
showUser.jsp 此页面仅输出一下用户名,完成一个完整的简单流程。
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>测试</title></head><body>${user.userName}</body> </html>
建立UserController类
UserController.java 控制器
package com.lyl.controller;import com.lyl.entity.UserT;
import com.lyl.service.IUserservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;/*** @Auther: long* @Date: 2018/5/15 11:36* @Description:*/
@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate IUserservice userservice;@GetMapping("/showUser")public String toIndex(HttpServletRequest request, Model model) {int userId = Integer.parseInt(request.getParameter("userId"));UserT user = userservice.getUserById(userId);model.addAttribute("user",user);return "showUser";}
}
部署项目
输入地址:localhost:8080/user/showUser?id=1
至此,SSM三大框架的整合就完成了,在此基础上可再添加其他功能。
遇到的问题:
问题一:
在把spring相关jar包从 4.0.2 RELEASE升级到4.3.13.RELEASE出了好多问题
<!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean>
一直报找不到MappingJackson2HttpMessageConverter这个错误
原来是少了三个jar包
<!-- jackson --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.8.5</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.8.5</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.8.5</version></dependency>
问题二:
还有一个就是扫描问题,升级了一下版本自动扫描注解也出了点问题,后面加了几个扫描进去就好了
spring-mvc.xml
<mvc:annotation-driven /><!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --><context:component-scan base-package="com.lyl" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan>
spring-context.xml
<!-- 只扫描除了@Controller的所有注解 --><context:component-scan base-package="com.lyl"><context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/></context:component-scan>
这样后面启动就没有问题了
问题三:
后面测试的时候利用junit测试的时候一直报错
可能是版本不兼容的原因,刚开始用的版本是4.11,后面换成了4.12就没有问题了
问题四:
后面在测试添加用户的时候,也报错说好像是只读,不能修改的问题,后面网上找了一下,有的说修改数据库权限,
有的说是数据库的驱动的版本的问题,这里我使用的解决办法是更换了下数据库驱动的版本,换一个版本进行测试就不会有这个问题了,
开始使用的数据库驱动的版本:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency>
现在的版本:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.8</version></dependency>
转载于:https://www.cnblogs.com/liaoyanglong/p/9045083.html
SSM框架的简单搭建相关推荐
- java ssm框架_Java SSM框架的简单搭建
1.添加依赖包,可以通过properties统一框架版本 UTF-8 1.7 1.7 5.0.8.RELEASE junit junit 4.11 test javax.servlet javax.s ...
- SSM框架整合+简单案例实现
SSM框架整合+简单案例实现 文章目录 前言 一.Spring+SpringMVC+Mybatis框架整合 1.建立一个新的web项目 2.所需jar包 3.建立数据库表与实体类之间的映射 4.web ...
- 手把手教你搭建SSM框架,简单有效理解SSM框架
文章目录 1.基本概念 1.1.Spring概念 1.2.SpringMVC概念 1.3.MyBatis概念 2.开发步骤 2.1.maven项目创建 2.2.SSM框架的配置 2.2.1 配置前准备 ...
- ssm框架的简单介绍
1.背景介绍 SSM框架是什么 SSM框架,是Spring + Spring MVC + MyBatis的缩写,目前主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统.使用ssm框架的 ...
- 最新版的SSM框架spring5.0搭建教程(附源码)
<p>用SSM框架已经有一段时间了,但都没有完整地搭建过一次工程.前段时间比较有时间就自己试着搭建了一下,差不多都是用的最新的spring版本了,然后就在这个基础上做了很多的实验测试.最近 ...
- 浅谈IDEA+Maven 整合SSM框架实现简单的增删改查
SSM SSM(Spring+SpringMVC+MyBatis)框架集由Spring.MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容).常作为数据源较简单的web项 ...
- ssm框架的简单案例
学完ssm框架后做了一个简单的案例,实现简单的增删改查. 项目结构图: 看项目结构: 关键代码: 前端是jsp技术,当然也可以用vue分离的自己选择就好. 订单页面: <%@ page lang ...
- idea 使用 maven 整合 ssm 框架 实现简单的增、删、改 和 分页查询功能
详细请参考: idea 使用 maven 整合 ssm 框架 文章目录 ==效果图== ==准备数据库== ==创建maven项目== ==配置文件== pom.xml jdbc.properti ...
- 使用SSM框架的简单项目
SSM框架的学习,跟着狂神做了一个SSM的项目,也是一个小的框架. 1.准备工作 (1)数据库的准备 创建一个名为ssmbuild的数据库,在库中建一个名为books的表,表的内容如下: (2)创建一 ...
最新文章
- BCH期货合约将在美国挂牌交易所上线
- php mysql日期戳转时间戳_php日期转时间戳,指定日期转换成时间戳
- MySQL批量更改数据库表结构字符集
- MCGS与PLC通讯不上
- 【python opencv 计算机视觉零基础到实战】二、 opencv文件格式与摄像头读取
- php中什么时候用传值,php中传值与传引用的区别。什么时候传值什么时候传引用?...
- mysql cluster 宕机 恢复_mysql cluster 集群恢复不起来,还请大神赐教?报错-问答-阿里云开发者社区-阿里云...
- python读取json数据教程_Python教程之解析json数据
- Windows7下无法安装Oracle11.1.0问题
- 原来Android还可以这样通过反射,获取jar包属性及方法
- 可信任的人工智能(三)
- ES 关于text和keyword两种类型数据搜索区别
- Math数学对象(万能随机数公式)
- 如何查看本机flash版本
- 夏威夷大学计算机专业排名,夏威夷大学(美国夏威夷大学排名)
- matlab imshow加画网格,matlab能生成随机行走网格吗? - 仿真模拟 - 小木虫 - 学术 科研 互动社区...
- java imageio 内存问题_java imageio内存泄漏
- 用户画像基础之定性类画像
- 微软 文档转换服务器,文档转换器
- Excel2019关闭时无响应
热门文章
- 澎湖县地产泡沫的破灭
- leetcode 1143. 最长公共子序列
- Linux网络编程之IP地址转换为无符号整数的方法
- Linux后台进程管理以及ctrl+z(挂起)、ctrl+c(中断)、ctrl+\(退出)和ctrl+d(EOF)的区别
- ubuntu中PyCharm的安装与卸载
- linux基础命令练习,Linux常用命令练习
- linux转mysql_转linux下mysql命令
- 大专学完出来学计算机,浙江2021年计算机学校读出来是什么文凭
- 思科ssh验证方式_SSH的应用:一个实例两种验证模式的实现
- 贵阳市计算机智能考试,白云区教育局关于对计算机智能考试考点考场建设开展专项检查的通知(白教通字〔2020〕79号)...