ssm整合项目
时间: 2023-07-30 17:04:16 浏览: 69
SSM(Spring+SpringMVC+MyBatis)是一种常见的Java企业级Web开发框架,它将Spring、SpringMVC和MyBatis集成在一起,提供了强大的功能和良好的可扩展性。下面是一个简单的SSM整合项目的示例。
1. 环境准备
- JDK 1.8
- Maven 3.x
- IntelliJ IDEA 或 Eclipse
2. 创建Maven项目
在IDEA或Eclipse中创建一个Maven项目,选择Web Application类型。在pom.xml文件中添加以下依赖:
```xml
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.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.6</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
```
3. 创建数据库
创建一个名为`test`的数据库,然后创建一个名为`user`的表,包含以下字段:
- id
- name
- age
4. 配置Spring
在src/main/resources目录下创建一个名为`applicationContext.xml`的Spring配置文件,配置MyBatis和数据源:
```xml
<!-- 数据源 -->
<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?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- MyBatis配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- 扫描Mapper接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao"/>
</bean>
```
在src/main/resources目录下创建一个名为`mybatis-config.xml`的MyBatis配置文件,配置Mapper接口的位置和别名:
```xml
<configuration>
<typeAliases>
<package name="com.example.entity"/>
</typeAliases>
<mappers>
<mapper class="com.example.dao.UserMapper"/>
</mappers>
</configuration>
```
5. 配置SpringMVC
在src/main/webapp/WEB-INF目录下创建一个名为`web.xml`的Web配置文件,配置SpringMVC的DispatcherServlet:
```xml
<!-- SpringMVC配置 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
```
在src/main/webapp/WEB-INF目录下创建一个名为`dispatcher-servlet.xml`的SpringMVC配置文件,配置视图解析器和控制器:
```xml
<!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 控制器 -->
<bean id="userController" class="com.example.controller.UserController">
<property name="userService" ref="userService"/>
</bean>
<!-- 扫描Controller -->
<context:component-scan base-package="com.example.controller"/>
```
6. 编写代码
创建一个名为`User`的JavaBean,包含id、name和age属性,以及对应的getter和setter方法。
创建一个名为`UserMapper`的Mapper接口,定义以下方法:
```java
public interface UserMapper {
User selectUserById(int id);
List<User> selectAllUsers();
void insertUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
```
创建一个名为`UserMapper.xml`的Mapper映射文件,配置SQL语句:
```xml
<mapper namespace="com.example.dao.UserMapper">
<select id="selectUserById" parameterType="int" resultType="com.example.entity.User">
select * from user where id=#{id}
</select>
<select id="selectAllUsers" resultType="com.example.entity.User">
select * from user
</select>
<insert id="insertUser" parameterType="com.example.entity.User">
insert into user(name, age) values(#{name}, #{age})
</insert>
<update id="updateUser" parameterType="com.example.entity.User">
update user set name=#{name}, age=#{age} where id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user where id=#{id}
</delete>
</mapper>
```
创建一个名为`UserService`的Service接口,定义以下方法:
```java
public interface UserService {
User getUserById(int id);
List<User> getAllUsers();
void addUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
```
创建一个名为`UserServiceImpl`的Service实现类,实现UserService接口:
```java
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(int id) {
return userMapper.selectUserById(id);
}
@Override
public List<User> getAllUsers() {
return userMapper.selectAllUsers();
}
@Override
public void addUser(User user) {
userMapper.insertUser(user);
}
@Override
public void updateUser(User user) {
userMapper.updateUser(user);
}
@Override
public void deleteUser(int id) {
userMapper.deleteUser(id);
}
}
```
创建一个名为`UserController`的Controller类,处理用户请求:
```java
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/list")
public String list(Model model) {
List<User> userList = userService.getAllUsers();
model.addAttribute("userList", userList);
return "user/list";
}
@RequestMapping("/toAdd")
public String toAdd() {
return "user/add";
}
@RequestMapping("/add")
public String add(User user) {
userService.addUser(user);
return "redirect:/user/list";
}
@RequestMapping("/toEdit")
public String toEdit(int id, Model model) {
User user = userService.getUserById(id);
model.addAttribute("user", user);
return "user/edit";
}
@RequestMapping("/edit")
public String edit(User user) {
userService.updateUser(user);
return "redirect:/user/list";
}
@RequestMapping("/delete")
public String delete(int id) {
userService.deleteUser(id);
return "redirect:/user/list";
}
}
```
7. 编写视图
在src/main/webapp/WEB-INF/jsp目录下创建以下视图文件:
- list.jsp:显示用户列表
- add.jsp:添加用户
- edit.jsp:编辑用户
list.jsp:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户列表</title>
</head>
<body>
<h1>用户列表</h1>
<a href="${pageContext.request.contextPath}/user/toAdd">添加用户</a>
<br>
<br>
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr>
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>
<a href="${pageContext.request.contextPath}/user/toEdit?id=${user.id}">编辑</a>
<a href="${pageContext.request.contextPath}/user/delete?id=${user.id}">删除</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
add.jsp:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加用户</title>
</head>
<body>
<h1>添加用户</h1>
<form action="${pageContext.request.contextPath}/user/add" method="post">
<table>
<tr>
<td>姓名:</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="添加"></td>
</tr>
</table>
</form>
</body>
</html>
```
edit.jsp:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>编辑用户</title>
</head>
<body>
<h1>编辑用户</h1>
<form action="${pageContext.request.contextPath}/user/edit" method="post">
<input type="hidden" name="id" value="${user.id}">
<table>
<tr>
<td>姓名:</td>
<td><input type="text" name="name" value="${user.name}"></td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age" value="${user.age}"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="保存"></td>
</tr>
</table>
</form>
</body>
</html>
```
8. 运行项目
在IDEA或Eclipse中运行项目,访问http://localhost:8080/user/list即可查看用户列表。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)