作用域对象的添加、删除、修改

 1、ServletContext


ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象,所以叫全局应用程序共享对象。
一个web应用对应一个ServletContext实例,这个实例是应用部署启动后,servlet容器为应用创建的。ServletContext实例包含了所有 servlet共享的资源信息。通过提供一组方法给servlet使用,用来和serviet容器通讯。

 Session默认的生存时间是1800秒。
有没有生存时间更长的对象来实现页面间或不同的Servlet间的数据共享呢?
在ServletAPI提供了ServletContext接口来实现上述功能,运行在同一个容器中的Servlet使用ServletContext来共享存在于其中的信息和属性。
ServletContext接口中定义了用于处理上下文的方法

 2、作用域对象


2、1 pageContext
pageContext对象:它的生命周期即page域,指存储在pageContext对象的数据只在当前页面有效,当发生页面跳转时,则在 pageContext域的数据进行销毁。
2、2 request
reguest对象主要用于处理客户端请求,同时request对象也是作用域对象,它的作用域范围是同一个请求。

request对象常用方法

方法     说明  
void setAttribute(String name, Object value)把name属性储存到request对象    
Oblect getAttribute(String name)    返回name 属性的值    
void removeAttribute(String name )从request对象中移除name 属性    
String getParameter(String name)      返回指定name 的参数值    
Enumeration getParameterNames()以枚举类型返回所有的参数名称    
String 0 getParameterValues(String name)    以字符数组类型返回所有指定name 参数值    
Map getParameterMap()        以iava.util.Map类型返回请求参数

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


session对象常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到session中
session.setAttribute("name","admin");

Object getAttribute(String key):根据名称去获取session中存放对象的值

Object getAttribute(String key):根据名称去获取session中存放对象的值
string name=(string)session.getAttribute("name");

2、4 application
application类似于系统的“全局变量”,用于实现用户之间的数据共享,它的作用域范围是在服务器一开始执行服务,到服务器关闭为止, application 对象实现了javax.servlet.ServletContext接口

application对象的常用方法:
void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中
void getAttribute(String kev)通过键的方式,把对应的值取出来

EL表达式获取作用域对象的顺序是:pageContext(当前页面)、request(请求间)、session(当前会调)、application(应用程序)

pageContext只能当前页面定义数据,当前页面使用;

request后端程序和页面有请求关系,则数据可以共享:
session是当前会话有效(同一个人使用同一个浏览器在任何页面都可以数据共享);

application是整个服务器有效,所有用户的请求都可以数据共享:

 添加操作

1.在zhuye.jsp中的<h2>标签下添加一个<a>

2.创建一个addGoods.jsp页面写添加的表单

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2023/2/23
  Time: 12:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>商品信息添加</title>
</head>
<body>
<h2>商品信息录入</h2>
<form action="addGoods" method="post">
    商品名称:<input type="text" name="gname" value=""/><br/>
    商品价格:<input type="number" step="0.01" name="price" value=""/><br/>
    商品说明:<input type="text" name="mark" value=""/><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

3.servlet编写数据库

package com.chen.servlet;

import com.chen.bean.Goods;
import com.chen.dao.impl.GoodsDaoimpl;

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")));
        goods.setMark(req.getParameter("mark"));
        //jdbc操作
        GoodsDaoimpl goodsDaoimpl=new GoodsDaoimpl();
       int row= goodsDaoimpl.add(goods);

       if(row>0){
        req.getRequestDispatcher("selectAll").forward(req,resp);
       }else{
           req.setAttribute("error_msg","添加商品失败");
           req.getRequestDispatcher("error.jsp").forward(req,resp);
       }
    }
}

jdbc操作

 public int add(Goods goods){
        try {
            //获取连接
            con= JDBCUtil.getCon();
            //编写sql语句
            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;
    }

删除操作

1.在zhuye.jsp中的写删除代码

2.servlet编写数据库 

package com.chen.servlet;

import com.chen.dao.impl.GoodsDaoimpl;

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("/del")
public class DelGoods 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 {
      int gid=Integer.parseInt(req.getParameter("gid"));

        GoodsDaoimpl goodsDaoimpl=new GoodsDaoimpl();
        int row= goodsDaoimpl.del(gid);

        if(row>0){
            req.getRequestDispatcher("selectAll").forward(req,resp);
        }else{
            req.setAttribute("error_msg","删除商品失败");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }
    }
}

jdbc操作

 public int del(int gid){
        try {
            //获取连接
            con= JDBCUtil.getCon();
            //编写sql语句
            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;
    }

修改操作

1.点击修改跳转到servlet(FindGoods页面),后端根据id查询到该商品的信息;

 

//根据id查询
    public Goods selectByid(int gid){
      Goods goods=null;

        try {
            //获取连接
            con= JDBCUtil.getCon();
            //编写sql语句
            String sql="select * from t_goods where gid=?";
            //获取预处理对象
            pstm=con.prepareStatement(sql);
            //传参
            pstm.setObject(1,gid);
            //获取结果集
            rs=pstm.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"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(rs,pstm,con);
        }


        return goods;
    }

2.把商品信息添加到request作用域中请求转发到信息展示页面;

 

3.用户根据需求修改表单中的字段,重新提交表单;

 

4.编写后端servlet获取用户最新修订的商品信息,执行数据库的修改操作;

//修改
    public int update(Goods goods){
        try {
            //获取连接
            con= JDBCUtil.getCon();
            //编写sql语句
            String sql="update t_goods set gname=?,price=?,mark=? where gid=?";
            //获取预处理对象
            pstm=con.prepareStatement(sql);

            pstm.setObject(1,goods.getGname());
            pstm.setObject(2,goods.getPrice());
            pstm.setObject(3,goods.getMark());
            pstm.setObject(4,goods.getGid());

            //获取结果集
            row= pstm.executeUpdate();


        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(pstm,con);
        }

        return row;
    }

 

5.重新请求查询所有商品,跳转到商品信息主页;

模糊查询 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值