引言
SSM框架(Spring+SpringMVC+MyBatis)是Java企业级开发中常用的一套开源框架组合。它将Spring、SpringMVC和MyBatis这三个框架结合在一起,简化了Java Web开发的复杂性。本文将带你通过一个简单的登录实例,轻松上手SSM框架。
环境准备
在开始之前,请确保以下环境已安装和配置好:
- Java Development Kit (JDK) 1.8及以上版本
- Maven 3.0及以上版本
- MySQL数据库
- IntelliJ IDEA或Eclipse等IDE
项目结构
创建一个Maven项目,并按照以下结构组织项目文件:
src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── ssm
│ │ ├── controller
│ │ │ └── LoginController.java
│ │ ├── model
│ │ │ └── User.java
│ │ ├── service
│ │ │ └── UserService.java
│ │ │ └── UserServiceImpl.java
│ │ ├── mapper
│ │ │ └── UserMapper.java
│ │ └── utils
│ │ └── DatabaseUtil.java
│ ├── resources
│ │ ├── db.properties
│ │ ├── springmvc.xml
│ │ └── mybatis-config.xml
│ └── webapp
│ ├── WEB-INF
│ │ ├── web.xml
│ │ └── views
│ │ └── login.jsp
└── pom.xml
模型层(Model)
首先,定义一个User实体类,用于表示用户信息。
package com.example.ssm.model;
public class User {
private Integer id;
private String username;
private String password;
// 省略getter和setter方法
}
数据访问层(DAO)
创建一个UserMapper接口,用于定义数据库操作方法。
package com.example.ssm.mapper;
import com.example.ssm.model.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
User findUserByUsername(String username);
}
业务层(Service)
创建一个UserService接口,定义用户服务方法。
package com.example.ssm.service;
import com.example.ssm.model.User;
public interface UserService {
User getUserByUsername(String username);
}
业务实现层(ServiceImpl)
实现UserService接口,并注入UserMapper。
package com.example.ssm.service.impl;
import com.example.ssm.mapper.UserMapper;
import com.example.ssm.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserByUsername(String username) {
return userMapper.findUserByUsername(username);
}
}
控制层(Controller)
创建一个LoginController类,处理登录请求。
package com.example.ssm.controller;
import com.example.ssm.model.User;
import com.example.ssm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView login() {
return new ModelAndView("login.jsp");
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public ModelAndView login(@RequestParam("username") String username, @RequestParam("password") String password) {
User user = userService.getUserByUsername(username);
if (user != null && user.getPassword().equals(password)) {
return new ModelAndView("success.jsp");
} else {
return new ModelAndView("login.jsp").addObject("error", "用户名或密码错误!");
}
}
}
配置文件
在resources目录下创建以下配置文件。
db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/your_database
jdbc.username=root
jdbc.password=root
springmvc.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: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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 扫描Controller -->
<context:component-scan base-package="com.example.ssm.controller"/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 注解驱动 -->
<mvc:annotation-driven/>
</beans>
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/ssm/mapper/UserMapper.xml"/>
</mappers>
</configuration>
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
JSP页面
在WEB-INF/views目录下创建login.jsp和success.jsp页面。
login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
<c:if test="${not empty error}">
<div style="color: red;">${error}</div>
</c:if>
</body>
</html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
欢迎登录!
</body>
</html>
运行项目
启动Tomcat服务器,访问http://localhost:8080/your_project_name/login,即可看到登录页面。
总结
通过本文的示例,你已成功掌握了SSM框架的基本使用方法。在实际项目中,可以根据需求进行扩展和优化。希望本文能帮助你快速上手SSM框架,为你的Java Web开发之路助力!
