整合SpringMVC
1.引入SpringMVC的jar包以及配置文件
SpringMVC能够实现和Spring的无缝衔接,前面我们已经把Spring的包添加进了项目(Spring整合MyBatis),接下来只需引入SpringMVC的jar包。如下所示:
<!-- springmvc依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
把Spring 的配置文件重新加入一份,用来配置SpringMVC的设置。在这里把名称设定为spring-mvc.xml。
在 web.xml中配置上 SpringMVC 的前端控制器,大家注意一个地方,我们现在需要加载让DispatcherServlet加载的配置文件是2个,spring-application.xml和 spring-mvc.xml,所以把读取的文件方式改成spring-*.xml,*在这里是通配符的意思。如下所示:
<!--配置springmvc-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--加载springmvc.xml配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-*.xml</param-value>
</init-param>
<!--启动服务器,创建该servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
2.统一配置文件的命名
很多的项目中都有不同的命名习惯,但是要满足一定的格式,检查配置文件格式是否一致。配置文件名称如下图所示:
3.启动项目检查配置
检查项目是否配置成功,必须报保证项目正常启动。这只是简单的测试,为了验证框架之间是否能够协同工作,我们以简单的实例来进行测试,依然选取MVC的设计模式来进行项目的搭建。功能如下所示:
- 按照功能图所示,我们在 webapp下的 index.jsp页面添加上超链接来访问控制器,并新建个welcome.jsp页面。如下所示:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试首页</title>
</head>
<body>
<a href="get.do">测试ssm</a>
</body>
</html>
welcome.jsp如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试结果页面</title>
</head>
<body>
测试成功!
</body>
</html>
- 在src/main/java下新建包com.gxy.entity,在包下新建一个类User,包含属性id,username,password,对属性完成封装,实现Serizable接口,并重写toString 方法。如下所示:
package com.gxy.entity;
import java.io.Serializable;
/**
* @className: PACKAGE_NAME.com.gxy.entity.User
* @description: TODO
* @author: ych
* @create: 2021-06-02 21:31
*/
public class User implements Serializable {
int id;
String username;
String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
- 在src/main/java新建包com.gxy.mapper,在包下新建一个接口 UserMapper,并把UserMapper.xml 放入该包下,在 UserMapper中定义一个查询所有用户的接口selectAlI,注意在接口的头部添加@Repository,在UserMapner.xml文件中定义好查询的sql语句。如下所示:
UserMapper.java
@Repository
public interface UserMapper {
List<User> selectAll();
}
UserMapner.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gxy.mapper.UserMapper">
<select id="selectAll" resultType="com.gxy.entity.User">
select * from user
</select>
</mapper>
- 在 src/main/java新建包 com.gxy.service,在包下定义一个接口 UserService。如下所示:
package com.gxy.service;
import com.gxy.entity.User;
import java.util.List;
/**
* @className: com.gxy.service.UserService
* @description: TODO
* @author: ych
* @create: 2021-06-03 16:15
*/
public interface UserService {
List<User> selectAll();
}
- 在src/main/java新建包 com.gxy.service.impl,在包下定义一个新的类UserServicelmpl实现UserService接口。包含属性UserMapper并自动注入。注意在该类的头部添加注解@Service。如下所示:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> selectAll() {
return userMapper.selectAll();
}
}
- 在src/main/java新建包 com.gxy.controller,在包下定义一个类UserController。包含属性UserService,并完成自动注入,定义一个外理器getUser()。注意在该类的头部添加注解@Controller和@RequestMapping,并且需要把处理器getUser()允许接收的请求方式修改为Get,以便和页面的超链接请求对应,大家也可以记住超链接的访问形式就是Get方式。如下所示:
@Controller
@RequestMapping("/")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/get.do",method = {RequestMethod.GET})
public String getUser(){
List<User> users = userService.selectAll();
System.out.println("users = " + users);
return "forward:welcome.jsp";
}
}
- 启动程序测试功能。页面能够进行正确跳转,打开后台控制台,出现以下所有用户信息,则表示ssm搭建成功。