使用javaweb項(xiàng)目對(duì)數(shù)據(jù)庫增、刪、改、查操作的實(shí)現(xiàn)方法
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)文章
springboot 實(shí)現(xiàn)bean手動(dòng)注入操作
這篇文章主要介紹了springboot 實(shí)現(xiàn)bean手動(dòng)注入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01Java詳解HashMap實(shí)現(xiàn)原理和源碼分析
這篇文章主要介紹了Java關(guān)于HashMap的實(shí)現(xiàn)原理并進(jìn)行源碼分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Spark 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