Подробный обзор интеграции трех основных фреймворков SSM (Spring+SpringMVC+MyBatis)

Java Spring MyBatis MVC
Подробный обзор интеграции трех основных фреймворков SSM (Spring+SpringMVC+MyBatis)

Я давно использую SSM (Spring, SpringMVC и Mybatis).Технических сложностей в проекте нет.На базе существующей технологии можно добиться желаемых функций.Конечно, должно быть много места для улучшение. Раньше я не записывал процесс интеграции SSM, а в этот раз просто пересобрал его на основе собственного небольшого проекта, и это лучше, чем проект. Процесс и метод решения проблемы в прошлом не были записаны вовремя, я организую и поделюсь им, когда встречу его в своем собственном небольшом проекте в будущем. На этот раз давайте поговорим о процессе интеграции трех основных фреймворков. Лично я считаю, что пользоваться фреймворком несложно, главное понять его идеи, что очень помогает нам повышать уровень программирования. Однако, если вы не знаете, как его использовать, разговоры об идеях станут листком бумаги! ! ! Сначала технологии, потом идеи. Практика приносит истинное знание. 

1. Во-первых, давайте разберемся с основной концепцией

Spring

Весна - это рамочная структура с открытым исходным кодом, является легким повышением в 2003 году в рамках разработки Java 2003 года, часть философии, изложенной стерженью Джонсоном в его книге Expert One-One-One J2ee Development, и прототипы. Он предназначен для создания сложности разработки корпоративных приложений. Весна использует основные JavaBean, чтобы делать вещи, которые ранее сделаны только по EJB. Однако использование весны не ограничивается разработкой на стороне сервера. Любое приложение Java может воспользоваться простотой, тестируемостью и свободной муфтой с точки зрения пружины. Вкратце, весна - это легкая инверсия управления (МОК) и разрез (AOP) облицовки (AOP) рамы контейнера.

SpringMVC

Spring MVC является продолжением SpringFrameWork и интегрирован в Spring Web Flow. Spring MVC разделяет роли контроллеров, объектов модели, диспетчеров и объектов-обработчиков, что упрощает их настройку.

MyBatis

Первоначально MyBatis был проектом с открытым исходным кодом iBatis от Apache, но в 2010 году этот проект был перенесен из Apache Software Foundation в код Google и переименован в MyBatis. MyBatis — это основанный на Java фреймворк уровня персистентности. Структура уровня сохраняемости, предоставляемая iBATIS, включает карты SQL и объекты доступа к данным (DAO).MyBatis устраняет почти весь код JDBC и ручную настройку параметров и получение наборов результатов. MyBatis использует простой XML или аннотации для настройки и сопоставления примитивов для отображения интерфейсов и Java POJO (обычные старые объекты Java, обычные объекты Java) для записей в базе данных.

2. Создайте среду разработки

3. Создание веб-проекта Maven

4. SSM-интеграция

Далее в основном представлена ​​интеграция трех фреймворков.Что касается построения среды и создания проекта, пожалуйста, обратитесь к приведенному выше сообщению в блоге. Эту интеграцию я разделил на 2 файла конфигурации, а именно spring-mybatis.xml, включая файлы конфигурации spring и mybatis, и файл конфигурации spring-mvc в дополнение к 2 файлам ресурсов: jdbc.propertis и log4j .properties. Полная структура каталогов выглядит следующим образом:

Все используемые фреймворки являются более новыми версиями:

Spring 4.0.2 RELEASE

Spring MVC 4.0.2 RELEASE

MyBatis 3.2.6

4.1, Maven представляет необходимый пакет JAR

Для того, чтобы облегчить необходимость введения JAR-пакетов позже, я прямо приведу здесь все требуемые JAR-пакеты.Это все базовые JAR-пакеты.Есть комментарии к тому, что делает каждый пакет, поэтому я не буду говорить больше.

pom.xml

<properties>
		<!-- spring版本号 -->
		<spring.version>4.0.2.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.11</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-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.30</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>
		
		
	</dependencies>

4.2 Интеграция Spring и MyBatis

После того, как все необходимые JAR-пакеты введены, сначала выполняется интеграция Spring и MyBatis, а затем проводится тест JUnit.Сначала посмотрите на схему структуры проекта:

4.2.1 Создайте файл свойств JDBC

jdbc.properties (кодировка файла изменена на utf-8)

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://10.221.10.111:8080/db_zsl
username=demao
password=demao
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000

4.2.2 Создайте файл конфигурации spring-mybatis.xml

Этот файл используется для завершения интеграции Spring и mybatis. Здесь не так много строк конфигурации, основные из них — автоматическое сканирование, автоматическая инъекция и база данных конфигурации. Заметки также очень подробные, и каждый поймет это, когда посмотрит на них.

spring-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" xmlns:p="http://www.springframework.org/schema/p"
	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-3.1.xsd  
	http://www.springframework.org/schema/context  
	http://www.springframework.org/schema/context/spring-context-3.1.xsd  
	http://www.springframework.org/schema/mvc  
	http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
	<!-- 自动扫描 -->
	<context:component-scan base-package="com.cn.hnust" />
	<!-- 引入配置文件 -->
	<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/cn/hnust/mapping/*.xml"></property>
	</bean>

	<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.cn.hnust.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>

</beans>

4.2.3, конфигурация Log4j

Для облегчения отладки для вывода информации обычно используются журналы.ApacheПроект с открытым исходным кодом, с помощью Log4j мы можем контролироватьбревноМестом передачи информации являетсяконсоль,документ,GUIкомпоненты, даже серверы сокетов,NTрегистратор событий,UNIX Syslog демони т. д.; мы также можем контролировать формат вывода каждого журнала; определяя уровень информации каждого журнала, мы можем более подробно контролировать процесс создания журнала.

Конфигурация Log4j очень проста и универсальна. Ниже приведена базовая конфигурация. Вам не нужно делать много настроек, когда вы переключаетесь на другие проекты. Если вы хотите внести коррективы или хотите понять различные конфигурации Log4j, вы можете проверить этот пост в блоге

blog.CSDN.net/Чжан Шулинь/AR…

Каталог файла конфигурации указан ниже:

log4j.properties

#定义LOG输出级别
log4j.rootLogger=INFO,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

4.2.4, тест JUnit

После вышеперечисленных шагов (до 4.2.2, log4j не совпадает, это не имеет значения) мы завершили интеграцию Spring и mybatis, так что мы можем написать тестовый код, чтобы проверить, успешно ли это.

4.2.4.1 Создание тестовой таблицы

Поскольку нам нужно протестировать, нам нужно создать тестовую таблицу в базе данных.Эта таблица очень проста в построении.Выражение 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);

4.2.4.2 Используйте MyBatis Generator для автоматического создания кода

Справочная запись в блоге:blog.CSDN.net/Чжан Шулинь/AR…

Это может автоматически создавать физические классы, файлы отображения MyBatis и интерфейсы DAO, в зависимости от таблицы. Конечно, я привычки для изменения сгенерированного имени интерфейса в iuserdao вместо того, чтобы использовать USERMAPPER, который он генерирует. Если вы не хотите беспокоиться, вы не можете его изменить. После завершения скопируйте файл в проект. Как показано на рисунке:

4.2.4.3 Установить интерфейс службы и класс реализации

Структура каталога:

Конкретное содержание приведено ниже:

IUserService.java

package com.cn.hnust.service;

import com.cn.hnust.pojo.User;

public interface IUserService {
	public User getUserById(int userId);
}

UserServiceImpl.java

package com.cn.hnust.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.cn.hnust.dao.IUserDao;
import com.cn.hnust.pojo.User;
import com.cn.hnust.service.IUserService;

@Service("userService")
public class UserServiceImpl implements IUserService {
	@Resource
	private IUserDao userDao;
	@Override
	public User getUserById(int userId) {
		// TODO Auto-generated method stub
		return this.userDao.selectByPrimaryKey(userId);
	}

}

4.2.4.4 Установить тестовый класс

Тестовый класс установлен в src/test/java.Закомментированная часть тестового класса ниже представляет собой общий метод тестирования, когда Spring не используется; если Spring используется, вы можете использовать аннотации для представления файлов конфигурации и класса, а также затем введите объект интерфейса службы для тестирования.

Если тест прошел успешно, это означает, что Spring и Mybatis успешно интегрированы. Вывод выводится на консоль с помощью Log4j.

package org.zsl.testmybatis;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.alibaba.fastjson.JSON;
import com.cn.hnust.pojo.User;
import com.cn.hnust.service.IUserService;

@RunWith(SpringJUnit4ClassRunner.class)		//表示继承了SpringJUnit4ClassRunner类
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})

public class TestMyBatis {
	private static Logger logger = Logger.getLogger(TestMyBatis.class);
//	private ApplicationContext ac = null;
	@Resource
	private IUserService userService = null;

//	@Before
//	public void before() {
//		ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//		userService = (IUserService) ac.getBean("userService");
//	}

	@Test
	public void test1() {
		User user = userService.getUserById(1);
		// System.out.println(user.getUserName());
		// logger.info("值:"+user.getUserName());
		logger.info(JSON.toJSONString(user));
	}
}

Результаты теста:

На данный момент интеграция двух фреймворков Spring и mybatis завершена, и интеграция SpringMVC будет продолжена.

4.3 Интеграция SpringMVC

Интеграция двух основных фреймворков была завершена выше, конфигурационный файл SpringMVC размещается отдельно, а затем интеграция настраивается в web.xml.

4.3.1 Настройка 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:p="http://www.springframework.org/schema/p"
	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-3.1.xsd  
	http://www.springframework.org/schema/context  
	http://www.springframework.org/schema/context/spring-context-3.1.xsd  
	http://www.springframework.org/schema/mvc  
	http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
	<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
	<context:component-scan base-package="com.cn.hnust.controller" />
	<!--避免IE执行AJAX时,返回JSON出现下载文件 -->
	<bean id="mappingJacksonHttpMessageConverter"
		class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
			</list>
		</property>
	</bean>
	<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
	<bean
		class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="mappingJacksonHttpMessageConverter" />	<!-- JSON转换器 -->
			</list>
		</property>
	</bean>
	<!-- 定义跳转的文件的前后缀 ,视图模式配置-->
	<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>

4.3.2, настройте файл web.xml

Введение spring-mybatis.xml и настроенный сервлет spring-mvc здесь, чтобы завершить интеграцию SSM.Предыдущая интеграция 2 фреймворков здесь не требует какой-либо настройки. Конфигурация также имеет подробные комментарии, не так много объяснений.

web.xml

<?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-mybatis.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>

4.3.3 Тест

На данный момент интеграция трех основных фреймворков SSM завершена. Теперь протестируйте ее. Если получится, то поздравляем. Если не получится, продолжайте отладку. Как программист, вы постоянно боретесь с ошибками!

4.3.3.1. Создайте новую страницу 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>

4.3.3.2 Создайте класс UserController

Контроллер UserController.java

package com.cn.hnust.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.cn.hnust.pojo.User;
import com.cn.hnust.service.IUserService;

@Controller
@RequestMapping("/user")
public class UserController {
	@Resource
	private IUserService userService;
	
	@RequestMapping("/showUser")
	public String toIndex(HttpServletRequest request,Model model){
		int userId = Integer.parseInt(request.getParameter("id"));
		User user = this.userService.getUserById(userId);
		model.addAttribute("user", user);
		return "showUser";
	}
}

4.3.3.3 Проект развертывания

Введите адрес: LocalHost:8080/Имя проекта/USER/SHOWUSER?ID=1

На этом интеграция трех основных фреймворков SSM завершена, и на этой основе могут быть добавлены другие функции.