使用IDEA搭建SSM框架的详细教程
简介
SSM框架是目前Java Web开发中最常用的框架之一,它由Spring、SpringMVC和MyBatis三个框架组成,可以很好地解决Java Web开发中的各种问题。本文将详细介绍如何使用IDEA搭建SSM框架,并提供两个示例说明。
环境准备
在开始之前,需要确保以下环境已经准备好:
- JDK 1.8以上版本
- Maven 3.0或以上版本
- Tomcat 8.0或以上版本
- IntelliJ IDEA 2018或以上版本
创建Maven项目
- 打开IntelliJ IDEA,选择“Create New Project”。
- 在弹出的窗口中选择“Maven”项目类型,并勾选“Create from archetype”选项。
- 在下拉列表中选择“maven-archetype-webapp”。
- 输入项目的GroupId、ArtifactId和Version等信息,然后点击“Next”。
- 在下一步中,选择项目的存储路径和项目名称,然后点击“Finish”按钮。
导入依赖
在pom.xml文件中添加以下依赖:
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
配置Spring
在src/main/resources目录下创建一个名为“applicationContext.xml”的Spring配置文件,并添加以下内容:
<!-- 配置数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<!-- 配置MyBatis -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.mapper"/>
</bean>
在上面的配置中,我们配置了数据源和MyBatis的SqlSessionFactory。同时,我们还配置了MapperScannerConfigurer来扫描Mapper接口。
配置Spring MVC
在src/main/webapp/WEB-INF目录下创建一个名为“springmvc-servlet.xml”的Spring MVC配置文件,并添加以下内容:
<!-- 配置Spring MVC -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 配置扫描Controller -->
<context:component-scan base-package="com.example.controller"/>
在上面的配置中,我们配置了视图解析器和扫描Controller。
配置web.xml
在src/main/webapp/WEB-INF目录下创建一个名为“web.xml”的web配置文件,并添加以下内容:
<!-- 配置DispatcherServlet -->
<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:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在上面的配置中,我们配置了DispatcherServlet,并将其映射到根路径。
创建Controller
在src/main/java目录下创建一个名为“com.example.controller”的包,并在其中创建一个名为“UserController”的类。在该类中添加以下内容:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public String getUserList(Model model) {
List<User> userList = userService.getUserList();
model.addAttribute("userList", userList);
return "userList";
}
}
在上面的代码中,我们创建了一个名为“UserController”的Controller,并使用@GetMapping注解来处理GET请求。在方法中,使用@Autowired注解来注入UserService。我们调用UserService的getUserList方法来获取用户列表,并将查询到的User列表添加到Model中,并返回“userList”视图。
创建Mapper
在src/main/java目录下创建一个名为“com.example.mapper”的包,并在其中创建一个名为“UserMapper”的接口。在该接口中添加以下内容:
public interface UserMapper {
List<User> getUserList();
}
在上面的代码中,我们创建了一个名为“UserMapper”的Mapper接口,并定义了一个名为“getUserList”的方法。
创建Service
在src/main/java目录下创建一个名为“com.example.service”的包,并在其中创建一个名为“UserService”的接口。在该接口中添加以下内容:
public interface UserService {
List<User> getUserList();
}
在上面的代码中,我们创建了一个名为“UserService”的Service接口,并定义了一个名为“getUserList”的方法。
在src/main/java目录下创建一个名为“com.example.service.impl”的包,并在其中创建一个名为“UserServiceImpl”的类。在该类中添加以下内容:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> getUserList() {
return userMapper.getUserList();
}
}
在上面的代码中,我们创建了一个名为“UserServiceImpl”的Service实现类,并使用@Autowired注解来注入UserMapper。在getUserList方法中我们调用UserMapper的getUserList方法来查询用户列表。
创建JSP视图
在src/main/webapp/WEB-INF/views目录下创建一个名为“userList.jsp”的JSP视图,并添加以下内容:
<!DOCTYPE html>
<html>
<head>
<title>User List</title>
</head>
<body>
<h1>User List</h1>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
在上面的代码中,我们创建了一个名为“userList.jsp”的JSP视图,并使用
示例说明
示例1:添加用户
在UserController中添加以下方法:
@GetMapping("/add")
public String addUser() {
return "addUser";
}
@PostMapping("/add")
public String addUser(User user) {
userService.addUser(user);
return "redirect:/user/list";
}
在UserMapper中添加以下方法:
void addUser(User user);
在UserServiceImpl中添加以下方法:
@Override
public void addUser(User user) {
userMapper.addUser(user);
}
在src/main/webapp/WEB-INF/views目录下创建一个名为“addUser.jsp”的JSP视图,并添加以下内容:
<!DOCTYPE html>
<html>
<head>
<title>Add User</title>
</head>
<body>
<h1>Add User</h1>
<form action="${pageContext.request.contextPath}/user/add" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name"><br><br>
<label for="age">Age:</label>
<input type="text" id="age" name="age"><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
在上面的代码中,我们创建了一个名为“addUser.jsp”的JSP视图,并使用