Java网络开发(Tomcat同步数据增删改查)—— 用Jsp语法实现同步请求的 增删改查_jsp增删查改(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    </th>
</tr>

<c:forEach var="comp" items="${pageInfo.compList}">
    <tr>
        <td>${comp.id}</td>
        <td>${comp.name}</td>
        <td>${comp.typename}</td>
        <td>${comp.corporation}</td>
        <td>${comp.creditCode}</td>
        <td>${comp.address}</td>
        <td>${comp.createTime}</td>
        <td>${comp.username}</td>
        <td>${comp.updateTime}</td>
        <td><a href="/day06/company/remove?id=${comp.id}"><button>删除</button></a>
        <a href="/day06/company/updatePage?id=${comp.id}"><button>修改</button></a></td>
    </tr>
</c:forEach>


<%-- 分页查询相关--%> <%-- 如果当前页是第一页,需要控制首页不显示,上一页不显示--%> <%-- 把搜索的名字,每页显示条数也发给servlet--%> 首页 上一页

<%-- 如果当前页是尾页,需要控制下一页和尾页不显示 --%>
<c:if test=“ p a g e I n f o . p a g e N u m ! = p a g e I n f o . p a g e s " > < a h r e f = " / d a y 06 / c o m p a n y / m e s s L i s t ? p a g e N u m = {pageInfo.pageNum!=pageInfo.pages}"> <a href="/day06/company/messList?pageNum= pageInfo.pageNum!=pageInfo.pages"><ahref="/day06/company/messList?pageNum={pageInfo.pageNum+1}&name=KaTeX parse error: Expected 'EOF', got '&' at position 7: {name}&̲pageSize={pageInfo.pageSize}”>下一页
尾页
</c:if>

<%-- 提示信息,总页数为,当前第几页–%>
总计 p a g e I n f o . p a g e s 页 / 当前 {pageInfo.pages}页/当前 pageInfo.pages/当前{pageInfo.pageNum}

<%-- 隐藏框,把每页显示条数,和要模糊查询的公司名再共享回去--%> 跳转到:

### (2)后端代码:CompanyListServlet.java



package com.tianju.servlet.company;

import com.tianju.entity.Company;
import com.tianju.entity.PageInfo;
import com.tianju.service.ICompanyService;
import com.tianju.service.impl.CompanyService;
import com.tianju.util.StringUtils;

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.util.List;

/**
* 进行公司信息列表展示的servlet类
*/
@WebServlet(“/company/messList”)
public class CompanyListServlet extends HttpServlet {
private ICompanyService companyService = new CompanyService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    // 设置编码
    req.setCharacterEncoding("UTF-8");
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=utf-8");

    // 1.0版本,显示所有的信息

// // 进行查询
// List list = companyService.queryAll();
// System.out.println(list);
//
// // 共享值
// req.setAttribute(“compMessList”, list);
//
// // 请求转发
// req.getRequestDispatcher(“/compMess/list.jsp”).forward(req, resp);

    // 2.0版本,支持模糊查询和分页展示信息
    // 1.从前端获取数据:要显示第几页,每页显示多少条数据,查询的关键词是啥
    String pageNumStr = req.getParameter("pageNum"); // 第几页
    String pageSizeStr = req.getParameter("pageSize"); // 每页显示数据条数
    String name = req.getParameter("name");

    // 2.进行赋值,
    // 如果没有输入第几页,默认显示首页,第一页;
    Integer pageNum = StringUtils.isBlank(pageNumStr) ? 1:Integer.parseInt(pageNumStr);
    // 如果没有输入显示多少条数据,默认每页显示3条;
    Integer pageSize = StringUtils.isBlank(pageSizeStr) ? 3:Integer.parseInt(pageSizeStr);
    // 如果没有输入查询关键词,数据条数为总数;
    Integer total = companyService.countLines(name);


    // 3.根据查询数据条数,以及前端获取的每页显示数据条数,计算总页数;
    // 思路:如果能整除,则为页数;如果不能整除,则/后再加1;
    Integer pages = total % pageSize==0 ? total/pageSize:total/pageSize+1;

    // 4.new PageInfo对象,共享页数等,以及查询到的数据
    List<Company> list = companyService.queryByLikeNameLimit(pageNum, pageSize,name);
    PageInfo<Company> pageInfo = new PageInfo<>(pageNum, pageSize, total, pages, list);

    // 5.共享pageInfo到前端,查询条件到前端
    req.setAttribute("pageInfo",pageInfo);
    req.setAttribute("name", name);

    // 6.转发到前端进行显示
    req.getRequestDispatcher("/compMess/list.jsp").forward(req, resp);

}

}


## 新增数据—转发类型信息—新增信息业务


背景:如果新增一条图书信息,表格中记录的是图书的id,如果要知道具体的类型需要查另一张表;而前端显示时,需要以下拉框的形式进行选择。在新增成功后,再跳转回到显示所有信息的页面。


![在这里插入图片描述](https://img-blog.csdnimg.cn/f24ea4c236e8408184c210f319d041cf.png)


新增信息的业务逻辑:


(1)进入新增的页面,此时需要有类型信息以下拉框的方式在前端;


(2)用户在前端进行操作,需要把信息写全,不全要有提示;


(3)执行新增操作,将数据存入到数据库中;


(4)新增到数据成功,再跳转回到所有数据的页面


### (1)在list.jsp页面点击添加



添加


### (2)由servlet处理,查询类型信息共享到addPage.jsp页面


AddCompServlet.java文件,目的是给addPage.jsp共享类型信息:



package com.tianju.servlet.company;

import com.tianju.dao.IComTypeDao;
import com.tianju.entity.ComType;
import com.tianju.service.IComTypeService;
import com.tianju.service.impl.ComTypeServiceImpl;

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.nio.channels.NonWritableChannelException;
import java.util.List;

/**
* 添加公司信息的servlet
* 目的是把公司类型信息给addCompMess.jsp页面
*/
@WebServlet(“/compMess/addPage”)
public class AddCompServlet extends HttpServlet {
private IComTypeService typeService = new ComTypeServiceImpl();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 解决编码问题
req.setCharacterEncoding(“UTF-8”);
resp.setCharacterEncoding(“UTF-8”);
resp.setContentType(“text/html;charset=utf-8”);

    // 需要给addCompMess.jsp页面公司类型信息
    // 1.查询所有的类型;
    List<ComType> types = typeService.queryAll();
    System.out.println(types);

    // 2.值共享;
    req.setAttribute("types", types);

    // 3.进行转发;
    req.getRequestDispatcher("/compMess/addCompMess.jsp").forward(req,resp);
}

}


### (3)addPage.jsp添加信息页面的代码



<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

新增公司信息

新增公司信息

<%--${types}--%> 公司名:
合伙人:
公司类型: 请选择 <%-- 这部分拼出来--%> <%-- 有限责任公司--%> ${type.name}
</select>
<br>
统一信用编码:
<input type="text" name="creditCode"><br>
公司成立时间:
<input type="date" name="createTime"><br>
公司地址:<input type="text" name="address"><br>

<span style="color: darkred">${msg}</span><br>

<input type="submit" value="提交">
<input type="reset" value="重置"><br>
<hr>
<a href="/day06/company/messList">返回</a>

### (4)填完信息,点击添加,表单发送给AddServlet.java中的servlet进行处理;添加成功,再回到list.jsp页面,显示所有信息;



package com.tianju.servlet.company;

import com.tianju.entity.Company;
import com.tianju.service.IComTypeService;
import com.tianju.service.ICompanyService;
import com.tianju.service.impl.ComTypeServiceImpl;
import com.tianju.service.impl.CompanyService;
import com.tianju.util.StringUtils;

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.text.ParseException;
import java.text.SimpleDateFormat;

/**
* 新增公司信息的业务逻辑
* 目的是:接收从addCompMess.jsp传过来的信息;
* new Company 并存到数据库
*/
@WebServlet(“/compMess/add”)
public class AddServlet extends HttpServlet {
private SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
private ICompanyService companyService = new CompanyService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 解决编码问题;
req.setCharacterEncoding(“UTF-8”);
resp.setCharacterEncoding(“UTF-8”);
resp.setContentType(“text/html;charset=utf-8”);

    // 新增一条数据到数据库
    // 1.读取前端的值;
    String name = req.getParameter("name");
    String corporation = req.getParameter("corporation");
    String typeId = req.getParameter("typeId");
    String creditCode = req.getParameter("creditCode");
    String createTime = req.getParameter("createTime");
    String address = req.getParameter("address");

    System.out.println(createTime);

    // 2.判断是否为空;
    if (StringUtils.isBlank(name)
    || StringUtils.isBlank(corporation)
    || StringUtils.isBlank(typeId)
    || StringUtils.isBlank(creditCode)
    || StringUtils.isBlank(createTime)
    || StringUtils.isBlank(address)){
        // 共享一条msg给前端,提醒一下
        req.setAttribute("msg", "输入为空,请输全公司信息");
        req.getRequestDispatcher("/compMess/addPage").forward(req,resp);
        return;
    }

    // 3.new company实体类;
    Company company = new Company();
    company.setAddress(address);
    company.setName(name);
    company.setCorporation(corporation);
    company.setTypeId(Integer.parseInt(typeId));
    company.setCreditCode(creditCode);
    try {
        company.setCreateTime(sdf.parse(createTime));
    } catch (ParseException e) {
        throw new RuntimeException(e);
    }
    // TODO:记录是谁操作的这条信息
    company.setUserId(1);


    // 4.新增数据到数据库;
    Integer addFlag = companyService.add(company);
    if (addFlag<1){
        // 共享一条msg给前端,提醒一下
        req.setAttribute("msg", "系统繁忙,请稍后重试");
        req.getRequestDispatcher("/compMess/addCompMess.jsp");
        return;
    }

    // 5.重定向到list页面,显示更新后的公司信息
    resp.sendRedirect(req.getContextPath()+"/company/messList");

}

}


## 修改数据—修改数据需要知道修改的id—隐藏框实现


背景:用户点击修改某一条信息,进入修改页面,需要把原有的信息展示给用户;在页面跳转的过程中,要记录要修改的id,如果修改页面有下拉框,如何实现原有下拉框显示的功能。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0bf9c04c2f274ad9855819255ce5ecc3.png)


修改信息的业务逻辑:


(1)用户点击要修改的信息,进入修改页面;


(2)把原有的信息在前端进行展示,下拉框等;


(3)【记录要修改的id】需要记录好要修改的id;


(4)用户进行修改,把修改的信息和id传给后端;


(5)把修改数据更新到数据库中;


(6)修改成功后,再跳转回到所有数据的页面;


### (1)在list.jsp页面点击修改按钮,



修改


### (2)由UpdatePageServlet.java进行处理;根据id查询出要修改的数据,并且查询出所有类型信息,共享转发到update.jsp修改页面;



package com.tianju.servlet.company;

import com.sun.org.apache.bcel.internal.generic.NEW;
import com.tianju.entity.Company;
import com.tianju.service.IComTypeService;
import com.tianju.service.ICompanyService;
import com.tianju.service.impl.ComTypeServiceImpl;
import com.tianju.service.impl.CompanyService;
import com.tianju.util.StringUtils;

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.text.SimpleDateFormat;
import java.util.Date;

/**
* 修改页面的servlet:
* 目的是把已有的信息,查询,返回给修改页面;
* 也要共享一下类型信息
*/
@WebServlet(“/company/updatePage”)
public class UpdatePagServlet extends HttpServlet {
private ICompanyService companyService = new CompanyService();
private IComTypeService typeService = new ComTypeServiceImpl();

private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    // 解决编码问题
    req.setCharacterEncoding("UTF-8");
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=utf-8");

    // 思路:根据传过来的id,查询到这一条信息,转发给修改页面
    // 1.从前端获取修改的id
    String id = req.getParameter("id");
    System.out.println(id);

    // 2.判断不为空;
    if (StringUtils.isBlank(id)){
        req.setAttribute("msg", "未能获取要修改的公司id");
        // 重定向到list页面
        resp.sendRedirect(req.getContextPath()+"/company/messList");
        return;
    }

    // 3.查询出一条信息;
    Company companyDb = companyService.queryById(Integer.parseInt(id));
    if (companyDb==null){
        req.setAttribute("msg", "未能根据公司id查询到公司信息");
        // 重定向到list页面
        resp.sendRedirect(req.getContextPath()+"/company/messList");
        return;
    }

    // 4.共享值;---查询到的公司信息
    req.setAttribute("companyDb",companyDb);
    System.out.println(companyDb);

    // 4+.也要共享一下类型信息
    req.setAttribute("types", typeService.queryAll());
    // 创建时间需要单独共享一下---解决格式
    Date createTime = companyDb.getCreateTime();
    String createTimeStr = sdf.format(createTime);
    req.setAttribute("createTimeStr",createTimeStr);

    // 5.转发给修改页面.jsp
    req.getRequestDispatcher("/compMess/update.jsp").forward(req,resp);
}

}


### (3)在update.jsp页面,用户进行修改操作,点击提交后,表单信息交给UpdateServlet.java进行修改数据的处理;并且要设置一个隐藏框,用户传给后端要修改数据的id号



<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

修改公司信息

修改公司信息

${types}
${companyDb}
${createTimeStr} <%-- 隐藏信息,目的是传回要修改的id--%> 公司名:
合伙人:
公司类型: 请选择 <%-- 需要设置成selected--%>

### (4)在UpdateServlet.java中执行数据修改操作;修改成功,再回到list.jsp页面:



package com.tianju.servlet.company;

import com.tianju.entity.Company;
import com.tianju.service.ICompanyService;
import com.tianju.service.impl.CompanyService;
import com.tianju.util.StringUtils;

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.text.ParseException;
import java.text.SimpleDateFormat;

/**
* 修改公司信息的servlet
* 目的是:从前端获取要修改的信息;
* 执行修改操作
*/

@WebServlet(“/compMess/update”)
public class UpdateServlet extends HttpServlet {
private SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
private ICompanyService companyService = new CompanyService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 解决编码问题
req.setCharacterEncoding(“UTF-8”);
resp.setCharacterEncoding(“UTF-8”);
resp.setContentType(“text/html;charset=utf-8”);

    // 获取要修改的id,和其他信息,更新数据库,再重定向到list页面
    // 1.从前端获取信息;
    String name = req.getParameter("name");
    String corporation = req.getParameter("corporation");
    String typeId = req.getParameter("typeId");
    String creditCode = req.getParameter("creditCode");
    String createTime = req.getParameter("createTime");
    String address = req.getParameter("address");
    // 要修改的id;
    String id = req.getParameter("id");

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ypeId = req.getParameter(“typeId”);
String creditCode = req.getParameter(“creditCode”);
String createTime = req.getParameter(“createTime”);
String address = req.getParameter(“address”);
// 要修改的id;
String id = req.getParameter(“id”);

[外链图片转存中…(img-zhWuF2sy-1715791177845)]
[外链图片转存中…(img-TEuUGYPa-1715791177845)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值