先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)

正文

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 list = companyService.queryByLikeNameLimit(pageNum, pageSize,name); PageInfo 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,如果要知道具体的类型需要查另一张表;而前端显示时,需要以下拉框的形式进行选择。在新增成功后,再跳转回到显示所有信息的页面。

新增信息的业务逻辑:

(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 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}

统一信用编码:

公司成立时间:

公司地址:

${msg}

返回

(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,如果修改页面有下拉框,如何实现原有下拉框显示的功能。

修改信息的业务逻辑:

(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--%>

统一信用编码: 公司成立时间: 公司地址:

${msg}

返回

(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;

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

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)

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

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

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试) [外链图片转存中…(img-A7M6Hffa-1713321309111)]

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

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: