javaweb ssm
时间: 2025-01-09 15:44:19 浏览: 11
### JavaWeb SSM框架使用教程
#### 项目结构概述
在一个典型的JavaWeb应用中采用SSM(Spring + Spring MVC + MyBatis)架构时,项目的目录结构通常如下所示:
- `src/main/java`:源代码所在位置,按照包名分层放置控制器、服务层和服务实现类以及实体对象等。
- `src/main/resources`:资源文件夹内含数据库连接池配置、MyBatis映射文件以及其他必要的属性文件。
#### 创建并运行一个简单的SSM应用程序
##### 添加依赖项
为了构建基于SSM的应用程序,在pom.xml中加入所需的库支持[^1]:
```xml
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.springboot.version}</version>
</dependency>
<!-- other dependencies... -->
</dependencies>
```
##### 数据访问层设计
定义DAO接口及其对应的XML映射文档来操作持久化数据。例如,对于User表的操作可以这样写[^2]:
```java
public interface UserMapper {
@Select("SELECT * FROM users WHERE id=#{id}")
User selectById(int id);
}
```
关联的SQL语句存放在resources/mapper/UserMapper.xml里。
##### 业务逻辑处理单元
Service组件负责封装具体的业务流程,并调用相应的DAO完成特定功能。比如新增用户的服务方法可能是这样的形式[^4]:
```java
@Service
public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
public UserServiceImpl(UserMapper userMapper){
this.userMapper = userMapper;
}
@Override
public void addUser(User user) {
userMapper.insert(user);
}
}
```
##### 控制器部分
最后一步就是建立Controller接收HTTP请求并将参数传递给后台进行加工计算后再返回响应结果给前端页面显示出来。这里给出一段RESTful风格的例子:
```java
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService){
this.userService = userService;
}
@PostMapping("")
public ResponseEntity<String> createUser(@RequestBody User newUser){
try{
userService.addUser(newUser);
return new ResponseEntity<>("Created", HttpStatus.CREATED);
}catch (Exception e){
logger.error(e.getMessage(),e);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
```
#### 配置详解
###### Web容器初始化设置
在web.xml中声明DispatcherServlet作为中央调度者接受所有的客户端请求;同时注册ContextLoaderListener监听事件以便于加载全局上下文环境变量:
```xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
```
###### 应用级Bean管理
applicationContext.xml用来集中管理和注入各种类型的bean实例,包括但不限于DataSource、TransactionManager和MapperScannerConfigurer等核心要素[^3]:
```xml
<!-- data source configuration -->
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
...
</bean>
<!-- transaction manager config -->
<tx:annotation-driven/>
<!-- scan mapper interfaces and register them as beans automatically -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.dao"/>
</bean>
```
阅读全文