作用域对象ServletContext 完成添加与删除

什么是作用域

作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性。换句话说,作用域决定了代码区块中变量和其他资源的可见性。

作用域是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

作用域是分层的,内层作用域可以访问外层作用域的变量,反之则不行。

ServletContext:ServletContext代表当前web应用

作用域对象有:pageContext;request;session;application

pageContext对象:它的生命周期即page域,指存储在pageContext对象的数据只在当前页面有效,当发生页面跳转时,则在pageContext域的数据进行销毁。

request对象主要用于处理客户端请求,同时request对象也是作用域对象,它的作用域范围是同一个请求。

session对象用来存储有关用户会话的所有信息,它的作用域范围是同一个会话。

session对象常用方法。

application类似于系统的“全局变量”,用于实现用户之间的数据共享,它的作用域范围是在服务器一开始执行服务,到服务器关闭为止。

基于MVC模型使用分层模式完成添加

主页内容

<html>
<head>
    <title>主页</title>
</head>
<body>
<h2>欢迎来到主页!</h2>
<a href="addGoods.jsp">添加商品</a>
<table>
    <thead>
    <tr>
        <th>商品编号</th>
        <th>商品名称</th>
        <th>商品价格</th>
        <th>商品说明</th>
        <th>操作</th>
    </tr>
    </thead>
 
    <tbody>
    <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>
    </tbody>
  </table>
</body>
</html>

添加商品信息页面

<html>
<head>
    <title>商品信息添加</title>
</head>
<body>
<h2>商品信息录入</h2>
<form action="addGoods" method="post">
    商品名称:<input type="text" name="gname" value="" placeholder="商品名称"><br/>
    商品价格:<input type="number" step="0.01" name="price" value="" placeholder="商品价格"><br/>
    商品说明:<input type="text" name="mark" value="" placeholder="商品说明"><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

转发执行查询所有商品信息,跳转到主页做信息展示

package com.zhao.servlet;
 
 
import com.zhao.bean.Goods;
import com.zhao.dao.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("/addGoods")
public class AddGoods 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=new Goods();
        goods.setGname(req.getParameter("gname"));
        goods.setPrice(Double.parseDouble(req.getParameter("price")));//获取字符串数字转换为double数据
        goods.setMark(req.getParameter("mark"));
 
        GoodsDao goodsDao=new GoodsDao();
        int row=goodsDao.add(goods);
 
        if(row>0){
            req.getRequestDispatcher("selectAllGoods").forward(req,resp);
        }else {
            req.setAttribute("error_msg","添加商品信息失败!");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }
    }
}

删除信息操作

<html>
<head>
    <title>主页</title>
</head>
<body>
<h2>欢迎来到主页!</h2>
<a href="addGoods.jsp">添加商品</a>
<table>
    <thead>
    <tr>
        <th>商品编号</th>
        <th>商品名称</th>
        <th>商品价格</th>
        <th>商品说明</th>
        <th>操作</th>
    </tr>
    </thead>
 
    <tbody>
    <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>
    </tbody>
  </table>
</body>
</html>
package com.zhao.dao;
 
import com.zhao.bean.Goods;
import com.zhao.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 pstm=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";
            pstm=con.prepareStatement(sql);
            rs=pstm.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,pstm,con);
        }
        return goodsList;
    }
    public int add(Goods goods){
        try {
            con= JDBCUtil.getCon();
            String sql="insert into t_goods(gname,price,mark) values(?,?,?)";
            pstm=con.prepareStatement(sql);
            pstm.setObject(1,goods.getGname());
            pstm.setObject(2,goods.getPrice());
            pstm.setObject(3,goods.getMark());
            row=pstm.executeUpdate();
 
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(pstm,con);
        }
        return row;
    }
    public int deleteById(int gid){
        try {
            con= JDBCUtil.getCon();
            String sql="delete from t_goods where gid=?";
            pstm=con.prepareStatement(sql);
            pstm.setObject(1,gid);
            row=pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(pstm,con);
        }
        return row;
    }
}
package com.zhao.dao;
 
import com.zhao.bean.Goods;
import com.zhao.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 pstm=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";
            pstm=con.prepareStatement(sql);
            rs=pstm.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,pstm,con);
        }
        return goodsList;
    }
    public int add(Goods goods){
        try {
            con= JDBCUtil.getCon();
            String sql="insert into t_goods(gname,price,mark) values(?,?,?)";
            pstm=con.prepareStatement(sql);
            pstm.setObject(1,goods.getGname());
            pstm.setObject(2,goods.getPrice());
            pstm.setObject(3,goods.getMark());
            row=pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(pstm,con);
        }
        return row;
    
    public int deleteById(int gid){
        try {
            con= JDBCUtil.getCon();
            String sql="delete from t_goods where gid=?";
            pstm=con.prepareStatement(sql);
            pstm.setObject(1,gid);
            row=pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(pstm,con);
        }
        return row;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值