您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
12-案例-用户注册(mapper方法参数为对象,则占位为对象某属性名)
发布时间:2024-12-01 22:30:45编辑:雪饮阅读()
-
基于上篇实现的用户登录,那么没有用户账号的时候,我们需要用户注册。
所以,我们可以在登录页的同路径创建与登录页中所指定的register.html则如
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>欢迎注册</title>
<link href="css/register.css" rel="stylesheet">
</head>
<body>
<div class="form-div">
<div class="reg-content">
<h1>欢迎注册</h1>
<span>已有帐号?</span> <a href="login.html">登录</a>
</div>
<form id="reg-form" action="/LoginRegisterCaseModule/registerServlet" method="post">
<table>
<tr>
<td>用户名</td>
<td class="inputs">
<input name="username" type="text" id="username">
<br>
<span id="username_err" class="err_msg" style="display: none">用户名不太受欢迎</span>
</td>
</tr>
<tr>
<td>密码</td>
<td class="inputs">
<input name="password" type="password" id="password">
<br>
<span id="password_err" class="err_msg" style="display: none">密码格式有误</span>
</td>
</tr>
</table>
<div class="buttons">
<input value="注 册" type="submit" id="reg_btn">
</div>
<br class="clear">
</form>
</div>
</body>
</html>
我们这里需要注意两点,第一个注册的method一般都是post比较合适,第二个,这里我假定了/LoginRegisterCaseModule/registerServlet是我们的注册提交所接收的servlet所匹配的地址。
每次写sql于mapper映射文件中是挺麻烦的,所以我这里这次直接写到mapper接口类中,则mapper接口类继续新增用于插入注册用户数据和用于根据用户名判断待注册用户是否已经注册的情况的方法,则这两个方法则如:
@Select("select * from tb_user where username=#{username}")
User selectByUsername(String username);
//mapper方法参数如果是对象,则sql中的占位名称就是从该对象中去取同名属性的值填充该占位
@Insert("insert into tb_user(`username`,`password`) value(#{username},#{password})")
void add(User user);
那么所以接下来我们的注册所用的servlet,HttpServlet2.java则如:
package com.servlet;
import com.POJO.User;
import com.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
@WebServlet("/registerServlet")
public class HttpServlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String resource="mybatis-config.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
User user=new User();
String username=req.getParameter("username");
byte[] bytes=username.getBytes(StandardCharsets.ISO_8859_1);
username=new String(bytes,StandardCharsets.UTF_8);
String password=req.getParameter("password");
user.setUsername(username);
user.setPassword(password);
SqlSession sqlSession=sqlSessionFactory.openSession(true);
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
if(userMapper.selectByUsername(username)==null){
userMapper.add(user);
sqlSession.close();
resp.getWriter().write("注册成功!");
}
else{
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write("用户名已存在!");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
关键字词:mapper,方法,对象,参数,属性,占位,名
相关文章
- 09-资源路径问题(动态获取项目目录名(contextPath))
- 05-请求参数中文乱码-POST解决方案
- 01-Request和Response介绍&Request继承体系(获取get请
- 13-参数传递arg,param,List,Array,Map(mapper接口的pa
- 09-查询-条件查询(散装参数,POJO对象参数,Map参数)
- 08-查询-查看详情(mybatis的mapper接收参数的处理)
- 05-Mybatis核心配置文件(开发与测试环境environment的
- 04-Mapper代理开发(IntelliJ IDEA拷贝路径的小技巧,ma
- m3u8下载器优化及js获取get地址栏参数
- docker-compose一键构建(卷及具名卷)lnmp