基本思路:mybatis–service层实现。用户在数据展示界面有一个新增数据的按钮,点击按钮之后跳转到表单填写界面。表单填写完毕之后提交到AddServlet,在这里调用service层的方法。当然,最后还需要跳转到数据展示界面。因此,总结为一共需要
4步骤
一、接口以及SQL代码
//添加的接口
void add(Brand brand);
mybatis的SQL:
<!-- 添加数据-->
<insert id="add">
insert into tb_brand
values (null , #{brandName}, #{companyName},#{ordered},#{description},#{status})
</insert>
注意,这里的id是null的值,因为数据库中设置了id的自增,我们也不能够将用户的id直接展示出来。
二、service层
// 添加功能
public void add(Brand brand){
//获取sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用getMapper
BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
mapper.add(brand);
//提交事务
sqlSession.commit();
sqlSession.close();
}
这里的代码不需要多少,需要注意的是,除了查询所有的操作外,其余操作都需要进行提交事务。
三、准备用户填写表单的页面
<!DOCTYPE html>
<html lang="en">
<head>
<title>表单填写</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
<script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container mt-5">
<form action="AddServlet" method="post">
品牌名称:<input name="brandName" class="form-control">
企业名称:<input name="companyName" class="form-control">
价格: <input name="ordered" class="form-control">
描述:<textarea name="description" rows="5" cols="20" class="form-control"></textarea>
状态:<input type="radio" name="status" value="1" class="mt-4" >启用
<input type="radio" name="status" value="0" >禁用<br>
<button class="btn btn-primary " type="submit">提交</button>
</form>
</div>
</body>
</html>
注意这里面拿到用户填写的内容,是通过一个name属性。表单填写之后
action="AddServlet"
,是将结果提交到了这个地方。
页面样式:
四、servlet部分
首先接收好数据,然后调service的方法,最后还要将结果显示给用户。
①接收结果
//接收提交的表单,封装成对象
String brandName = request.getParameter("brandName");
String companyName = request.getParameter("companyName");
String ordered = request.getParameter("ordered");
String description = request.getParameter("description");
String status = request.getParameter("status");
②封装成对象
//封装起来
Brand brand = new Brand();
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setOrdered(Integer.valueOf(ordered));
brand.setDescription(description);
brand.setStatus(Integer.valueOf(status));
③调用service层的方法
//调用service
BrandService brandService = new BrandService();
brandService.add(brand);
System.out.println("数据:" + brand);
④将结果转发到显示层
//转发
// request.getRequestDispatcher("/SelectAllServlet").forward(request,response);
response.sendRedirect("/SelectAllServlet");
必须注意的地方:传进来的字可能会乱码,必须进行处理。request.setCharacterEncoding(“utf-8”);
request.setCharacterEncoding("utf-8");
全部代码:
package com.fldwws.web;
import com.fldwws.pojo.Brand;
import com.fldwws.service.BrandService;
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;
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
//接收提交的表单,封装成对象
String brandName = request.getParameter("brandName");
String companyName = request.getParameter("companyName");
String ordered = request.getParameter("ordered");
String description = request.getParameter("description");
String status = request.getParameter("status");
//封装起来
Brand brand = new Brand();
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setOrdered(Integer.valueOf(ordered));
brand.setDescription(description);
brand.setStatus(Integer.valueOf(status));
//调用service
BrandService brandService = new BrandService();
brandService.add(brand);
System.out.println("数据:" + brand);
//转发
// request.getRequestDispatcher("/SelectAllServlet").forward(request,response);
response.sendRedirect("/SelectAllServlet");
}
}