一、商品信息的修改的逻辑:
1.点击修改跳转到servlet,后端根据id查询到该商品的信息;
dao中的根据id查询的代码
public Goods Selectgoods(Integer gid) throws SQLException {
Goods goods=null;
//加载驱动
con = JDBCUtil.getCon();
//创建sql语句
String sql = "select * from t_goods where gid=?";
//执行sql语句
ps = con.prepareStatement(sql);
//传参
ps.setObject(1,gid);
//获取结果集
rs = ps.executeQuery();
if (rs.next()){
goods =new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
}
//关闭数据库
JDBCUtil.close(rs,ps,con);
return goods;
}
findid中服务器中的代码
package com.wang.servlet;
import com.wang.bean.Goods;
import com.wang.dao.impl.Goodsdao;
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("/udate")
public class FindGId extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//修改代码的格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//2.获取添加商品的信息
int gid = Integer.parseInt(req.getParameter("gid"));
//将商品信息添加到后端
Goodsdao goodsdao=new Goodsdao();
Goods goods=null;
try {
goods = goodsdao.Selectgoods(gid);
} catch (Exception e) {
e.printStackTrace();
}
req.setAttribute("goods",goods);
req.getRequestDispatcher("xiugai.jsp").forward(req,resp);
}
}
2.把商品信息添加到request作用域中请求转发到信息展示页面;
3.用户根据需求修改表单中的字段,重新提交表单;
<html>
<head>
<title>修改页面</title>
</head>
<body>
<form action="updategoods" method="post">
修改商品编号:<input type="text" name="gid" value="${goods.gid}" readonly="readonly"><br/>
修改商品名称:<input type="text" name="gname" value="${goods.gname}"><br/>
修改商品价格:<input type="number" step="0.01" name="price" value="${goods.price}"><br/>
修改商品信息:<input type="text" name="mark" value="${goods.mark}"><br/>
<input type="submit" value="修改商品">
</form>
</body>
</html>
4.编写后端servlet获取用户最新修订的商品信息,执行数据库的修改操作;
dao中修改的jdbc代码
public class Updatedao {
private Connection con = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
public Boolean upateGoods(Goods goods) throws SQLException {
Boolean bool = null;
con = JDBCUtil.getCon();
//编写sql语句
String sql = "update t_goods set gname=?,price=?,mark=? where gid=?";
//获取sql语句
ps = con.prepareStatement(sql);
//传参
ps.setObject(1, goods.getGname());
ps.setObject(2, goods.getPrice());
ps.setObject(3, goods.getMark());
ps.setObject(4, goods.getGid());
int i = ps.executeUpdate();
if (i > 0) {
bool = true;
} else {
bool = false;
}
//关闭数据
JDBCUtil.close(ps,con);
return bool;
}
}
5.重新请求查询所有商品,跳转到商品信息主页;
package com.wang.servlet;
import com.wang.bean.Goods;
import com.wang.dao.impl.Updatedao;
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.sql.SQLException;
@WebServlet("/updategoods")
public class UpdateGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//修改代码的格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//获取修改后的数据
Goods goods = null;
goods = new Goods();
goods.setGid(Integer.parseInt(req.getParameter("gid")));
goods.setGname(req.getParameter("gname"));
goods.setPrice(Double.parseDouble(req.getParameter("price")));
goods.setMark(req.getParameter("mark"));
System.out.println(goods);
Boolean bool = null;
//调用修改的方法
Updatedao updatedao = new Updatedao();
try {
bool = updatedao.upateGoods(goods);
} catch (Exception e) {
e.printStackTrace();
}
if (bool != false) {
req.getRequestDispatcher("GoodsSelectAll").forward(req, resp);
} else {
req.setAttribute("error", "修改出现了问题");
req.getRequestDispatcher("error1.jsp").forward(req, resp);
}
}
}
二、商品信息的模糊查询的逻辑:
1.在zhuye.jsp设计前端页面
2.编写模糊查询的jdbc操作
//模糊查询
public List<Goods> Selectlike(String key) throws SQLException {
List<Goods> goodsList = new ArrayList<>();
//加载驱动
con = JDBCUtil.getCon();
//创建sql语句
String sql = "select * from t_goods where gname like concat('%',?,'%')";
//执行sql语句
ps = con.prepareStatement(sql);
//传参
ps.setObject(1,key);
//获取结果集
rs = ps.executeQuery();
Goods goods=null;
while(rs.next()){
goods =new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
goodsList.add(goods);
}
//关闭数据库
JDBCUtil.close(rs,ps,con);
return goodsList;
}
3.在后端获取页面输入的关键字,然后调用模糊查询方法
package com.wang.servlet;
import com.wang.bean.Goods;
import com.wang.dao.impl.Goodsdao;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@WebServlet("/seach")
public class GoodsSelectlike extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//重编代码格式
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
//获取模糊查询输入的数据
String key=req.getParameter("key");
System.out.println(key);
List<Goods> goodsList=null;
//调用模糊查询
Goodsdao goodsdao=new Goodsdao();
try {
goodsList = goodsdao.Selectlike(key);
} catch (Exception e) {
e.printStackTrace();
}
if(goodsList!=null){
HttpSession session=req.getSession();
session.setAttribute("goodsList",goodsList);
resp.sendRedirect("zhuye.jsp");
}
}
}
4.将查询到的信息展示到主页