作用域对象、基于MVC模型和分层模式完成添加、删除、修改、模糊查询

一、什么是作用域:

变量可以起作用的区域

1.1pageContext

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

1.2request

request对象主要用于处理客户端请求,同时request对象也是作用域对象,它的作用域范围是同一个请求。request后端程序和页面有请求关系,则数据可以共享

requset对象的常用方法

方法说明

void setAttribute(String name,Object value)

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

1.3session

session对象用来储存有关用户会话的所有信息,它的作用域范围是同一个会话。当前会话有效(同一个人使用同一个浏览器在任何页面都可以数据共享)

session对象常用的方法:

void setAttribute(String key,object value):以键/值的方式,将一个对象的值存放到session中

session.setAttribute("name","admin");

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

String name=(String ) session.getAttribute("name");

1.4application

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

application 对象实现了javax.servlet.ServletContext 接口

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

void getAttribute(String key)通过键的方式,把对应的值取出来 。

请求转发:会保留原来的地址不变。

重定向:地址栏会发生变化。

添加

 

 

 

package com.chen.servlet;

import com.chen.bean.Goods;
import com.chen.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 {
        //1.设置请求和响应的编码
        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);
        }

    }
}

删除:

 

package com.chen.servlet;

import com.chen.bean.Goods;
import com.chen.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("/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 {
        //1.设置请求和响应的编码
        req.setCharacterEncoding("utf-8");//设置请求的编码
        resp.setCharacterEncoding("utf-8");//设置响应的编码

       int gid=Integer.parseInt(req.getParameter("gid"));
       //根据id执行数据库的删除
        GoodsDao goodsDao=new GoodsDao();
        int row=goodsDao.deleteById(gid);

        if(row>0){
            //请求转发,查询所有商品信息(刷新)
            req.getRequestDispatcher("selectAllGoods").forward(req,resp);
        }else {
            req.setAttribute("error_msg","添加商品信息失败!");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }

    }
}

修改:

设计修改页面:修改数据分为两部分 先查询到数据,然后修改数据,再次更新数据

  点击跳转到查询

public Goods selectById(int gid) {
        Goods goods = null;
        try {
            connection = JDBCUtil.getCon();
            String sql = "select * from t_goods where gid=?";
            pstm = connection.prepareStatement(sql);
            pstm.setObject(1, gid);
            rs = pstm.executeQuery();
            if (rs.next()) {
                //把当前数据行中的数据取出来。储存在Goods对象中
                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, connection);
        }
        return goods;
    }

public int update(Goods goods) {
        try {
            connection = JDBCUtil.getCon();
            String sql = "update t_goods set gname=?,price=?,mark=? where gid=?";
            pstm = connection.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, connection);
        }
       return row;
    }

 

 跳转到查询页面,重新更新数据

模糊查询:

主页定义表单页面,设计搜索框

 

 servlet代码获取关键字

public List<Goods> seach(String keyword){
        List<Goods> goodsList = new ArrayList<>();
        try {
            connection = JDBCUtil.getCon();
            String sql = "select * from t_goods where gname like concat('%',?,'%')";
            pstm = connection.prepareStatement(sql);
            pstm.setObject(1,keyword);
            rs = pstm.executeQuery();
            while (rs.next()) {
                //把当前数据行中的数据取出来,储存到Googs对象中
                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, connection);
        }
        return goodsList;
    }

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值