写一个springmvc简单实列
时间: 2023-10-22 18:08:08 浏览: 97
好的,这里给您一个简单的 Spring MVC 实例,实现一个简单的用户注册功能。
首先,我们需要建立一个 Maven 项目,并添加以下依赖:
```xml
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
```
接下来,我们需要配置 Spring MVC,创建一个 `springmvc-servlet.xml` 文件:
```xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:resources mapping="/resources/**" location="/resources/" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="userDao" class="com.example.dao.UserDaoImpl">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="userService" class="com.example.service.UserServiceImpl">
<property name="userDao" ref="userDao" />
</bean>
<bean id="userController" class="com.example.controller.UserController">
<property name="userService" ref="userService" />
</bean>
<mvc:default-servlet-handler />
<mvc:resources mapping="/resources/**" location="/resources/" />
<context:component-scan base-package="com.example" />
</beans>
```
其中,我们配置了视图解析器,静态资源的访问路径,数据源,JdbcTemplate,Dao 和 Service 层的 Bean,以及控制器的 Bean。同时,我们启用了注解驱动和组件扫描。
接着,我们创建一个 `UserController` 类来处理用户注册的请求:
```java
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/register", method = RequestMethod.GET)
public String showRegistrationForm(Model model) {
model.addAttribute("user", new User());
return "register";
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String processRegistration(@ModelAttribute("user") User user, BindingResult result, Model model) {
if (result.hasErrors()) {
return "register";
}
userService.addUser(user);
return "redirect:/login";
}
}
```
我们在控制器类上使用 `@Controller` 注解,并在类中注入 `UserService`。我们使用 `@RequestMapping` 注解来处理请求,其中 `showRegistrationForm()` 方法用来展示用户注册表单,`processRegistration()` 方法用来处理用户提交的表单数据。
接着,我们创建一个 `UserDao` 接口和它的实现类 `UserDaoImpl`,用来实现用户数据的存储和查询:
```java
public interface UserDao {
void addUser(User user);
User getUserByUsername(String username);
}
```
```java
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void addUser(User user) {
String sql = "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";
jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getEmail());
}
@Override
public User getUserByUsername(String username) {
String sql = "SELECT * FROM users WHERE username = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{username}, new UserRowMapper());
}
private static final class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getLong("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
return user;
}
}
}
```
我们使用 `@Repository` 注解来标识 `UserDaoImpl` 类为数据访问层的 Bean。我们在 `UserDao` 接口中定义了添加用户和根据用户名查询用户的方法,在 `UserDaoImpl` 中实现了这些方法,并使用 `JdbcTemplate` 来访问数据库。
最后,我们创建一个 `User` 类来表示用户:
```java
public class User {
private Long id;
private String username;
private String password;
private String email;
// 省略 getter 和 setter 方法
}
```
我们在类中定义了用户的属性,以及对应的 getter 和 setter 方法。
最后,我们创建一个 `register.jsp` 页面来展示用户注册表单:
```html
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>User Registration Form</title>
</head>
<body>
<h1>User Registration Form</h1>
<form:form method="post" modelAttribute="user">
<table>
<tr>
<td>Username:</td>
<td><form:input path="username" /></td>
</tr>
<tr>
<td>Password:</td>
<td><form:password path="password" /></td>
</tr>
<tr>
<td>Email:</td>
<td><form:input path="email" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Register" /></td>
</tr>
</table>
</form:form>
</body>
</html>
```
在页面中,我们使用了 Spring MVC 的标签库来绑定表单数据。
以上就是一个简单的 Spring MVC 实例,实现了用户注册功能。
阅读全文