欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫增、刪、改、查操作的實(shí)現(xiàn)方法

 更新時(shí)間:2023年07月07日 15:30:54   作者:@-笨笨熊  
這篇文章主要給大家介紹了關(guān)于使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫增、刪、改、查操作的實(shí)現(xiàn)方法,avaWeb是指使用Java語言進(jìn)行Web應(yīng)用程序開發(fā)的技術(shù),可以利用Java編寫一些動(dòng)態(tài)網(wǎng)頁、交互式網(wǎng)頁、企業(yè)級(jí)應(yīng)用程序等,需要的朋友可以參考下

1、什么是javaweb

JavaWeb是指使用Java語言進(jìn)行Web應(yīng)用程序開發(fā)的技術(shù),可以利用Java編寫一些動(dòng)態(tài)網(wǎng)頁、交互式網(wǎng)頁、企業(yè)級(jí)應(yīng)用程序等。 JavaWeb技術(shù)主要包括Servlet、JSP、JDBC、JavaBean、JNDI、EJB、Web Services等。

Servlet是JavaWeb技術(shù)的核心組件之一,它是一個(gè)運(yùn)行在Web服務(wù)器上的Java程序,可以接收HTTP請(qǐng)求并返回HTTP響應(yīng),常用于實(shí)現(xiàn)Web應(yīng)用程序中的控制器或者中間件。通過Servlet,我們可以處理用戶提交的表單數(shù)據(jù)、查詢數(shù)據(jù)庫、調(diào)用其他服務(wù)等操作,并將結(jié)果返回給客戶端瀏覽器。

JSP(JavaServer Pages)是另一個(gè)重要的JavaWeb技術(shù),它是一種在HTML頁面內(nèi)嵌入Java代碼的技術(shù),能夠生成動(dòng)態(tài)的Web頁面。JSP文件會(huì)在Web服務(wù)器上編譯成Servlet,并在客戶端請(qǐng)求時(shí)被執(zhí)行。在JSP中,我們可以使用Java代碼、JSTL標(biāo)簽庫和EL表達(dá)式等來處理數(shù)據(jù)和邏輯,從而實(shí)現(xiàn)動(dòng)態(tài)頁面的渲染。

JDBC(Java Database Connectivity)是Java提供的一種基于標(biāo)準(zhǔn)SQL語言訪問關(guān)系型數(shù)據(jù)庫的API,可以方便地進(jìn)行數(shù)據(jù)庫連接、查詢、更新等操作。在JavaWeb應(yīng)用程序中,我們通常使用JDBC與數(shù)據(jù)庫進(jìn)行交互,并獲取所需的數(shù)據(jù)。

JavaBean是一種特殊的Java類,它通常包含一些屬性和方法,并且遵循特定的命名規(guī)范。在JavaWeb應(yīng)用程序中,我們可以定義JavaBean對(duì)象來封裝數(shù)據(jù)和業(yè)務(wù)邏輯,并在JSP或Servlet中使用它們來實(shí)現(xiàn)模型層的功能。

總之,JavaWeb技術(shù)是基于Java語言的Web應(yīng)用程序開發(fā)技術(shù),提供了豐富的API和組件,能夠方便地實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁、企業(yè)級(jí)應(yīng)用程序等功能。

2、如何使用javaweb

項(xiàng)目展示:

1、數(shù)據(jù)庫的創(chuàng)建

#判斷存在即刪除數(shù)據(jù)庫
drop database if exists mydb;
#創(chuàng)建數(shù)據(jù)庫
create database mydb;
#使用數(shù)據(jù)庫
use mydb;
#創(chuàng)建表
create table t_user
(
	uid int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	phone varchar(11),
	address varchar(50)
);
insert into t_user(username,password,phone,address) values('張三','666','18965423548','南陽');
insert into t_user(username,password,phone,address) values('李四','333','18754263548','許昌');
insert into t_user(username,password,phone,address) values('小美','123','18565234759','信陽');
select * from t_user where username=? and password=?
select * from t_user;
select * from t_goods
create table t_goods
(
	gid int primary key auto_increment,
	gname varchar(20),
	price double,
	mark varchar(100)
);
DROP TABLE t_goods;
TRUNCATE TABLE t_goods;
insert into t_goods(gname,price,mark) values('泡面',4.5,'夠香夠辣就是這個(gè)味!');
insert into t_goods(gname,price,mark) values('火腿',8.5,'肉質(zhì)細(xì)膩Q彈!');
insert into t_goods(gname,price,mark) values('雪碧',3.5,'清爽冰涼隨心爽!');
select * from t_goods where gid=1
update t_goods set gname='3',price=4.3,mark='5'  where gid=1
select * from t_goods;

2、分層結(jié)構(gòu)

導(dǎo)報(bào)

代碼部分: 

Bean層

商品實(shí)體類

package com.liu.Bean;
public class Goods {
    private Integer gid;
    private String gname;
    private Double price;
    private String mark;
    public Integer getGid() {
        return gid;
    }
    public void setGid(Integer gid) {
        this.gid = gid;
    }
    public String getGname() {
        return gname;
    }
    public void setGname(String gname) {
        this.gname = gname;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    public String getMark() {
        return mark;
    }
    public void setMark(String mark) {
        this.mark = mark;
    }
    @Override
    public String toString() {
        return "Good{" +
                "gid=" + gid +
                ", gname='" + gname + '\'' +
                ", price=" + price +
                ", mark='" + mark + '\'' +
                '}';
    }
}

用戶實(shí)體類:

package com.liu.Bean;
public class User {
    private Integer uid;
    private String username;
    private String password;
    private String phone;
    private String address;
    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
    public Integer getUid() {
        return uid;
    }
    public void setUid(Integer uid) {
        this.uid = uid;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
 

數(shù)據(jù)庫操作部分

util層

package com.liu.util;
import java.sql.*;
public class JDBCUtil {
    static String driver = "com.mysql.cj.jdbc.Driver"; // 定義數(shù)據(jù)庫驅(qū)動(dòng)程序名稱
    static String url = "jdbc:mysql:///mydb?useSSL=false&serverTimezone=UTC"; // 定義數(shù)據(jù)庫連接URL
    static String username = "root"; // 定義數(shù)據(jù)庫用戶名
    static String password = "root"; // 定義數(shù)據(jù)庫密碼
    static Connection conn = null; // 聲明Connection對(duì)象
    /**
     * 獲取數(shù)據(jù)庫連接對(duì)象
     * @return 數(shù)據(jù)庫連接對(duì)象
     */
    public static Connection getCon(){
        try {
            Class.forName(driver); // 加載數(shù)據(jù)庫驅(qū)動(dòng)程序
            conn = DriverManager.getConnection(url,username,password); // 獲取數(shù)據(jù)庫連接對(duì)象
        } catch (Exception e) { // 處理異常
            throw new RuntimeException(e);
        }
        return conn; // 返回?cái)?shù)據(jù)庫連接對(duì)象
    }
    /**
     * 關(guān)閉ResultSet、PreparedStatement和Connection對(duì)象
     * @param rs ResultSet對(duì)象
     * @param pstm PreparedStatement對(duì)象
     * @param conn Connection對(duì)象
     * @throws SQLException SQL異常
     */
    public static void colse(ResultSet rs, PreparedStatement pstm,Connection conn) throws SQLException {
        if (rs != null) { // 判斷ResultSet對(duì)象是否為null
            rs.close(); // 關(guān)閉ResultSet對(duì)象
        }
        if (pstm != null){ // 判斷PreparedStatement對(duì)象是否為null
            pstm.close(); // 關(guān)閉PreparedStatement對(duì)象
        }
        if (conn != null){ // 判斷Connection對(duì)象是否為null
            conn.close(); // 關(guān)閉Connection對(duì)象
        }
    }
    /**
     * 關(guān)閉PreparedStatement和Connection對(duì)象
     * @param pstm PreparedStatement對(duì)象
     * @param conn Connection對(duì)象
     * @throws SQLException SQL異常
     */
    public static void colse(PreparedStatement pstm,Connection conn) throws SQLException {
        if (pstm != null){ // 判斷PreparedStatement對(duì)象是否為null
            pstm.close(); // 關(guān)閉PreparedStatement對(duì)象
        }
        if (conn != null){ // 判斷Connection對(duì)象是否為null
            conn.close(); // 關(guān)閉Connection對(duì)象
        }
    }
}

dao層

package com.liu.dao.impl;
import com.liu.Bean.Goods;
import com.liu.util.JDBCUtil;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class GoodsDao {
    Goods goods = null; // 定義Goods對(duì)象
    Connection con = null; // 數(shù)據(jù)庫連接對(duì)象
    PreparedStatement pstm = null; // 預(yù)編譯語句對(duì)象
    ResultSet rs = null; // 結(jié)果集對(duì)象
    int twe = 0; // 操作結(jié)果
    /**
     * 查詢所有商品信息
     * @return 商品列表
     */
    public List<Goods> shopping() {
        List<Goods> goodsList =new ArrayList<>(); // 創(chuàng)建商品列表
        try {
            con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
            String sql = "select  * from t_goods"; // SQL查詢語句
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            rs = pstm.executeQuery(); // 執(zhí)行查詢操作
            while (rs.next()) { // 遍歷結(jié)果集
                Goods goods = new Goods(); // 創(chuàng)建商品對(duì)象
                goods.setGid(rs.getInt("gid")); // 設(shè)置商品ID
                goods.setGname(rs.getString("gname")); // 設(shè)置商品名稱
                goods.setPrice(rs.getDouble("price")); // 設(shè)置商品價(jià)格
                goods.setMark(rs.getString("mark")); // 設(shè)置商品備注
                goodsList.add(goods); // 將商品添加到列表中
            }
            for (Goods goods1 : goodsList) { // 遍歷商品列表
                System.out.println(goods1); // 輸出商品信息
            }
        } catch (Exception e) { // 處理異常
            e.printStackTrace();
        } finally { // 關(guān)閉資源
            try {
                JDBCUtil.colse(rs, pstm, con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return goodsList; // 返回商品列表
    }
    /**
     * 添加商品信息
     * @param goods 商品對(duì)象
     * @return 操作結(jié)果
     */
    public int tianjia(Goods goods){
        con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
        String sql = "insert into t_goods(gname,price,mark)values(?,?,?)"; // SQL插入語句
        try {
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,goods.getGname()); // 設(shè)置商品名稱
            pstm.setObject(2,goods.getPrice()); // 設(shè)置商品價(jià)格
            pstm.setObject(3,goods.getMark()); // 設(shè)置商品備注
            twe = pstm.executeUpdate(); // 執(zhí)行插入操作
        } catch (Exception e) { // 處理異常
            e.printStackTrace();
        }finally { // 關(guān)閉資源
            try {
                JDBCUtil.colse(pstm,con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return twe; // 返回操作結(jié)果
    }
    /**
     * 刪除商品信息
     * @param id 商品ID
     * @return 操作結(jié)果
     */
    public int shanchu(int id){
        con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
        String sql = "delete from t_goods where gid = ?"; // SQL刪除語句
        try {
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,id); // 設(shè)置商品ID
            twe = pstm.executeUpdate(); // 執(zhí)行刪除操作
        } catch (Exception e) { // 處理異常
            e.printStackTrace();
        }finally { // 關(guān)閉資源
            try {
                JDBCUtil.colse(pstm,con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        System.out.println(twe);
        return twe; // 返回操作結(jié)果
    }
    /**
     * 查詢指定商品信息
     * @param gid 商品ID
     * @return 商品對(duì)象
     */
    public Goods xiugai1(int gid){
        Goods goods = null; // 創(chuàng)建商品對(duì)象
        con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
        String sql = "select  * from t_goods where gid = ?"; // SQL查詢語句
        try {
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,gid); // 設(shè)置商品ID
            con = JDBCUtil.getCon();
            // 獲取數(shù)據(jù)庫連接
            rs = pstm.executeQuery(); // 執(zhí)行查詢操作
            if (rs.next()) { // 判斷結(jié)果集是否有數(shù)據(jù)
                goods = new Goods(); // 創(chuàng)建商品對(duì)象
                goods.setGid(rs.getInt("gid")); // 設(shè)置商品ID
                goods.setGname(rs.getString("gname")); // 設(shè)置商品名稱
                goods.setPrice(rs.getDouble("price")); // 設(shè)置商品價(jià)格
                goods.setMark(rs.getString("mark")); // 設(shè)置商品備注
            }
            System.out.println(goods); // 輸出商品信息
        } catch (Exception e) { // 處理異常
            e.printStackTrace();
        } finally { // 關(guān)閉資源
            try {
                JDBCUtil.colse(rs, pstm, con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return goods; // 返回商品對(duì)象
    }
    /**
     * 修改商品信息
     * @param goods 商品對(duì)象
     * @return 操作結(jié)果
     */
    public int xiugai2(Goods goods){
        System.out.println(goods); // 輸出商品信息
        con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
        String sql = "update t_goods set gname=?,price=?,mark=? where gid = ?"; // SQL更新語句
        try {
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,goods.getGname()); // 設(shè)置商品名稱
            pstm.setObject(2,goods.getPrice()); // 設(shè)置商品價(jià)格
            pstm.setObject(3,goods.getMark()); // 設(shè)置商品備注
            pstm.setObject(4,goods.getGid()); // 設(shè)置商品ID
            twe = pstm.executeUpdate(); // 執(zhí)行更新操作
        } catch (Exception e) { // 處理異常
            e.printStackTrace();
        }finally { // 關(guān)閉資源
            try {
                JDBCUtil.colse(pstm,con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return twe; // 返回操作結(jié)果
    }
    /**
     * 模糊查詢商品信息
     * @param n 商品名稱關(guān)鍵字
     * @return 商品列表
     */
    public List<Goods> mohuchaxun(String n){
        List<Goods> goodsList =new ArrayList<>(); // 創(chuàng)建商品列表
        try {
            con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
            String sql = "select  * from t_goods where gname like concat('%',?,'%')"; // SQL模糊查詢語句
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,n); // 設(shè)置商品名稱關(guān)鍵字
            rs = pstm.executeQuery(); // 執(zhí)行查詢操作
            while (rs.next()) { // 遍歷結(jié)果集
                Goods goods = new Goods(); // 創(chuàng)建商品對(duì)象
                goods.setGid(rs.getInt("gid")); // 設(shè)置商品ID
                goods.setGname(rs.getString("gname")); // 設(shè)置商品名稱
                goods.setPrice(rs.getDouble("price")); // 設(shè)置商品價(jià)格
                goods.setMark(rs.getString("mark")); // 設(shè)置商品備注
                goodsList.add(goods); // 將商品添加到列表中
            }
            for (Goods goods1 : goodsList) { // 遍歷商品列表
                System.out.println(goods1); // 輸出商品信息
            }
        } catch (Exception e) { // 處理異常
            e.printStackTrace();
        } finally { // 關(guān)閉資源
            try {
                JDBCUtil.colse(rs, pstm, con);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return goodsList; // 返回商品列表
    }
}
 
package com.liu.dao.impl;
import com.liu.Bean.User;
import com.liu.dao.UserDao;
import com.liu.util.JDBCUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDaolmpl implements UserDao {
    Connection con = null; // 數(shù)據(jù)庫連接對(duì)象
    User user = null; // 用戶對(duì)象
    PreparedStatement pstm = null; // 預(yù)編譯語句對(duì)象
    ResultSet rs = null; // 結(jié)果集對(duì)象
    int row = 0; // 操作結(jié)果
    // 實(shí)現(xiàn)用戶登錄功能
    public User Login(String username,String password){
        con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
        String sql = "select * from t_user where username = ? and password = ?"; // SQL查詢語句
        try {
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,username); // 設(shè)置第一個(gè)占位符的值為用戶名
            pstm.setObject(2,password); // 設(shè)置第二個(gè)占位符的值為密碼
            rs = pstm.executeQuery(); // 執(zhí)行查詢操作
            if (rs.next()) { // 如果存在用戶,則將查詢結(jié)果存放到User對(duì)象中
                user = new User();
                user.setUid(rs.getInt("uid")); // 設(shè)置User對(duì)象的id屬性
                user.setUsername(rs.getString("username")); // 設(shè)置User對(duì)象的用戶名屬性
                user.setPassword(rs.getString("password")); // 設(shè)置User對(duì)象的密碼屬性
                user.setPhone(rs.getString("phone")); // 設(shè)置User對(duì)象的電話號(hào)碼屬性
                user.setAddress(rs.getString("address")); // 設(shè)置User對(duì)象的地址屬性
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                JDBCUtil.colse(rs,pstm,con); // 關(guān)閉ResultSet、PreparedStatement和Connection對(duì)象
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return user; // 返回User對(duì)象
    }
    // 實(shí)現(xiàn)用戶注冊(cè)功能
    public int register(User user){
        con = JDBCUtil.getCon(); // 獲取數(shù)據(jù)庫連接
        String sql = "insert into t_user(username,password,phone,address)value(?,?,?,?)"; // SQL插入語句
        try {
            pstm = con.prepareStatement(sql); // 建立預(yù)編譯語句
            pstm.setObject(1,user.getUsername()); // 設(shè)置第一個(gè)占位符的值為用戶名
            pstm.setObject(2,user.getPassword()); // 設(shè)置第二個(gè)占位符的值為密碼
            pstm.setObject(3,user.getPhone()); // 設(shè)置第三個(gè)占位符的值為電話號(hào)碼
            pstm.setObject(4,user.getAddress()); // 設(shè)置第四個(gè)占位符的值為地址
            row = pstm.executeUpdate(); // 執(zhí)行插入操作
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                JDBCUtil.colse(pstm,con); // 關(guān)閉PreparedStatement和Connection對(duì)象
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return row; // 返回操作結(jié)果
    }
}

dao層接口:

package com.liu.dao;
import com.liu.Bean.User;
public interface UserDao {
    User Login(String username,String password);
    int register(User user);
}

Filter層(過濾器)

package com.liu.Filter;
import com.liu.Bean.User;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter("/*")
public class Filters implements Filter {
    // 初始化方法
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("初始化.........");
    }
    // 過濾方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest; // 轉(zhuǎn)換ServletRequest為HttpServletRequest對(duì)象
        HttpServletResponse response = (HttpServletResponse) servletResponse; // 轉(zhuǎn)換ServletResponse為HttpServletResponse對(duì)象
        String servletPath = request.getServletPath(); // 獲取Servlet路徑
        System.out.println(servletPath);
        HttpSession session = request.getSession(); // 獲取Session對(duì)象
        User user = (User)session.getAttribute("user"); // 從Session中獲取User對(duì)象
        System.out.println(user);
        if (servletPath.equals("/index.jsp") || servletPath.equals("/login.jsp") || servletPath.equals("/login") ||
                servletPath.equals("/register.jsp") || servletPath.equals("/register")){ // 允許訪問的頁面
            filterChain.doFilter(servletRequest,servletResponse); // 放行請(qǐng)求
        } else if (user != null) { // 如果用戶已登錄,則放行請(qǐng)求
            filterChain.doFilter(servletRequest,servletResponse);
        }else { // 否則重定向到登錄頁面
            response.sendRedirect("login.jsp");
        }
    }
    // 銷毀方法
    @Override
    public void destroy() {
        System.out.println("銷毀.........");
    }
}

servlet層

package com.liu.servlet;
import com.liu.Bean.User;
import com.liu.dao.impl.UserDaolmpl;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/long")
public class Login extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
        request.setCharacterEncoding("utf-8"); // 設(shè)置請(qǐng)求編碼
        response.setContentType("text/html;charset = utf-8"); // 設(shè)置響應(yīng)類型
        String username = request.getParameter("username"); // 獲取用戶名
        String password = request.getParameter("password"); // 獲取密碼
        UserDaolmpl userDaolmpl = new UserDaolmpl(); // 創(chuàng)建UserDaoImpl對(duì)象
        User loging = userDaolmpl.Login(username,password); // 調(diào)用Login()方法進(jìn)行登錄校驗(yàn),并返回User對(duì)象
        System.out.println(loging);
        if (loging != null){ // 如果登錄成功,則將User對(duì)象存儲(chǔ)到Session中,并重定向到商品列表Servlet
            HttpSession session = request.getSession();
            session.setAttribute("user",loging);
            request.getRequestDispatcher("ServletAllGoods").forward(request,response);
        }else { // 否則重定向到錯(cuò)誤頁面
            response.sendRedirect("error.jsp");
        }
    }
}

 該類實(shí)現(xiàn)了HttpServlet接口,提供了用戶登錄功能。在doPost()方法中,首先設(shè)置請(qǐng)求編碼、響應(yīng)編碼和響應(yīng)類型,然后獲取用戶名和密碼,創(chuàng)建UserDaoImpl對(duì)象,并調(diào)用Login()方法進(jìn)行登錄校驗(yàn)。如果登錄成功,則將User對(duì)象存儲(chǔ)到Session中,并重定向到商品列表Servlet;否則,重定向到錯(cuò)誤頁面。在實(shí)現(xiàn)該Servlet時(shí),需要注意設(shè)置請(qǐng)求編碼、響應(yīng)編碼和響應(yīng)類型等信息,以及處理Login()方法返回的User對(duì)象和Session對(duì)象。

package com.liu.servlet;
import com.liu.Bean.Goods;
import com.liu.dao.impl.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
@WebServlet("/mohu")
public class Mohu extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
        request.setCharacterEncoding("utf-8"); // 設(shè)置請(qǐng)求編碼
        GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對(duì)象
        String sousuo = request.getParameter("sousuo"); // 獲取查詢關(guān)鍵字
        System.out.println(sousuo);
        List<Goods> goodsList = goodsDao.mohuchaxun(sousuo); // 調(diào)用模糊查詢方法進(jìn)行查詢,并返回查詢結(jié)果列表
        System.out.println(goodsList);
        HttpSession session = request.getSession(); // 獲取Session對(duì)象
        session.setAttribute("shopping",goodsList); // 將查詢結(jié)果存儲(chǔ)到Session中
        response.sendRedirect("goods.jsp"); // 重定向到商品列表頁面
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了商品模糊查詢功能。在doPost()方法中,首先設(shè)置請(qǐng)求編碼和響應(yīng)編碼,然后創(chuàng)建GoodsDao對(duì)象并獲取查詢關(guān)鍵字,調(diào)用模糊查詢方法進(jìn)行查詢,并將查詢結(jié)果存儲(chǔ)到Session中,最后重定向到商品列表頁面。在實(shí)現(xiàn)該Servlet時(shí),需要注意設(shè)置請(qǐng)求編碼、響應(yīng)編碼和查詢關(guān)鍵字等信息,以及處理模糊查詢方法返回的查詢結(jié)果列表和Session對(duì)象。

package com.liu.servlet;
import com.liu.Bean.User;
import com.liu.dao.impl.UserDaolmpl;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/register")
public class Register extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User user = new User(); // 創(chuàng)建User對(duì)象
        String username = request.getParameter("username"); // 獲取用戶名
        String password = request.getParameter("password"); // 獲取密碼
        String phone = request.getParameter("phone"); // 獲取電話號(hào)碼
        String address = request.getParameter("address"); // 獲取地址
        user.setUsername(username); // 設(shè)置用戶名
        user.setPassword(password); // 設(shè)置密碼
        user.setPhone(phone); // 設(shè)置電話號(hào)碼
        user.setAddress(address); // 設(shè)置地址
        System.out.println(user);
        UserDaolmpl userDaolmpl = new UserDaolmpl();  // 創(chuàng)建 UserDaoImpl 對(duì)象
        int row = userDaolmpl.register(user);  // 調(diào)用 UserDaoImpl 中的 register() 方法進(jìn)行注冊(cè),返回受影響行數(shù)
        System.out.println(row);  // 輸出注冊(cè)結(jié)果
        if (row > 0){ // 如果注冊(cè)成功,則重定向到登錄頁面
            request.getRequestDispatcher("login.jsp").forward(request,response);
        }else{ // 否則重定向到注冊(cè)頁面
            response.sendRedirect("register.jsp");
        }
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了用戶注冊(cè)功能。在doPost()方法中,首先創(chuàng)建User對(duì)象并獲取用戶名、密碼、電話號(hào)碼和地址等信息,然后設(shè)置User對(duì)象屬性并輸出到控制臺(tái),創(chuàng)建UserDaoImpl對(duì)象,并調(diào)用register()方法進(jìn)行注冊(cè),返回受影響行數(shù)。如果注冊(cè)成功,則重定向到登錄頁面;否則,重定向到注冊(cè)頁面。在實(shí)現(xiàn)該Servlet時(shí),需要注意設(shè)置User對(duì)象屬性、處理register()方法返回值以及重定向到正確的頁面等信息。 

package com.liu.servlet;
import com.liu.Bean.Goods;
import com.liu.dao.impl.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
@WebServlet("/ServletAllGoods")
public class ServletAllGoods extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對(duì)象
        List<Goods> shopping = goodsDao.shopping(); // 調(diào)用查找所有商品方法,返回查詢結(jié)果列表
        System.out.println(shopping);
        HttpSession httpSession = request.getSession(); // 獲取Session對(duì)象
        httpSession.setAttribute("shopping",shopping); // 將查詢結(jié)果存儲(chǔ)到Session中
        response.sendRedirect("goods.jsp"); // 重定向到商品列表頁面
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了查找所有商品功能。在doPost()方法中,首先創(chuàng)建GoodsDao對(duì)象并調(diào)用查找所有商品方法,獲取商品列表;然后將商品列表存儲(chǔ)到Session對(duì)象中,最后重定向到商品列表頁面。在實(shí)現(xiàn)該Servlet時(shí),需要注意處理查詢結(jié)果列表和Session對(duì)象等信息。 

package com.liu.servlet;
import com.liu.Bean.Goods;
import com.liu.dao.impl.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/shanchu")
public class Shanchu extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int gid = Integer.parseInt(request.getParameter("gid")); // 獲取商品ID
        GoodsDao goodsDao =new GoodsDao(); // 創(chuàng)建GoodsDao對(duì)象
        int i = goodsDao.shanchu(gid); // 調(diào)用刪除商品方法,返回受影響行數(shù)
        if (i>0){ // 如果刪除成功,則重定向到商品列表Servlet
            request.getRequestDispatcher("ServletAllGoods").forward(request,response);
        }else { // 否則轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息
            request.setAttribute("error_msg","刪除失敗?。?!");
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了商品刪除功能。在doPost()方法中,首先獲取商品ID,創(chuàng)建GoodsDao對(duì)象并調(diào)用刪除商品方法,返回受影響行數(shù)。如果刪除成功,則重定向到商品列表Servlet;否則,轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息。在實(shí)現(xiàn)該Servlet時(shí),需要注意處理商品ID和刪除結(jié)果等信息,以及重定向或轉(zhuǎn)發(fā)到正確的頁面。 

package com.liu.servlet;
import com.liu.Bean.Goods;
import com.liu.dao.impl.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/Tianjia")
public class Tianjia extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
        request.setCharacterEncoding("utf-8"); // 設(shè)置請(qǐng)求編碼
        response.setContentType("text/html;charset = utf-8"); // 設(shè)置響應(yīng)類型
        Goods goods = new Goods(); // 創(chuàng)建Goods對(duì)象
        goods.setGname(request.getParameter("gname")); // 獲取商品名稱并設(shè)置到Goods對(duì)象中
        goods.setPrice(Double.parseDouble(request.getParameter("price"))); // 獲取商品價(jià)格并設(shè)置到Goods對(duì)象中
        goods.setMark(request.getParameter("mark")); // 獲取商品描述并設(shè)置到Goods對(duì)象中
        GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對(duì)象
        int row = goodsDao.tianjia(goods); // 調(diào)用添加商品方法,返回受影響行數(shù)
        if (row>0){ // 如果添加成功,則重定向到商品列表Servlet
            request.getRequestDispatcher("ServletAllGoods").forward(request,response);
        }else{ // 否則轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息
            request.setAttribute("error_msg","添加失?。。?!");
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了商品添加功能。在doPost()方法中,首先設(shè)置響應(yīng)編碼、請(qǐng)求編碼和響應(yīng)類型,然后創(chuàng)建Goods對(duì)象并獲取商品名稱、價(jià)格和描述信息,并將這些信息設(shè)置到Goods對(duì)象中。接著創(chuàng)建GoodsDao對(duì)象并調(diào)用添加商品方法,返回受影響行數(shù)。如果添加成功,則重定向到商品列表Servlet;否則,轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息。在實(shí)現(xiàn)該Servlet時(shí),需要注意處理請(qǐng)求參數(shù)、添加結(jié)果等信息,以及重定向或轉(zhuǎn)發(fā)到正確的頁面。 

package com.liu.servlet;
import com.liu.Bean.Goods;
import com.liu.dao.impl.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/xiugai")
public class Xiugai extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
        request.setCharacterEncoding("utf-8"); // 設(shè)置請(qǐng)求編碼
        int gid = Integer.parseInt(request.getParameter("gid")); // 獲取商品ID并轉(zhuǎn)換為整型
        GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對(duì)象
        Goods goods = goodsDao.xiugai1(gid); // 調(diào)用查找商品方法,返回查詢結(jié)果對(duì)象
        if (goods!=null){ // 如果查詢結(jié)果不為空,則將查詢結(jié)果存儲(chǔ)到request中,并轉(zhuǎn)發(fā)到修改頁面
            request.setAttribute("goods",goods);
            request.getRequestDispatcher("xiugai.jsp").forward(request,response);
        }else { // 否則轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息
            request.setAttribute("error_msg","修改錯(cuò)誤?。?!");
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了查找商品信息功能。在doPost()方法中,首先設(shè)置響應(yīng)編碼、請(qǐng)求編碼和獲取商品ID,并將商品ID轉(zhuǎn)換為整型。然后創(chuàng)建GoodsDao對(duì)象并調(diào)用查找商品方法,返回查詢結(jié)果對(duì)象。如果查詢結(jié)果不為空,則將查詢結(jié)果存儲(chǔ)到request中,并轉(zhuǎn)發(fā)到修改頁面;否則,轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息。在實(shí)現(xiàn)該Servlet時(shí),需要注意處理請(qǐng)求參數(shù)、查詢結(jié)果等信息,以及重定向或轉(zhuǎn)發(fā)到正確的頁面。 

package com.liu.servlet;
import com.liu.Bean.Goods;
import com.liu.dao.impl.GoodsDao;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/xiugai2")
public class Xiugai2 extends HttpServlet {
    // 處理GET請(qǐng)求
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
    // 處理POST請(qǐng)求
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
        request.setCharacterEncoding("utf-8"); // 設(shè)置請(qǐng)求編碼
        Goods goods = new Goods(); // 創(chuàng)建Goods對(duì)象
        goods.setGid(Integer.parseInt(request.getParameter("gid"))); // 獲取商品ID并設(shè)置到Goods對(duì)象中
        goods.setGname(request.getParameter("gname")); // 獲取商品名稱并設(shè)置到Goods對(duì)象中
        goods.setPrice(Double.parseDouble(request.getParameter("price"))); // 獲取商品價(jià)格并設(shè)置到Goods對(duì)象中
        goods.setMark(request.getParameter("mark")); // 獲取商品描述并設(shè)置到Goods對(duì)象中
        GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對(duì)象
        int row = goodsDao.xiugai2(goods); // 調(diào)用修改商品方法,返回受影響行數(shù)
        if (row > 0 ){ // 如果修改成功,則重定向到商品列表Servlet
            request.getRequestDispatcher("ServletAllGoods").forward(request,response);
        }else { // 否則轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息
            request.setAttribute("error_msg","修改錯(cuò)誤?。?!");
            request.getRequestDispatcher("error.jsp").forward(request,response);
        }
    }
}

該類實(shí)現(xiàn)了HttpServlet接口,提供了商品修改功能。在doPost()方法中,首先設(shè)置響應(yīng)編碼、請(qǐng)求編碼,然后創(chuàng)建Goods對(duì)象并獲取商品ID、名稱、價(jià)格和描述信息,并將這些信息設(shè)置到Goods對(duì)象中。接著創(chuàng)建GoodsDao對(duì)象并調(diào)用修改商品方法,返回受影響行數(shù)。如果修改成功,則重定向到商品列表Servlet;否則,轉(zhuǎn)發(fā)到錯(cuò)誤頁面并輸出錯(cuò)誤信息。在實(shí)現(xiàn)該Servlet時(shí),需要注意處理請(qǐng)求參數(shù)、修改結(jié)果等信息,以及重定向或轉(zhuǎn)發(fā)到正確的頁面。

頁面代碼

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>com.liu.servlet.Login</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
</web-app>

頁面文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>歡迎光臨</title>
</head>
<body>
    <h2>${error_msg}</h2>
    <a href="login.jsp">返回重試</a>
</body>
</html>
<%@ page import="com.liu.Bean.Goods" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: pai'meng
  Date: 2023/2/22
  Time: 11:51
  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>
    <h2>歡迎來自${user.address}的${user.username}訪問主頁</h2>
        <table>
            <form action="mohu" method="get">
                <input type="text" name="sousuo" value="" >
                <input type="submit" name="搜索2" value="搜索">
            </form>
            <thead>
                <tr>
                    <th>商品編號(hào)</th>
                    <th>商品名字</th>
                    <th>商品價(jià)格</th>
                    <th>商品介紹</th>
                </tr>
            </thead>
            <tbody id="list">
            <c:forEach items="${shopping}" var="sho">
                <tr>
                    <td>${sho.gid}</td>
                    <td>${sho.gname}</td>
                    <td>${sho.price}</td>
                    <td>${sho.mark}</td>
                    <td><a href="shanchu?gid=${sho.gid}">刪除</a></td>
                    <td><a href="xiugai?gid=${sho.gid}">修改</a></td>
                </tr>
            </c:forEach>
            <a href="tianjia.jsp">添加</a>
            </tbody>
</table>
</body>
</html>
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>主頁</title>
  </head>
  <body>
  <h2>歡迎來到主頁</h2>
  <a href="login.jsp">登錄</a>
  <a href="register.jsp">注冊(cè)</a>
  </body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登錄</title>
</head>
<body>
    <form action="login" method="get">
        請(qǐng)輸入賬號(hào):<input type="text" name="username"><br>
        請(qǐng)輸入密碼:<input type="password" name="password"><br>
        <input type="submit" value="確定">
        <a href="register.jsp">沒有賬戶?點(diǎn)擊注冊(cè)</a>
    </form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注冊(cè)</title>
</head>
<body>
<form action="register" method="post">
    請(qǐng)輸入注冊(cè)賬號(hào):<input type="text" name="username"><br>
    請(qǐng)輸入注冊(cè)密碼:<input type="password" name="password"><br>
    請(qǐng)輸入電話:<input type="text" name="phone"><br>
    請(qǐng)輸入地址:<input type="text" name="address"><br>
    <input type="submit" value="確定">
    <a href="login.jsp">已有賬號(hào)?點(diǎn)擊登錄</a>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加商品</title>
</head>
<body>
<form action="Tianjia" method="post">
  請(qǐng)輸入商品名稱:<input type="text" name="gname"><br>
  請(qǐng)輸入商品價(jià)格:<input type="number" name="price"><br>
  請(qǐng)輸入商品介紹:<input type="text" name="mark"><br>
  <input type="submit" value="添加">
</form>
</body>
</html>
<%@ 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>
    <form action="xiugai2" method="post">
<%--        <c:forEach items="goods" var="goods"></c:forEach>--%>
        商品編號(hào):<input type="text" name="gid" value="${goods.gid}" placeholder="商品編號(hào)" readonly = readonly><br>
        商品名稱:<input type="text" name="gname" value="${goods.gname}" placeholder="商品名稱"><br>
        商品價(jià)格:<input type="number" name="price" value="${goods.price}" placeholder="商品價(jià)格"><br>
        商品介紹:<input type="text" name="mark" value="${goods.mark}" placeholder="商品介紹"><br>
        <input type="submit" value="確定">
    </form>
</body>
</html>

效果展示 

總結(jié) 

到此這篇關(guān)于使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫增、刪、改、查操作的文章就介紹到這了,更多相關(guān)javaweb對(duì)數(shù)據(jù)庫增刪改查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring?boot集成p6spy的最佳實(shí)踐

    spring?boot集成p6spy的最佳實(shí)踐

    這篇文章主要介紹了spring?boot集成p6spy的最佳實(shí)踐-p6spy-spring-boot-starter的項(xiàng)目案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • java讀取證書公鑰的實(shí)現(xiàn)

    java讀取證書公鑰的實(shí)現(xiàn)

    這篇文章主要介紹了java讀取證書公鑰的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • java中ArrayList的兩種排序方法實(shí)例

    java中ArrayList的兩種排序方法實(shí)例

    ArrayList是一個(gè)數(shù)組隊(duì)列,相當(dāng)于 動(dòng)態(tài)數(shù)組,與Java中的數(shù)組相比,它的容量能動(dòng)態(tài)增長,這篇文章主要給大家介紹了關(guān)于java中ArrayList的兩種排序方法,需要的朋友可以參考下
    2021-07-07
  • java.lang.Void類源碼解析

    java.lang.Void類源碼解析

    這篇文章主要介紹了java.lang.Void類源碼解析的相關(guān)內(nèi)容,對(duì)源碼中的部分內(nèi)容進(jìn)行解釋,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • springboot 實(shí)現(xiàn)bean手動(dòng)注入操作

    springboot 實(shí)現(xiàn)bean手動(dòng)注入操作

    這篇文章主要介紹了springboot 實(shí)現(xiàn)bean手動(dòng)注入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java詳解HashMap實(shí)現(xiàn)原理和源碼分析

    Java詳解HashMap實(shí)現(xiàn)原理和源碼分析

    這篇文章主要介紹了Java關(guān)于HashMap的實(shí)現(xiàn)原理并進(jìn)行源碼分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java實(shí)現(xiàn)雙向鏈表

    Java實(shí)現(xiàn)雙向鏈表

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Spark SQL關(guān)于性能調(diào)優(yōu)選項(xiàng)詳解

    Spark SQL關(guān)于性能調(diào)優(yōu)選項(xiàng)詳解

    這篇文章將為大家詳細(xì)講解有關(guān)Spark SQL性能調(diào)優(yōu)選項(xiàng),小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲
    2023-02-02
  • Mybatis如何構(gòu)建SQL語句

    Mybatis如何構(gòu)建SQL語句

    這篇文章主要介紹了Mybatis如何構(gòu)建SQL語句問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 一文搞懂Spring中的Bean作用域

    一文搞懂Spring中的Bean作用域

    scope用來聲明容器中的對(duì)象所應(yīng)該處的限定場景或者說該對(duì)象的存活時(shí)間,即容器在對(duì)象進(jìn)入其 相應(yīng)的scope之前,生成并裝配這些對(duì)象,在該對(duì)象不再處于這些scope的限定之后,容器通常會(huì)銷毀這些對(duì)象,這篇文章主要介紹了Spring中的Bean作用域,需要的朋友可以參考下
    2022-06-06

最新評(píng)論