controller层 servlet模块 编写 添加功能
编写 添加功能
请求参数 operation 的值 涉及到两个
toAdd 与 save
toAdd 这要管 新增按钮的 跳转到新增页面
save 是管 新增输入框中输入的数据 提交,
是通过 from表单标签 的action属性来实现
提交的方向是action属性的值
action="${ctx}/store/company?operation=save"
这里的${ctx}是在 base.jsp页面
<%@ include file="../../base.jsp"%>
的引入文件 中 c:set 标签里
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
${ctx}是 获取pageContext.request.contextPath 页面文本对象 的请求路径
在 toAdd 参数值 对应的toAdd方法中
实际做的是跳转页面
private void toAdd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //跳转页面 req.getRequestDispatcher("/WEB-INF/pages/store/company/add.jsp").forward(req,resp); }
就直接写跳转页面的代码就行了
将其跳转到
/WEB-INF/pages/store/company/add.jsp
company 企业管理 菜单栏 的 add.jsp 新增页面
注意:这里要进行 数据传递
所以 用req.getRequestDispatcher
跳转页面 发送 forward(req,resp) 请求与响应
新增页面 它是从form标签开始收集表单的数据
在 save 参数值 对应的save方法中
才是真正实现 新增功能的操作
在页面代码中 save 参数值是用
<button type="button" onclick='document.getElementById("editForm").submit()' class="btn bg-maroon">保存</button>
保存按钮 中的单击事件 document.getElementById("editForm").submit()
通过document 文本对象 获取 form标签 id值 editForm 进行submit()提交操作
在 servlet 模块中
save 新增方法步骤
1.将数据获取到,封装成一个对象
2.调用业务层接口save
3.跳转回到页面list
private void save(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//将数据获取到,封装成一个对象
Company company = BeanUtil.fillBean(req, Company.class, "yyyy-MM-dd");
//调用业务层接口save
// CompanyService companyService = new CompanyServiceImpl();
companyService.save(company);
//跳转回到页面list
//list(request,response);
resp.sendRedirect(req.getContextPath()+"/store/company?operation=list");
}
注意:这里要进行 数据传递
所以 用req.getRequestDispatcher
跳转页面 发送 forward(req,resp) 请求与响应
Company company = BeanUtil.fillBean(req, Company.class, "yyyy-MM-dd");
这里传入的参数是 request对象、Company.class 是Company对象的字节码集合,"yyyy-MM-dd"是字符串类型的日期格式模板
CompanyService companyService = new CompanyServiceImpl();
companyService.save(company);
将这个BeanUtil封装成的Company对象,传入到service层,进行数据的添加操作,在service层对应的添加方法是save,
list(request,response);
这是直接调用本类的list方法传回到页面,
但这样会将带有干扰的数据传回到页面
resp.sendRedirect(req.getContextPath()+"/store/company?operation=list");
用重定向的方式 重新回到 list.jsp页面
注意:这里的重定向是先找到本类的list方法
通过list方法内的跳转语句
req.getRequestDispatcher("/WEB-INF/pages/store/company/list.jsp").forward(req,resp);
重新回到企业管理菜单栏的主界面,就是分页显示数据的页面
为何,要这么麻烦,不直接写 req.getRequestDispatcher呢?
因为 这里是将数据新增到数据库,没有获得任何数据,
重新跳转到list.jsp页面,是要分页显示数据
通过list方法跳转回到list.jsp页面,就能在进行分页显示
否则它不会对数据库的数据在进行显示及分页功能