1、FruitServlet
- 这些Servlet都是围绕着Fruit进行的
- 把所有对水果增删改查的Servlet放到一个Servlet里面,让tomcat实例化一个Servlet对象
package com.csdn.fruit.servlet;
import com.csdn.fruit.dto.PageInfo;
import com.csdn.fruit.dto.PageQueryParam;
import com.csdn.fruit.dto.Result;
import com.csdn.fruit.pojo.Fruit;
import com.csdn.fruit.service.FruitService;
import com.csdn.fruit.service.impl.FruitServiceImpl;
import com.csdn.fruit.util.RequestUtil;
import com.csdn.fruit.util.ResponseUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/fruit/*")
public class FruitServlet extends HttpServlet {
private FruitService fruitService = new FruitServiceImpl();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// /fruit/index
String uri = req.getRequestURI();
uri = uri.substring(1);
String[] split = uri.split("/");
String methodName = split[1];
switch (methodName) {
case "index" ->index(req,resp);
case "add"-> add(req, resp);
case "del"->del(req,resp);
case "edit"->edit(req,resp);
case "getFname"-> getFname(req, resp);
case "update" -> update(req, resp);
}
}
protected void index(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Integer pageNo = 1;
String pageNoStr = req.getParameter("pageNo");
if (pageNoStr != null && !"".equals(pageNoStr)) {
pageNo = Integer.parseInt(pageNoStr);
}
String keyword = "";
String keywordStr = req.getParameter("keyword");
if (keywordStr != null) {
keyword = keywordStr;
}
PageQueryParam pageQueryParam = new PageQueryParam(pageNo, 5, keyword);
PageInfo<Fruit> pageInfo = fruitService.getFruitPageInfo(pageQueryParam);
Result result = Result.OK(pageInfo);
ResponseUtil.print(resp, result);
}
protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class);
fruitService.addFruit(fruit);
ResponseUtil.print(resp, Result.OK());
}
protected void del(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Integer fid = Integer.parseInt(req.getParameter("fid"));
fruitService.delFruit(fid);
ResponseUtil.print(resp, Result.OK());
}
protected void edit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Integer fid = Integer.parseInt(req.getParameter("fid"));
Fruit fruit = fruitService.getFruitById(fid);
ResponseUtil.print(resp, Result.OK(fruit));
}
public void getFname(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String fname = req.getParameter("fname");
Fruit fruit = fruitService.getFruitByFname(fname);
ResponseUtil.print(resp, fruit == null ? Result.OK() : Result.Fail());
}
protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Fruit fruit = (Fruit) RequestUtil.readObject(req, Fruit.class);
fruitService.updateFruit(fruit);
ResponseUtil.print(resp, Result.OK());
}
}
2、修改js中axios中的url路径
2.2、公共的common.js
function $(key){
if(key){
if(key.startsWith("#")){
key = key.substring(1)
return document.getElementById(key)
}else{
let nodeList = document.getElementsByName(key)
return Array.from(nodeList)
}
}
}
2.2.1、index.js
let pageNo = 1;
let pageCount = 0;
let keyword=""
//当页面加载完成,执行匿名函数
window.onload=function(){
loadData();
}
function search() {
keyword=$("#keyword").value
loadData(pageNo)
}
function page(str) {
if (str) {
if (str == "first") {
pageNo = 1;
}else if (str == "pre") {
pageNo = pageNo - 1;
}else if (str == "next") {
pageNo = pageNo + 1;
}else if (str == "last") {
pageNo = pageCount;
}
if (pageNo > pageCount) {
pageNo=pageCount
}
if (pageNo <= 0) {
pageNo=1
}
}
loadData(pageNo)
}
loadData=function(pageNo=1){//pageNo这个参数有默认值,如果没有传值,则使用默认值 1
axios({
method: 'get',
url: '/fruit/index',
params: {
pageNo: pageNo,
keyword:keyword
}
}).then(response => {
debugger
let fruitList = response.data.data.list
pageNo = response.data.data.pageNo
pageCount = response.data.data.pageCount
// 此处使用的是axios,那么响应回来的数据自动就是json,
// 不需要再进行parse(如果是原始的ajax操作,那么一定需要parse)
// let fruitArr = JSON.parse(fruitList)
let fruitArr = fruitList;
let fruitTbl = $("#fruit_tbl")
//向表格中添加行之前,先删除原来的行
let rows=fruitTbl.rows
for (let i = rows.length - 1; i >= 1; i--) {
fruitTbl.deleteRow(i);
}
for (let i = 0; i < fruitArr.length; i++) {
let tr = fruitTbl.insertRow();
let fnameTD = tr.insertCell();
let priceTD = tr.insertCell();
let fcountTD = tr.insertCell();
let operTD = tr.insertCell();
let fruit = fruitArr[i];
//fnameTD.innerText = fruit.fname
fnameTD.innerHTML = '<a href="edit.html?fid=' + fruit.fid + '">' + fruit.fname + '</a>';
priceTD.innerText = fruit.price;
fcountTD.innerText = fruit.fcount;
operTD.innerHTML = "<img class=\"delImg\" src=\"imgs/del.png\" onclick=\"delFruit(" + fruit.fid + ")\"/>";
}
});
}
delFruit = function (fid) {
if (window.confirm('是否确认删除?')) {
axios({
method: 'get',
url: '/fruit/del',
params:{
fid: fid,
}
}).then(response=>{
if (response.data.flag) {
window.location.reload();
}
});
}
};
2.2.2、edit.js
let queryString = window.location.search.substring(1)
if(queryString){
var fid = queryString.split("=")[1]
window.onload=function(){
loadFruit(fid)
}
loadFruit = function(fid){
axios({
method:'get',
url:'/fruit/edit',
params:{
fid:fid
}
}).then(response=>{
debugger
let fruit = response.data.data
$("#fid").value=fruit.fid
$("#fname").value=fruit.fname
$("#price").value=fruit.price
$("#fcount").value=fruit.fcount
$("#remark").value=fruit.remark
})
}
update=function(){
let fid = $("#fid").value
let fname = $("#fname").value
let price = $("#price").value
let fcount = $("#fcount").value
let remark = $("#remark").value
axios({
method:'post',
url:"/fruit/update",
data:{
fid:fid,
fname:fname,
price:price,
fcount:fcount,
remark:remark
}
}).then(response=>{
if(response.data.flag){
window.location.href="index.html"
}
})
}
}
2.2.3、add.js
function add(){
let fname = $("#fname").value
let price = $("#price").value
let fcount = $("#fcount").value
let remark = $("#remark").value
//let fruit = {"fname":fname,"price":price,"fcount":fcount,"remark":remark}
let fruit = {}
fruit.fname=fname
fruit.price = price
fruit.fcount=fcount
fruit.remark=remark
axios({
method:'post',
url:'/fruit/add',
data:fruit
}).then(response=>{
if(response.data.flag){
window.location.href='index.html'
}
})
}
function checkFname(fname){
axios({
method:'get',
url:"/fruit/getFname",
params:{
fname:fname
}
}).then(response=>{
let fnameSpan= $("#fnameSpan");
if(response.data.flag){
fnameSpan.innerText = '名称可添加'
fnameSpan.style.color='green'
}else{
fnameSpan.innerText = '名称已存在'
fnameSpan.style.color='red'
}
})
}