使用javaweb項目對數(shù)據(jù)庫增、刪、改、查操作的實現(xiàn)方法
1、什么是javaweb
JavaWeb是指使用Java語言進(jìn)行Web應(yīng)用程序開發(fā)的技術(shù),可以利用Java編寫一些動態(tài)網(wǎng)頁、交互式網(wǎng)頁、企業(yè)級應(yīng)用程序等。 JavaWeb技術(shù)主要包括Servlet、JSP、JDBC、JavaBean、JNDI、EJB、Web Services等。
Servlet是JavaWeb技術(shù)的核心組件之一,它是一個運行在Web服務(wù)器上的Java程序,可以接收HTTP請求并返回HTTP響應(yīng),常用于實現(xiàn)Web應(yīng)用程序中的控制器或者中間件。通過Servlet,我們可以處理用戶提交的表單數(shù)據(jù)、查詢數(shù)據(jù)庫、調(diào)用其他服務(wù)等操作,并將結(jié)果返回給客戶端瀏覽器。
JSP(JavaServer Pages)是另一個重要的JavaWeb技術(shù),它是一種在HTML頁面內(nèi)嵌入Java代碼的技術(shù),能夠生成動態(tài)的Web頁面。JSP文件會在Web服務(wù)器上編譯成Servlet,并在客戶端請求時被執(zhí)行。在JSP中,我們可以使用Java代碼、JSTL標(biāo)簽庫和EL表達(dá)式等來處理數(shù)據(jù)和邏輯,從而實現(xiàn)動態(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對象來封裝數(shù)據(jù)和業(yè)務(wù)邏輯,并在JSP或Servlet中使用它們來實現(xiàn)模型層的功能。
總之,JavaWeb技術(shù)是基于Java語言的Web應(yīng)用程序開發(fā)技術(shù),提供了豐富的API和組件,能夠方便地實現(xiàn)動態(tài)網(wǎng)頁、企業(yè)級應(yīng)用程序等功能。
2、如何使用javaweb
項目展示:
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,'夠香夠辣就是這個味!');
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)報


代碼部分:
Bean層
商品實體類
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 + '\'' +
'}';
}
}用戶實體類:
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ū)動程序名稱
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對象
/**
* 獲取數(shù)據(jù)庫連接對象
* @return 數(shù)據(jù)庫連接對象
*/
public static Connection getCon(){
try {
Class.forName(driver); // 加載數(shù)據(jù)庫驅(qū)動程序
conn = DriverManager.getConnection(url,username,password); // 獲取數(shù)據(jù)庫連接對象
} catch (Exception e) { // 處理異常
throw new RuntimeException(e);
}
return conn; // 返回數(shù)據(jù)庫連接對象
}
/**
* 關(guān)閉ResultSet、PreparedStatement和Connection對象
* @param rs ResultSet對象
* @param pstm PreparedStatement對象
* @param conn Connection對象
* @throws SQLException SQL異常
*/
public static void colse(ResultSet rs, PreparedStatement pstm,Connection conn) throws SQLException {
if (rs != null) { // 判斷ResultSet對象是否為null
rs.close(); // 關(guān)閉ResultSet對象
}
if (pstm != null){ // 判斷PreparedStatement對象是否為null
pstm.close(); // 關(guān)閉PreparedStatement對象
}
if (conn != null){ // 判斷Connection對象是否為null
conn.close(); // 關(guān)閉Connection對象
}
}
/**
* 關(guān)閉PreparedStatement和Connection對象
* @param pstm PreparedStatement對象
* @param conn Connection對象
* @throws SQLException SQL異常
*/
public static void colse(PreparedStatement pstm,Connection conn) throws SQLException {
if (pstm != null){ // 判斷PreparedStatement對象是否為null
pstm.close(); // 關(guān)閉PreparedStatement對象
}
if (conn != null){ // 判斷Connection對象是否為null
conn.close(); // 關(guān)閉Connection對象
}
}
}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對象
Connection con = null; // 數(shù)據(jù)庫連接對象
PreparedStatement pstm = null; // 預(yù)編譯語句對象
ResultSet rs = null; // 結(jié)果集對象
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)建商品對象
goods.setGid(rs.getInt("gid")); // 設(shè)置商品ID
goods.setGname(rs.getString("gname")); // 設(shè)置商品名稱
goods.setPrice(rs.getDouble("price")); // 設(shè)置商品價格
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 商品對象
* @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è)置商品價格
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 商品對象
*/
public Goods xiugai1(int gid){
Goods goods = null; // 創(chuàng)建商品對象
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)建商品對象
goods.setGid(rs.getInt("gid")); // 設(shè)置商品ID
goods.setGname(rs.getString("gname")); // 設(shè)置商品名稱
goods.setPrice(rs.getDouble("price")); // 設(shè)置商品價格
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; // 返回商品對象
}
/**
* 修改商品信息
* @param goods 商品對象
* @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è)置商品價格
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)建商品對象
goods.setGid(rs.getInt("gid")); // 設(shè)置商品ID
goods.setGname(rs.getString("gname")); // 設(shè)置商品名稱
goods.setPrice(rs.getDouble("price")); // 設(shè)置商品價格
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ù)庫連接對象
User user = null; // 用戶對象
PreparedStatement pstm = null; // 預(yù)編譯語句對象
ResultSet rs = null; // 結(jié)果集對象
int row = 0; // 操作結(jié)果
// 實現(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è)置第一個占位符的值為用戶名
pstm.setObject(2,password); // 設(shè)置第二個占位符的值為密碼
rs = pstm.executeQuery(); // 執(zhí)行查詢操作
if (rs.next()) { // 如果存在用戶,則將查詢結(jié)果存放到User對象中
user = new User();
user.setUid(rs.getInt("uid")); // 設(shè)置User對象的id屬性
user.setUsername(rs.getString("username")); // 設(shè)置User對象的用戶名屬性
user.setPassword(rs.getString("password")); // 設(shè)置User對象的密碼屬性
user.setPhone(rs.getString("phone")); // 設(shè)置User對象的電話號碼屬性
user.setAddress(rs.getString("address")); // 設(shè)置User對象的地址屬性
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
JDBCUtil.colse(rs,pstm,con); // 關(guān)閉ResultSet、PreparedStatement和Connection對象
} catch (Exception e) {
e.printStackTrace();
}
}
return user; // 返回User對象
}
// 實現(xiàn)用戶注冊功能
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è)置第一個占位符的值為用戶名
pstm.setObject(2,user.getPassword()); // 設(shè)置第二個占位符的值為密碼
pstm.setObject(3,user.getPhone()); // 設(shè)置第三個占位符的值為電話號碼
pstm.setObject(4,user.getAddress()); // 設(shè)置第四個占位符的值為地址
row = pstm.executeUpdate(); // 執(zhí)行插入操作
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
JDBCUtil.colse(pstm,con); // 關(guān)閉PreparedStatement和Connection對象
} 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對象
HttpServletResponse response = (HttpServletResponse) servletResponse; // 轉(zhuǎn)換ServletResponse為HttpServletResponse對象
String servletPath = request.getServletPath(); // 獲取Servlet路徑
System.out.println(servletPath);
HttpSession session = request.getSession(); // 獲取Session對象
User user = (User)session.getAttribute("user"); // 從Session中獲取User對象
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); // 放行請求
} else if (user != null) { // 如果用戶已登錄,則放行請求
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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
request.setCharacterEncoding("utf-8"); // 設(shè)置請求編碼
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對象
User loging = userDaolmpl.Login(username,password); // 調(diào)用Login()方法進(jìn)行登錄校驗,并返回User對象
System.out.println(loging);
if (loging != null){ // 如果登錄成功,則將User對象存儲到Session中,并重定向到商品列表Servlet
HttpSession session = request.getSession();
session.setAttribute("user",loging);
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else { // 否則重定向到錯誤頁面
response.sendRedirect("error.jsp");
}
}
}該類實現(xiàn)了HttpServlet接口,提供了用戶登錄功能。在doPost()方法中,首先設(shè)置請求編碼、響應(yīng)編碼和響應(yīng)類型,然后獲取用戶名和密碼,創(chuàng)建UserDaoImpl對象,并調(diào)用Login()方法進(jìn)行登錄校驗。如果登錄成功,則將User對象存儲到Session中,并重定向到商品列表Servlet;否則,重定向到錯誤頁面。在實現(xiàn)該Servlet時,需要注意設(shè)置請求編碼、響應(yīng)編碼和響應(yīng)類型等信息,以及處理Login()方法返回的User對象和Session對象。
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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
request.setCharacterEncoding("utf-8"); // 設(shè)置請求編碼
GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對象
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對象
session.setAttribute("shopping",goodsList); // 將查詢結(jié)果存儲到Session中
response.sendRedirect("goods.jsp"); // 重定向到商品列表頁面
}
}該類實現(xiàn)了HttpServlet接口,提供了商品模糊查詢功能。在doPost()方法中,首先設(shè)置請求編碼和響應(yīng)編碼,然后創(chuàng)建GoodsDao對象并獲取查詢關(guān)鍵字,調(diào)用模糊查詢方法進(jìn)行查詢,并將查詢結(jié)果存儲到Session中,最后重定向到商品列表頁面。在實現(xiàn)該Servlet時,需要注意設(shè)置請求編碼、響應(yīng)編碼和查詢關(guān)鍵字等信息,以及處理模糊查詢方法返回的查詢結(jié)果列表和Session對象。
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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User user = new User(); // 創(chuàng)建User對象
String username = request.getParameter("username"); // 獲取用戶名
String password = request.getParameter("password"); // 獲取密碼
String phone = request.getParameter("phone"); // 獲取電話號碼
String address = request.getParameter("address"); // 獲取地址
user.setUsername(username); // 設(shè)置用戶名
user.setPassword(password); // 設(shè)置密碼
user.setPhone(phone); // 設(shè)置電話號碼
user.setAddress(address); // 設(shè)置地址
System.out.println(user);
UserDaolmpl userDaolmpl = new UserDaolmpl(); // 創(chuàng)建 UserDaoImpl 對象
int row = userDaolmpl.register(user); // 調(diào)用 UserDaoImpl 中的 register() 方法進(jìn)行注冊,返回受影響行數(shù)
System.out.println(row); // 輸出注冊結(jié)果
if (row > 0){ // 如果注冊成功,則重定向到登錄頁面
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{ // 否則重定向到注冊頁面
response.sendRedirect("register.jsp");
}
}
}該類實現(xiàn)了HttpServlet接口,提供了用戶注冊功能。在doPost()方法中,首先創(chuàng)建User對象并獲取用戶名、密碼、電話號碼和地址等信息,然后設(shè)置User對象屬性并輸出到控制臺,創(chuàng)建UserDaoImpl對象,并調(diào)用register()方法進(jìn)行注冊,返回受影響行數(shù)。如果注冊成功,則重定向到登錄頁面;否則,重定向到注冊頁面。在實現(xiàn)該Servlet時,需要注意設(shè)置User對象屬性、處理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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對象
List<Goods> shopping = goodsDao.shopping(); // 調(diào)用查找所有商品方法,返回查詢結(jié)果列表
System.out.println(shopping);
HttpSession httpSession = request.getSession(); // 獲取Session對象
httpSession.setAttribute("shopping",shopping); // 將查詢結(jié)果存儲到Session中
response.sendRedirect("goods.jsp"); // 重定向到商品列表頁面
}
}該類實現(xiàn)了HttpServlet接口,提供了查找所有商品功能。在doPost()方法中,首先創(chuàng)建GoodsDao對象并調(diào)用查找所有商品方法,獲取商品列表;然后將商品列表存儲到Session對象中,最后重定向到商品列表頁面。在實現(xiàn)該Servlet時,需要注意處理查詢結(jié)果列表和Session對象等信息。
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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
// 處理POST請求
@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對象
int i = goodsDao.shanchu(gid); // 調(diào)用刪除商品方法,返回受影響行數(shù)
if (i>0){ // 如果刪除成功,則重定向到商品列表Servlet
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else { // 否則轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息
request.setAttribute("error_msg","刪除失敗?。?!");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}該類實現(xiàn)了HttpServlet接口,提供了商品刪除功能。在doPost()方法中,首先獲取商品ID,創(chuàng)建GoodsDao對象并調(diào)用刪除商品方法,返回受影響行數(shù)。如果刪除成功,則重定向到商品列表Servlet;否則,轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息。在實現(xiàn)該Servlet時,需要注意處理商品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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
request.setCharacterEncoding("utf-8"); // 設(shè)置請求編碼
response.setContentType("text/html;charset = utf-8"); // 設(shè)置響應(yīng)類型
Goods goods = new Goods(); // 創(chuàng)建Goods對象
goods.setGname(request.getParameter("gname")); // 獲取商品名稱并設(shè)置到Goods對象中
goods.setPrice(Double.parseDouble(request.getParameter("price"))); // 獲取商品價格并設(shè)置到Goods對象中
goods.setMark(request.getParameter("mark")); // 獲取商品描述并設(shè)置到Goods對象中
GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對象
int row = goodsDao.tianjia(goods); // 調(diào)用添加商品方法,返回受影響行數(shù)
if (row>0){ // 如果添加成功,則重定向到商品列表Servlet
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else{ // 否則轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息
request.setAttribute("error_msg","添加失?。。。?);
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}該類實現(xiàn)了HttpServlet接口,提供了商品添加功能。在doPost()方法中,首先設(shè)置響應(yīng)編碼、請求編碼和響應(yīng)類型,然后創(chuàng)建Goods對象并獲取商品名稱、價格和描述信息,并將這些信息設(shè)置到Goods對象中。接著創(chuàng)建GoodsDao對象并調(diào)用添加商品方法,返回受影響行數(shù)。如果添加成功,則重定向到商品列表Servlet;否則,轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息。在實現(xiàn)該Servlet時,需要注意處理請求參數(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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
request.setCharacterEncoding("utf-8"); // 設(shè)置請求編碼
int gid = Integer.parseInt(request.getParameter("gid")); // 獲取商品ID并轉(zhuǎn)換為整型
GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對象
Goods goods = goodsDao.xiugai1(gid); // 調(diào)用查找商品方法,返回查詢結(jié)果對象
if (goods!=null){ // 如果查詢結(jié)果不為空,則將查詢結(jié)果存儲到request中,并轉(zhuǎn)發(fā)到修改頁面
request.setAttribute("goods",goods);
request.getRequestDispatcher("xiugai.jsp").forward(request,response);
}else { // 否則轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息
request.setAttribute("error_msg","修改錯誤?。?!");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}該類實現(xiàn)了HttpServlet接口,提供了查找商品信息功能。在doPost()方法中,首先設(shè)置響應(yīng)編碼、請求編碼和獲取商品ID,并將商品ID轉(zhuǎn)換為整型。然后創(chuàng)建GoodsDao對象并調(diào)用查找商品方法,返回查詢結(jié)果對象。如果查詢結(jié)果不為空,則將查詢結(jié)果存儲到request中,并轉(zhuǎn)發(fā)到修改頁面;否則,轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息。在實現(xiàn)該Servlet時,需要注意處理請求參數(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請求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
// 處理POST請求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8"); // 設(shè)置響應(yīng)編碼
request.setCharacterEncoding("utf-8"); // 設(shè)置請求編碼
Goods goods = new Goods(); // 創(chuàng)建Goods對象
goods.setGid(Integer.parseInt(request.getParameter("gid"))); // 獲取商品ID并設(shè)置到Goods對象中
goods.setGname(request.getParameter("gname")); // 獲取商品名稱并設(shè)置到Goods對象中
goods.setPrice(Double.parseDouble(request.getParameter("price"))); // 獲取商品價格并設(shè)置到Goods對象中
goods.setMark(request.getParameter("mark")); // 獲取商品描述并設(shè)置到Goods對象中
GoodsDao goodsDao = new GoodsDao(); // 創(chuàng)建GoodsDao對象
int row = goodsDao.xiugai2(goods); // 調(diào)用修改商品方法,返回受影響行數(shù)
if (row > 0 ){ // 如果修改成功,則重定向到商品列表Servlet
request.getRequestDispatcher("ServletAllGoods").forward(request,response);
}else { // 否則轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息
request.setAttribute("error_msg","修改錯誤?。?!");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}該類實現(xiàn)了HttpServlet接口,提供了商品修改功能。在doPost()方法中,首先設(shè)置響應(yīng)編碼、請求編碼,然后創(chuàng)建Goods對象并獲取商品ID、名稱、價格和描述信息,并將這些信息設(shè)置到Goods對象中。接著創(chuàng)建GoodsDao對象并調(diào)用修改商品方法,返回受影響行數(shù)。如果修改成功,則重定向到商品列表Servlet;否則,轉(zhuǎn)發(fā)到錯誤頁面并輸出錯誤信息。在實現(xiàn)該Servlet時,需要注意處理請求參數(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>商品編號</th>
<th>商品名字</th>
<th>商品價格</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">注冊</a>
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登錄</title>
</head>
<body>
<form action="login" method="get">
請輸入賬號:<input type="text" name="username"><br>
請輸入密碼:<input type="password" name="password"><br>
<input type="submit" value="確定">
<a href="register.jsp">沒有賬戶?點擊注冊</a>
</form>
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注冊</title>
</head>
<body>
<form action="register" method="post">
請輸入注冊賬號:<input type="text" name="username"><br>
請輸入注冊密碼:<input type="password" name="password"><br>
請輸入電話:<input type="text" name="phone"><br>
請輸入地址:<input type="text" name="address"><br>
<input type="submit" value="確定">
<a href="login.jsp">已有賬號?點擊登錄</a>
</form>
</body>
</html><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加商品</title>
</head>
<body>
<form action="Tianjia" method="post">
請輸入商品名稱:<input type="text" name="gname"><br>
請輸入商品價格:<input type="number" name="price"><br>
請輸入商品介紹:<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>--%>
商品編號:<input type="text" name="gid" value="${goods.gid}" placeholder="商品編號" readonly = readonly><br>
商品名稱:<input type="text" name="gname" value="${goods.gname}" placeholder="商品名稱"><br>
商品價格:<input type="number" name="price" value="${goods.price}" placeholder="商品價格"><br>
商品介紹:<input type="text" name="mark" value="${goods.mark}" placeholder="商品介紹"><br>
<input type="submit" value="確定">
</form>
</body>
</html>效果展示

總結(jié)
到此這篇關(guān)于使用javaweb項目對數(shù)據(jù)庫增、刪、改、查操作的文章就介紹到這了,更多相關(guān)javaweb對數(shù)據(jù)庫增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spark SQL關(guān)于性能調(diào)優(yōu)選項詳解
這篇文章將為大家詳細(xì)講解有關(guān)Spark SQL性能調(diào)優(yōu)選項,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲2023-02-02

