注:基于上个文章代码
页面
增加了添加修改和删除的连接
页面布局代码
<html>
<head>
<title>主页</title>
</head>
<body>
<!--EL表达式是通过$ {}从作用域对象中自动获取数据,如果是对象可以通过.访问其属性-->
<h1>欢迎来自${user.address}的${user.username}来到主页</h1>
<table>
<a href="addGoods.jsp">添加商品</a>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品说明</th>
</tr>
<!--items:要遍历的集合元素 var:临时变量-->
<c:forEach items="${goodsList}" var="goods">
<tr>
<td>${goods.gid}</td>
<td>${goods.gname}</td>
<td>${goods.price}</td>
<td>${goods.mark}</td>
<td>
<a href="">修改</a>
<a href="del?gid=${goods.gid}">删除</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
点击添加跳转到添加页面
布局代码
<html>
<head>
<title>商品信息添加</title>
</head>
<body>
<h2>商品信息录入</h2>
<form action="addGoods" method="post">
商品名称:<input type="text" value="" name="gname" placeholder="商品名称"></br>
商品价格:<input type="number" step="0.01" value="" name="price" placeholder="商品价格"></br>
商品说明:<input type="text" value="" name="mark" placeholder="商品说明"></br>
<input type="submit" value="提交"></br>
</form>
</body>
</html>
删除为即时命令,会直接发送请求
请求代码
添加页面提交后,会到addGoods地址发送请求
@WebServlet("/addGoods")
public class AddGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
Goods goods=new Goods();
goods.setGname(request.getParameter("gname"));
goods.setPrice(Double.parseDouble(request.getParameter("price")));
goods.setMark(request.getParameter("mark"));
GoodsDao goodsDao=new GoodsDao();
int row=goodsDao.add(goods);
if(row>0){
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else {
//request.setAttribute("error_msg","添加商品失败");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}
受影响的行数有数据后会再次发送查询请求(刷新)
@WebServlet("/ServletAllGoods")
public class ServletAllGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置请求和响应的编码
request.setCharacterEncoding("utf-8");//设置请求的编码格式为中文
response.setCharacterEncoding("utf-8");//设置相应的编码格式
System.out.println("SelectAllGoods...doPost");
//去查询数据库中商品信息表中的数据
GoodsDao goodsDao=new GoodsDao();
List<Goods> goodsList=goodsDao.selectAll();
System.out.println(goodsList);
//如何把商品信息传输到页面中进行展示---此处借助HttpSession传输数据
HttpSession session = request.getSession();//获取HttpSession对象
//把查询到商品信息集合存储到session对象中,起名字叫做goodsList
session.setAttribute("goodsList" , goodsList);
response.sendRedirect("zhuye.jsp"); //指定跳转页面
}
}
点击删除,会直接发送请求地址
del?gid=${goods.gid}的意思是获取当前点击的id
@WebServlet("/del")
public class DelGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int gid=Integer.parseInt(request.getParameter("gid"));
System.out.println(gid);
//根据id执行数据库的删除
GoodsDao goodsDao=new GoodsDao();
int row=goodsDao.deleteById(gid);
if(row>0){
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else {
request.setAttribute("error_msg","删除出现了问题");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}
删除成功后也会刷新该页面
GoodsDao中的数据库代码
package com.chai.dao.impl;
import com.chai.bean.Goods;
import com.chai.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class GoodsDao {
private Connection con=null;//数据库连接对象
private PreparedStatement ps=null;//预处理对象
private ResultSet rs=null;//结果集对象
private int row=0;//增删改受影响的行数
public List<Goods> selectAll(){
List<Goods> goodslist=new ArrayList<>();
try {
con= JDBCUtil.getCon();
String sql="select * from t_goods";
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while (rs.next()){
//把当前数据行的数据取出来,存储到Goods对象中
Goods goods=new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
//把Goods对象存储到集合中
goodslist.add(goods);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(rs,ps,con);
}
return goodslist;
}
public int add(Goods goods){
try {
con= JDBCUtil.getCon();
String sql="insert into t_goods(gname,price,mark) values(?,?,?)";
ps=con.prepareStatement(sql);
ps.setObject(1,goods.getGname());
ps.setObject(2,goods.getPrice());
ps.setObject(3,goods.getMark());
row=ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(ps,con);
}
return row;
}
public int deleteById(int gid){
try {
con= JDBCUtil.getCon();
//编写sql语句
String sql="delete from t_goods where gid=?";
//获取预处理对象
ps = con.prepareStatement(sql);
//传参
ps.setObject(1,gid);
//执行sql语句
row= ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(ps,con);
}
return row;
}
}
修改的代码分为两部分
第一部分:通过点击修改获取的id来获取这一条数据
获取id
<a href="findById?gid=${goods.gid}">修改</a>
获取数据的数据库操作
public Goods selectById(int gid){
Goods goods=new Goods();
List<Goods> goodslist=new ArrayList<>();
try {
con= JDBCUtil.getCon();
String sql="select * from t_goods where gid=?";
ps=con.prepareStatement(sql);
ps.setObject(1,gid);
rs=ps.executeQuery();
while (rs.next()){
//把当前数据行的数据取出来,存储到Goods对象中
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
//把Goods对象存储到集合中
goodslist.add(goods);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(rs,ps,con);
}
return goods;
}
查询商品信息成功,存入request域中,然后请求转发到页面展示数据
@WebServlet("/findById")
public class FindById extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int gid=Integer.parseInt(request.getParameter("gid"));
//根据gid查询商品信息
GoodsDao goodsDao=new GoodsDao();
Goods goods=goodsDao.selectById(gid);
if (goods!=null){
//查询商品信息成功,存入request域中,然后请求转发到页面展示数据
request.setAttribute("goods",goods);
request.getRequestDispatcher("upda.jsp").forward(request,response);
}else {
request.setAttribute("error_msg","修改出了异常!");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}
第二部分:修改数据
修改数据的数据库操作
public int upda(Goods goods){
try {
con= JDBCUtil.getCon();
//编写sql语句
String sql="update t_goods set gname=?,price=?,mark=? where gid=?";
//获取预处理对象
ps = con.prepareStatement(sql);
//传参
ps.setObject(1,goods.getGname());
ps.setObject(2,goods.getPrice());
ps.setObject(3,goods.getMark());
ps.setObject(4,goods.getGid());
//执行sql语句
row= ps.executeUpdate();
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(ps,con);
}
return row;
}
修改页面
<html>
<head>
<title>修改商品</title>
</head>
<body>
<h2>商品信息修改</h2>
<form action="updateGoods" method="post">
商品编号:<input type="text" value="${goods.gid}" name="gid" readonly="readonly" placeholder="商品编号"></br>
商品名称:<input type="text" value="${goods.gname}" name="gname" placeholder="商品名称"></br>
商品价格:<input type="number" step="0.01" value="${goods.price}" name="price" placeholder="商品价格"></br>
商品说明:<input type="text" value="${goods.mark}" name="mark" placeholder="商品说明"></br>
<input type="submit" value="修改"></br>
</form>
</body>
</html>
点击修改后跳转到后台请求
@WebServlet("/updateGoods")
public class UpdateGoods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//获取表单提交的数据,封装到goods对象中
Goods goods=new Goods();
goods.setGid(Integer.parseInt(request.getParameter("gid")));
goods.setGname(request.getParameter("gname"));
goods.setPrice(Double.parseDouble(request.getParameter("price")));
goods.setMark(request.getParameter("mark"));
System.out.println(goods);
GoodsDao goodsDao=new GoodsDao();
int row=goodsDao.upda(goods);
if(row>0){
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else {
request.setAttribute("error_msg","修改出了异常");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}
运行结果
点击修改
获取该id商品信息
修改数据
修改完成
模糊查询
在页面中新增查询功能
<form action="seach" method="post">
<input type="text" name="keyword" value="">
<input type="submit" value="搜索">
</form>
在GoodsDao中建立seach模糊查询
public List<Goods> seach(String keyword){
List<Goods> goodslist=new ArrayList<>();
try {
con= JDBCUtil.getCon();
String sql="select * from t_goods where gname like concat('%',?,'%')";//concat()函数表示字符串的拼接
ps=con.prepareStatement(sql);
ps.setObject(1,keyword);
rs=ps.executeQuery();
while (rs.next()){
//把当前数据行的数据取出来,存储到Goods对象中
Goods goods=new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
//把Goods对象存储到集合中
goodslist.add(goods);
}
}catch (Exception e){
e.printStackTrace();
}finally {
JDBCUtil.close(rs,ps,con);
}
return goodslist;
}
点击搜索进行请求
@WebServlet("/seach")
public class Seach extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String keyword=request.getParameter("keyword");
System.out.println(keyword);
//执行jdbc模糊查询
GoodsDao goodsDao=new GoodsDao();
List<Goods> goodsList=goodsDao.seach(keyword);
//把模糊查询到的商品信息集合存储到session中
HttpSession session = request.getSession();
session.setAttribute("goodsList",goodsList);
//跳转到主页进行信息显示
response.sendRedirect("zhuye.jsp");
}
}