作用域对象,用mvc模型完成商品的添加和删除

文章介绍了JavaWeb开发中四种作用域对象(request,session,Application,page)的概念和应用场景,并展示了如何在JSP和Servlet中进行商品的添加和删除操作,涉及DAO层的方法调用。
摘要由CSDN通过智能技术生成

什么是作用域对象?

        作用域指的是变量的适用范围。 在传统的面向对象程序设计中,主要关注于公用和私有作用域。 公用作用域中的对象属性可以从对象外部访问,即开发者创建对象的实例后,就可使用它的公用属性。

作用域四大对象

1. request
request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。

应用场景 : 常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。

2. session
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。

应用场景 : 常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。

3. Application(ServletContext)
ServletContext在服务器启动时创建,在服务器关闭时销毁。
所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,全局变量,只要设置一次,则所有的网页窗口都可以取得数据。

应用场景 : 一般用于在多个客户端间共享数据时使用。

4. page
page对象即this,代表JSP本身,更准确的说它代表JSP被翻译后的Servlet,因此他可以调用Servlet类所定义的方法。page对象的类型为javax.servlet.jsp.HttpJspPage。

应用场景 : 在实际应用中,page对象很少在JSP中使用。

添加和删除的操作

1.页面设计

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>主页</title>
</head>
<body>
<!-- 在页面导入jstl的核心 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<h2>欢迎来自${user.address}的${user.username}到主页</h2>
<table>
    <a href="addGoods.jsp">添加商品</a>
    <thead>
    <tr>
        <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="del?gid=${goods.gid}">删除</a>
            </td>
            <td>
                <a href="udate?gid=${goods.gid}">修改</a>
            </td>

        </tr>
    </c:forEach>
    </tbody>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加商品</title>
</head>
<body>
<form action="addgoods" method="post">
    商品名称:<input type="text" name="gname" value=""><br/>
    商品价格:<input type="number" step="0.01" name="price" value=""><br/>
    商品信息:<textarea name="mark"></textarea><br/>
    <input type="submit" value="添加商品">
</form>
</body>
</html>

2.dao(添加和删除)

public class Goodsdao {
    private Connection con = null;
    private PreparedStatement ps = null;
    private ResultSet rs = null;

    public List<Goods> SelectAll() throws SQLException {
        List<Goods> goodsList = new ArrayList<>();
        //加载驱动
        con = JDBCUtil.getCon();
        //创建sql语句
        String sql = "select * from t_goods";
        //执行sql语句
        ps = con.prepareStatement(sql);
        //获取结果集
        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;
    }

}

 

public class Deletedao {
    private Connection con = null;
    private PreparedStatement ps=null;
    private ResultSet rs=null;
    public Boolean delectGoods(int gid) throws SQLException {
        Boolean bool=null;
        con = JDBCUtil.getCon();
        //创建sql语句
        String sql = "delete from t_goods where gid=?";
        //获取sql语句
        ps = con.prepareStatement(sql);
        //传参
        ps.setObject(1,gid);
        int i = ps.executeUpdate();
        if (i > 0) {
            bool = true;
        } else {
            bool = false;
        }
        //关闭数据
        JDBCUtil.close(ps,con);
        return bool;
    }
}

 3.服务器

@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 IOException, ServletException {
        //1.编写代码的格式
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        System.out.println("hhhh");
        //2.获取添加商品的信息
        Goods goods=null;
        goods=new Goods();
        goods.setGname(req.getParameter("gname"));
        goods.setPrice(Double.parseDouble(req.getParameter("price")));
        goods.setMark(req.getParameter("mark"));
        System.out.println(goods);

        //3.请求
        Boolean bool = null;
        //4.调用jdbc新增数据的方法进行操作
        Insertdao insertdao = new Insertdao();
        try {
             bool = insertdao.addGoods(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);
        }
    }
}
@WebServlet("/del")
public class DelectGoods 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 {
        //1.编写代码的格式
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        //2.获取添加商品的信息
        int gid = Integer.parseInt(req.getParameter("gid"));
        //3.请求
        Boolean bool = null;
        //4.调用jdbc新增数据的方法进行操作
        Deletedao deletedao = new Deletedao();
        try {
            bool = deletedao.delectGoods(gid);
        } 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);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值