写一个javaweb登录注册基于(mybaits,mysql,maven,jsp)
时间: 2024-03-06 22:51:49 浏览: 81
好的,下面是一个简单的 JavaWeb 登录注册的示例,使用了 MyBatis、MySQL、Maven 和 JSP 技术。
1. 创建数据库表
首先需要创建一个名为 user 的表,包含 id、username、password 等字段。
```sql
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
2. 配置 Maven 依赖
在 pom.xml 文件中增加 MyBatis、MySQL 等依赖。
```xml
<dependencies>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
```
3. 编写 MyBatis 配置文件
在 resources 目录下创建一个名为 mybatis-config.xml 的文件,配置 MyBatis 的相关信息,包括数据源、mapper 等。
```xml
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" 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="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
```
4. 编写 UserMapper.xml 文件
在 resources/mapper 目录下创建一个名为 UserMapper.xml 的文件,编写 SQL 语句和对应的 Java 方法。
```xml
<mapper namespace="com.example.dao.UserMapper">
<resultMap id="userMap" type="com.example.entity.User">
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
</resultMap>
<select id="getUserByUsername" resultMap="userMap">
SELECT * FROM user WHERE username = #{username}
</select>
<insert id="addUser" parameterType="com.example.entity.User">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
</insert>
</mapper>
```
5. 编写 User 实体类
创建一个名为 User 的实体类,包含 id、username、password 等属性,以及对应的 getter 和 setter 方法。
```java
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
```
6. 编写 UserDao 接口
创建一个名为 UserDao 的接口,包含查询用户和添加用户的方法。
```java
public interface UserDao {
User getUserByUsername(String username);
void addUser(User user);
}
```
7. 编写 UserDaoImpl 类
创建一个名为 UserDaoImpl 的实现类,实现 UserDao 中的方法。
```java
public class UserDaoImpl implements UserDao {
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public User getUserByUsername(String username) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
return userMapper.getUserByUsername(username);
}
}
@Override
public void addUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.addUser(user);
sqlSession.commit();
}
}
}
```
8. 编写 UserService 接口
创建一个名为 UserService 的接口,包含登录和注册的方法。
```java
public interface UserService {
boolean login(String username, String password);
void register(String username, String password);
}
```
9. 编写 UserServiceImpl 类
创建一个名为 UserServiceImpl 的实现类,实现 UserService 中的方法。
```java
public class UserServiceImpl implements UserService {
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
@Override
public boolean login(String username, String password) {
User user = userDao.getUserByUsername(username);
return user != null && user.getPassword().equals(password);
}
@Override
public void register(String username, String password) {
User user = new User();
user.setUsername(username);
user.setPassword(password);
userDao.addUser(user);
}
}
```
10. 编写 LoginServlet 类
创建一个名为 LoginServlet 的 Servlet 类,处理登录请求。
```java
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private UserService userService;
@Override
public void init() {
SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
userService = new UserServiceImpl(userDao);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
boolean result = userService.login(username, password);
if (result) {
request.getRequestDispatcher("success.jsp").forward(request, response);
} else {
request.getRequestDispatcher("failure.jsp").forward(request, response);
}
}
}
```
11. 编写 RegisterServlet 类
创建一个名为 RegisterServlet 的 Servlet 类,处理注册请求。
```java
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private UserService userService;
@Override
public void init() {
SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
UserDao userDao = new UserDaoImpl(sqlSessionFactory);
userService = new UserServiceImpl(userDao);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
userService.register(username, password);
request.getRequestDispatcher("success.jsp").forward(request, response);
}
}
```
12. 编写 JSP 页面
创建一个名为 login.jsp 的 JSP 页面,包含登录表单。
```html
<form method="post" action="login">
<label for="username">Username:</label>
<input type="text" name="username">
<br>
<label for="password">Password:</label>
<input type="password" name="password">
<br>
<input type="submit" value="Login">
</form>
```
创建一个名为 register.jsp 的 JSP 页面,包含注册表单。
```html
<form method="post" action="register">
<label for="username">Username:</label>
<input type="text" name="username">
<br>
<label for="password">Password:</label>
<input type="password" name="password">
<br>
<input type="submit" value="Register">
</form>
```
创建一个名为 success.jsp 的 JSP 页面,表示登录或注册成功。
```html
<h1>Success!</h1>
```
创建一个名为 failure.jsp 的 JSP 页面,表示登录失败。
```html
<h1>Failure!</h1>
```
以上是一个简单的 JavaWeb 登录注册的示例,实际开发中可能还需要考虑安全性、性能等方面的问题。
阅读全文