作用域对象,mvc增删改查

7 篇文章 0 订阅
7 篇文章 0 订阅

目录

何为作用域

web作用域介绍

session对象

session对象常用的方法:

域的方法:

存储

获取

移除​​​​​​​

获取请求头数据

获取请求相关的其他方法

mvc增删改查(只有增删改查)

 GoodsDaoimpl包

Goodsdao接口

GoodsAdd包----增加

del包---删除

GoodSelect----查询

zhuye.jsp---主页

add.jsp--增加页面


何为作用域

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

作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。

web作用域介绍

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

request:后端程序和页面有请求关系,则数据可以共享

session:是当前会话有效(同一个人使用同一个浏览器在任何页面都可以数据共享

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

session对象

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

session对象常用的方法:

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

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

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

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

域的方法:

存储

//用来存储一个对象,也可以称之为存储一个域属性

void setAttribute(String name, Object value)


Eg:servletContext.setAttribute(“xxx”, “XXX”)

//在ServletContext中保存了一个域属性,域属性名称为xxx,域属性的值为XXX

获取​​​​​​​

//用来获取ServletContext中的数据

Object getAttribute(String name)

//获取名为xx的域属性

Eg:String value = (String)servletContext.getAttribute(“xxx”);


//获取所有域属性的名称;

Enumeration getAttributeNames()

移除​​​​​​​

//用来移除ServletContext中的域属性

void removeAttribute(String name)

获取请求头数据

//获取指定名称的请求头

String getHeader(String name)


//获取所有请求头名称

Enumeration getHeaderNames()


//获取值为int类型的请求头

int getIntHeader(String name)

获取请求相关的其他方法

//获取请求体的字节数,GET请求没有请求体,没有请求体返回-1;

int getContentLength()


/*

获取请求类型,如果请求是GET,那么这个方法返回null;如果是POST请求,那么默认

为application/x-www-form-urlencoded,表示请求体内容使用了URL编码;

*/

String getContentType()


//返回请求方法,例如:GET/POST

String getMethod()


//返回当前客户端浏览器的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用;

Locale getLocale()


/*

获取请求编码,如果没有setCharacterEncoding(),那么返回null,表示使用

ISO-8859-1编码;

*/

String getCharacterEncoding()


/*

设置请求编码,只对请求体有效!注意,对于GET而言,没有请求体!!!所以此方法

只能对POST请求中的参数有效!

*/

void setCharacterEncoding(String code)


//返回上下文路径,例如:/Dmoe1

String getContextPath()


//返回请求URL中的参数,例如:username=zhangSan

String getQueryString()


//返回请求URI路径,例如:/Demo1/ServletDemo1

String getRequestURI()


/*

返回请求URL路径,例如:http://localhost/Demo1/ServletDemo1即返回除了参数

以外的路径信息;

*/

StringBuffer getRequestURL()


//返回Servlet路径,例如:/ServletDemo1

String getServletPath()


//返回当前客户端的IP地址

String getRemoteAddr()


//返回当前客户端的主机名,但这个方法的实现还是获取IP地址

String getRemoteHost()


//返回请求协议,例如:http

String getScheme()


//返回主机名,例如:localhost

String getServerName()


//返回服务器端口号,例如:8080

int getServerPort()

mvc增删改查(只有增删改查)

数据库结构如图:前提小皮面板打开(下载地址小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)

数据库内容请看(42条消息) javaweb idea 链接数据库(分层结构)MVC模型_এ᭄༊空旧黎梦ღꦿ࿐的博客-CSDN博客

 GoodsDaoimpl包

package com.guang.dao.Impl;

import com.guang.bean.Goods;
import com.guang.bean.User;
import com.guang.dao.GoodsDao;
import com.guang.util.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class GoodsDaoimpl implements GoodsDao {
    Connection con=null; //数据库连接对象
    ResultSet rs=null; //结果集对象
    PreparedStatement pstm=null; //预处理对象
    User login=null;
    private int row=0;
    public int delect(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) {
            throw new RuntimeException(e);
        }finally {
            JDBCUtil.close(con,pstm,null);
        }
        return row;
    }
    public List<Goods> GoodSelect(){
        List<Goods> list=new ArrayList<>();
        try {
            con= JDBCUtil.Getcon();
            String sql="select * from t_goods";
            pstm=con.prepareStatement(sql);
            rs=pstm.executeQuery();
            while (rs.next()){
                Goods goods=new Goods();
                goods.setGid(rs.getInt("gid"));
                goods.setGname(rs.getString("gname"));
                goods.setPrice(rs.getString("price"));
                goods.setMark(rs.getString("mark"));
                list.add(goods);
            };
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return list;
    };
    public int goodsAdd(Goods goods){
        int n=0;
        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());
            //执行sql语句
            n= pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(con,pstm,null);
        }
        return n;
    }
    public int update(Goods goods,int gid){
        int s=0;
        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,gid);
            //执行sql语句
            s= pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(con,pstm,rs);
        }
        return s;
    }

    /**
     * @param gid
     * @return
     */

    public Goods selectbyid(int gid) {
        Goods goods=null;
        try {
            con=JDBCUtil.Getcon();
            //3.定义登灵的sql语句
            String sql="select * from t_goods where gid=?";
            //4.获取预处理对象
            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.getString("price"));
                goods.setMark(rs.getString("mark"));
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        finally {
            JDBCUtil.close(con,pstm,rs);
        }
        return goods;
    }

}

Goodsdao接口

package com.guang.dao;

import com.guang.bean.Goods;
import com.guang.bean.User;

import java.util.List;

public interface GoodsDao {
    int delect(int gid);
    List<Goods> GoodSelect();
    int update(Goods goods,int gid);
    Goods selectbyid(int gid);
}

GoodsAdd包----增加

package com.guang.servlet;

import com.guang.bean.Goods;
import com.guang.dao.GoodsDao;
import com.guang.dao.Impl.GoodsDaoimpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/goodsAdd")
public class GoodsAdd 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");//设置响应的编码

        //获取请求参数
        String name = request.getParameter("name");
        String price = request.getParameter("price");
        String show = request.getParameter("show");

        //封装到Goods对象中
        Goods goods=new Goods();
        goods.setGname(name);
        goods.setPrice(price);
        goods.setMark(show);
        System.out.println(goods);

        GoodsDao goodsDao=new GoodsDaoimpl();
        int n = ((GoodsDaoimpl) goodsDao).goodsAdd(goods);
        if (n>0){
            System.out.println("添加成功");
            //请求转发
            request.getRequestDispatcher("Servlet").forward(request,response);
        }else{
            response.sendRedirect("error.jsp");
        }
    }}

del包---删除

package com.guang.servlet;

import com.guang.bean.Goods;
import com.guang.dao.GoodsDao;
import com.guang.dao.Impl.GoodsDaoimpl;
import com.guang.dao.Impl.UserDaoImpl;
import com.guang.dao.UserDao;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/del")
public class del extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       int gid=Integer.parseInt(req.getParameter("gid"));
        //根据id执行数据库的删除
        GoodsDao goodsDao=new GoodsDaoimpl();
        int row=goodsDao.delect(gid);
        if (row>0){
            req.getRequestDispatcher("Servlet").forward(req,resp);
        }else {
            req.setAttribute("error_msg","删除出现问题");
            req.getRequestDispatcher("error.jsp").forward(req,resp);
        }
    }
}

GoodSelect----查询

package com.guang.servlet;

import com.guang.bean.Goods;
import com.guang.dao.GoodsDao;
import com.guang.dao.Impl.GoodsDaoimpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;

@WebServlet("/Servlet")
public class GoodSelect 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 {
        GoodsDao goodsDao=new GoodsDaoimpl();
        List<Goods> goodsList=  goodsDao.GoodSelect();
        System.out.println(goodsList);
        HttpSession session=req.getSession();
        session.setAttribute("goodsList",goodsList);
        resp.sendRedirect("zhuye.jsp");
    }
}

zhuye.jsp---主页

<%@ page import="com.guang.bean.Goods" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: 86157
  Date: 2023/2/17
  Time: 20:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>主页</title>
</head>
<body>
<h1>${user.username}成功</h1>
<table>
    <a href="add.jsp">添加商品</a>
    <tr>
        <th>商品编号</th>
        <th>商品名称</th>
        <th>商品价格</th>
        <th>商品说明</th>
        <th>操作</th>

    </tr>
    <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="funid">修改</a>
                <a href="del?gid=${goods.gid}">删除</a></td>
        </tr>
    </c:forEach>

</table>
</body>
</html>

add.jsp--增加页面

<%--
  Created by IntelliJ IDEA.
  User: 86157
  Date: 2023/2/23
  Time: 19:11
  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="goodsAdd" method="post">
    商品名称:<input type="text" name="name" value="" placeholder="商品名称"/><br/>
    商品价格:<input type="number" step="0.01" name="price" value="" placeholder="商品价格"/><br/>
    商品说明:<input type="text" name="show" value="" placeholder="商品说明"/><br/>
    <input type="submit" value="添加"/>
    <a href="zhuye.jsp">返回主页</a>
</form>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值