1.axios交互
发送数据到后端。
alert('注册成功(数据正在发送后端)!');
// 获取表单数据
//const formData = new URLSearchParams(new FormData(document.getElementById("register-form"))).toString();
const form = document.getElementById("register-form");
const formData = new FormData(form);
const dataObject = {};
formData.forEach((value, key) => {
dataObject[key] = value;
});
// 发起 Axios 请求
await axios.post('/demo5_war/Registered/AddUser', dataObject, {
headers: {
//'Content-Type': 'application/x-www-form-urlencoded'
'Content-Type': 'application/json'
}
})
.then(function (response) {
// 打印响应数据
console.log(response);
console.log(response.data);
if (response.data != null) {
alert("注册成功!您的账号为:"+response.data.id);
window.location.href = 'dashboard.html';
} else {
alert("错误:未收到数据");
}
})
.catch(function (error) {
// 打印 Axios 请求错误信息
console.error("Axios Error:", error);
alert("处理您的请求时出错.");
});
后端接收
RegisterController这个控制器继承与BaseServlet2,会先执行父类的servic方法,在执行这个方法,返回值是需要发送给客户端的,所有在这里先转化成json类型的。
获取相关数据后,在对应的类中通过注解查询相关方法,然后通过注解进行参数注入执行相关方法
String uri = req.getRequestURI(); // 获取请求的 URI
System.out.println("uri = " + uri);
String methodName = new String(uri.substring(uri.lastIndexOf("/") + 1)).toString(); // 从 URI 中提取方法名
Method[] methods = this.getClass().getDeclaredMethods(); // 获取当前类中所有声明的方法
String contentType = req.getContentType(); // 获取请求的内容类型
System.out.println("请求类型为:" + contentType);
ObjectMapper objectMapper = new ObjectMapper(); // 用于将 JSON 转换为 Java 对象
JsonNode jsonNode = null;
2.Mybtis的应用
// 加载 MyBatis 的核心配置文件,获取 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取 SqlSession 对象,用它来执行 SQL
SqlSession sqlSession = sqlSessionFactory.openSession(true);
// 获取接口代理
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
sqlSession.getMapper(UserMapper.class)
方法获取UserMapper
接口的实现代理,用于执行数据库操作。UserMapper
是一个接口,定义了与数据库交互的方法,如查询、插入、更新、删除等。
执行数据的插入(注册),并释放资源。
userMapper.insertUser(user);
sqlSession.close();
UserMapper接口内部的大致形式
通过MyBatisX插件可以快速找到对应的sql语句。
最后在UserMapper.xml里编写sql语句即可。
这里的parameterType="javaWeb.domain.User表示将一个 User
对象作为参数传递给 SQL 语句。MyBatis 使用这个类来自动提取属性,并将它们映射到 SQL 语句中的相应位置。
<!-- 插入用户 -->
<insert id="insertUser" parameterType="javaWeb.domain.User">
//sql语句
</insert>