主頁 >  其他 > 基于JSP+Servlet+MySQL實作實驗管理系統

基于JSP+Servlet+MySQL實作實驗管理系統

2021-02-18 10:39:20 其他

前言:進行Android專案的同時,JAVAEE課程也有相關的個人專案,做之前沒有感受到VUE的“香”(看同行的同學用的很快樂,這個寒假來體驗一波),所以還是用最基本的JSP以及Servlet來實作前后端的互動,
專案環境:
1、Eclipse IDE 4.14.0
在這里插入圖片描述
2、Tomcat 9.0.39(鑒于當時用zip安裝,進行配置時出現一大堆問題,建議使用exe安裝)
3、MySQL 8.0配合navicat(相關的安裝以及使用在我的另一篇博文里)

相關的環境準備,自己配置的時候沒有及時記錄下來,后來看到一篇不錯的博文(內含編碼格式問題的解決)分享給大家~

PS:一定要記得除錯程序中完善編碼格式,不然很可能不會出現自身想要的結果!

一、需求分析


用戶分為三類:管理員、教師、學生

管理員
1、實作用戶的增刪改查
2、實作實驗的增刪改查
3、實作題庫的增刪改查

教師
1、查看教師資訊
2、查看子實驗資訊
3、查看學生成績資訊

學生
1、查看學生資訊
2、查看子實驗資訊
3、回答試題,提交得到成績

二、資料庫設計

采用MySQL8.0配合navicat設計(具體實作方法參考)

  • admin表(其實就是用戶表)
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `admin`;
CREATE TABLE `admin` (
  `id` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `password` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `style` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of admin
-- ----------------------------
INSERT INTO `admin` VALUES ('1', '202f', '123', '學生');
INSERT INTO `admin` VALUES ('2', 'admin', 'admin', '管理員');
INSERT INTO `admin` VALUES ('3', '2020s', '123456', '學生');
INSERT INTO `admin` VALUES ('4', '2020t', '123456', '教師');
INSERT INTO `admin` VALUES ('6', '203t', '163', '教師');
INSERT INTO `admin` VALUES ('7', '232s', '124', '學生');
INSERT INTO `admin` VALUES ('8', '202s', '123', '學生');
INSERT INTO `admin` VALUES ('9', '210s', '234', '學生');

  • experiment表(實驗表)
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `experiment`;
CREATE TABLE `experiment` (
  `id` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `hour` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `device` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `rule` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `goal` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `tips` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `step` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of experiment
-- ----------------------------
INSERT INTO `experiment` VALUES ('1', '化學實驗基本操作技能', '4', '電子天平,稱量瓶子,表面皿,坩堝,藥勺,藥品', '用電子天平稱量物品時,可采用直接稱量法、遞減稱量法和固定質量稱量法,', '1. 熟悉和了解天平的原理、構造、各部件的位置與作用,\r\n\r\n2. 學會差減法和固定質量法的稱樣方法及操作技術,準確稱出實驗給出試樣或器具的質量,\r\n\r\n3. 學會正確記錄測量資料和處理資料,', '1、電子天平應放置在一平穩、固定的作業臺上,應避免陽光直射和遠離發熱器,\r\n\r\n2、電子天平應避免與大型機器或者帶干擾的設備連接,已避免其他設備的干擾,\r\n\r\n3、電子天平應使天平遠離帶有磁性或能產生磁場的物體及設備,\r\n\r\n4、不得在具有爆炸性危險的區域內使用天平,\r\n\r\n5、不得長時間在高濕度或高粉塵的環境中使用天平,\r\n\r\n6、電子天平使用前應通電預熱半小時以上,\r\n\r\n7、玻璃器皿使用前必須按規定認真清洗干凈,洗凈的器皿應是內壁能被水均勻潤濕而不粘附水珠,\r\n\r\n8、吸量管和移液管等玻璃量器應先經潤洗后方可移取溶液,', '(1)準備兩只潔凈、干燥的稱量瓶,做好記號,在臺秤上粗略稱其質量,\r\n\r\n(2)將一塊表面皿置于分析天平的托盤上,準確稱取其質量,\r\n\r\n(3)用藥匙將試樣加到表面皿中央,開始時加入少量試樣,一直到接近所需的藥品量時,用右手拇指和中指及手心拿穩藥勺,伸向表面皿中心部分上方,食指慢慢輕敲藥勺柄,讓試樣慢慢落入表面皿中,直至達到要求稱取質量(0.5884g)時,正確記錄測量資料,\r\n\r\n(4)同步驟(2)、(3),稱取第2份試樣于第2個表面皿中,');
INSERT INTO `experiment` VALUES ('2', '乙酸乙酯的制備', '4', '無水乙醇、冰醋酸、濃H2SO4、飽和Na2CO3、飽和NaCl、飽和CaCl2電熱套、球形冷凝管、圓底燒瓶、分液漏斗', '化學公式', '1.了解從有機酸合成酯的一般原理及方法,\r\n\r\n2. 掌握蒸餾、分液漏斗的使用等操作,', '注意操作的先后順序', '1.在50ml圓底燒瓶中加入9.5ml(0.2mol)無水乙醇和6ml(0.1mol)冰醋酸,再小心加入2.5ml濃H2SO4,混勻后,加入沸石,裝上冷凝管,2.小心加熱反應瓶,緩慢回流1/2h,冷卻反應物,將回流改成蒸餾裝置,接受瓶用冷水冷卻,蒸出生成的乙酸乙酯,直到鎦出液約為反應物總體積的1/2為止,\r\n\r\n3.在鎦出液中慢慢加入飽和Na2CO3,振蕩,至不再有CO2氣體產生為止,4.得粗產品,計算產率,');
INSERT INTO `experiment` VALUES ('3', '	\r\n原電池電動勢和電極電勢的測定', '4', '電位差計,銅片電極,鋅片電極,導線,接線板,鹽橋,移液管(5mL,4支),燒杯,玻璃棒,天平,洗耳球,洗瓶,藥品', '訊訓還原反應的本質是訊訓劑和還原劑之間發生電子的轉移,原電池中得到電子的物質是訊訓劑,失去電子的物質是還原劑,物質得失電子能力的大小(或訊訓還原能力的強弱)可以用該物質的訊訓態-還原態所組成的電對的電極電勢的相對高低來衡量,', '1.掌握原電池的組成和電池電動勢的測定方法,\r\n\r\n2.了解訊訓態(或還原態)濃度變化、配合物形成和沉淀生成對電極電勢的影響,', '比較實驗步驟1,2,3,所測得的電動勢資料差異', '分別配制1.0 mol的CuSO4和 ZnSO4 溶液50ml,用細砂紙除去金屬銅、鋅片表面的訊訓層,洗凈、擦干,在30mL的燒杯中加入1.0 molCuSO4溶液15mL,并插入銅電極,組成一個半電池;在另一個30mL的燒杯中加入1.0 molZnSO4溶液15mL,并插入鋅電極,組成另一個半電池,用導線將銅、鋅片分別與酸度計的正負極相連,兩燒杯中間以鹽橋連接,用電位計測出原電池');
INSERT INTO `experiment` VALUES ('5', '\r\n樣品的研磨及分級篩分', '4', '振篩機 ', '逆時針旋轉手柄,提起上蓋,將其固定在立桿上,取下篩具,依次將各標準篩內的物料取出', '本實驗主要是對制備的LiFePO4/C材料進行研磨和篩分處理,了解樣品的常用研磨方法,了解確定樣品粒度組成的方法,掌握標準篩和顆粒粒徑的相關知識,了解振篩機的結構和作業原理、操作方法及使用注意事項,將LiFePO4/C進行研磨和標準篩篩分,探討樣品粒度對LiFePO4/C正極材料性能的影響,', '1. 為了穩固振篩機,應用四個地腳將振篩機固定牢固,以免移動,\r\n\r\n2. 定期檢查、加注、更換電動機內的機油,\r\n\r\n3. 每次篩分結束后,應擦干凈振篩機上篩盤內的灰塵,嚴禁用水沖洗,\r\n\r\n4. 振篩機作業時,嚴禁將身體任意部位伸入、靠近振篩機的運動部件,以免受傷,', '1. 在擺放分樣篩時,應按照篩孔大小的順序進行疊放,孔徑大的在上面,孔徑小的在下面,最下面放置一個篩子底盤,\r\n\r\n2. 將需要進行篩分的試樣倒入最上層的篩內,蓋好篩蓋,然后安放在振篩機機座內,\r\n\r\n3. 逆時針旋轉夾篩盤上的提手柄,將整個夾篩盤向下滑,壓緊套篩;然后,順時針旋轉夾篩盤的提手柄,其內的頂桿軸夾緊支撐套,將整套分樣篩固定結實,\r\n\r\n4. 將振篩機的電源開關打開,振篩機開始作業,同時用秒表計時,\r\n\r\n5. 當振動時間達到要求的時間時,關閉電源開關,振篩機停止作業,');
INSERT INTO `experiment` VALUES ('6', '正溴丁烷的制備', '5', '正丁醇 3毫升 0.033摩爾\r\n\r\n  溴化鈉(無水) 5.1克 0.05摩爾\r\n\r\n  濃硫酸 5毫升 0.094摩爾\r\n\r\n  水 4.1毫升\r\n\r\n  碳酸鈉、無水氯化鈣,', '本實驗中正溴丁烷是由正丁醇與溴化鈉、濃硫酸共熱而制得', '1、 學習以溴化鈉、濃硫酸和正丁醇制備正溴丁烷的原理與方法,\r\n\r\n2、 練習帶有吸收有害氣體裝置的回流加熱操作,', '1、 投料時應嚴格按教材上的順序;投料后,一定要混合均勻,\r\n\r\n2、 反應時,保持回流平穩進行,防止導氣管發生倒吸,', ' 1、投料;2、安裝回流裝置\r\n\r\n以石棉網覆寫電爐為熱源,按圖示安裝回流裝置(含氣體吸收部分),注意圓底燒瓶底部與石棉網間的距離和防止堿液被倒吸,\r\n\r\n3、 加熱回流\r\n\r\n在石棉網上加熱至沸,調整圓底燒瓶底部與石棉網的距離,以保持沸騰而又平穩回流,并時加搖動燒瓶促使反應完成,反應約30-40min,(注意調整距離和搖動燒瓶的操作),\r\n\r\n4、 分離粗產物\r\n\r\n待反應液冷卻后,改回流裝置為蒸餾裝置(用直形冷凝管冷凝),蒸出粗產物,(注意判斷粗產物是否蒸完),\r\n\r\n5、收集產物');

  • student表(學生資訊表)
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `age` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `sex` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `position` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `classname` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `address` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `phone` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `namestr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `nam` (`namestr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '黃輝', '21', '男', '班長', '材料1班', '湖南省長沙市湖南大學天馬1區', '18916472831', '202f');
INSERT INTO `student` VALUES ('2', '哈根', '22', '男', '紀律委員', '材料2班', '湖南省長沙市湖南大學天馬2區', '13457523523', '2020s');
INSERT INTO `student` VALUES ('3', '周修', '21', '女', '副班長', '材料1班', '湖南省長沙市湖南大學天馬3區', '17445546231', '232s');
INSERT INTO `student` VALUES ('4', '朱懷', '20', '男', '紀律委員', '材料1班', '湖南省長沙市湖南大學天馬3區', '15342321312', '202s');
INSERT INTO `student` VALUES ('5', '曾薩', '22', '男', '權益委員', '材料1班', '湖南省長沙市湖南大學天馬1區', '19834521312', '210s');

  • teacher表(教師資訊表)
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `id` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `age` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `sex` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `position` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `address` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `phone` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `namestr` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `namestring` (`namestr`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('1', '陳驕', '46', '男', '教授', '湖南省長沙市岳麓區天馬公寓10棟', '15372892042', '2020t');
INSERT INTO `teacher` VALUES ('2', '莫伐', '53', '女', '講師', '湖南省長沙市岳麓區望麓公寓3棟', '17634323231', '203t');

  • test表(試題表)
-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `acho` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `bcho` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `ccho` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `answer` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO `test` VALUES ('1', '吸濕性強、遇水釋放較多熱量的化學品沾染皮膚后應立刻( ),', '用清水清洗', '用冷水清洗', '用軟紙、軟布抹去', 'C');
INSERT INTO `test` VALUES ('10', '應如何簡單辨認有味的化學藥品?', '用鼻子對著瓶口去辨認氣味', '用舌頭品嘗試劑', '將瓶口遠離鼻子,用手在瓶口上方扇動,稍聞其味即可', 'C');
INSERT INTO `test` VALUES ('12', '2020s', 'sdaf', 'asdf', 'rwetwer', 'B');
INSERT INTO `test` VALUES ('2', '化學品的安全標簽警示詞不包括( ),', '小心', '危險', '警告', 'A');
INSERT INTO `test` VALUES ('3', '對危險廢物的容器和包裝物以及收集、貯存、運輸、處置危險廢物的設施、場所,必須( ),', '設定危險廢物識別標志', '設定生活垃圾識別標志', '不用設定識別標志', 'A');
INSERT INTO `test` VALUES ('4', '普通塑料、有機玻璃制品的加熱溫度不能超過( ),', '40℃', '60℃', '80℃', 'B');
INSERT INTO `test` VALUES ('5', '取用試劑時,錯的說法是( ),', '不能用手接觸試劑,以免危害健康和沾污試劑', '瓶塞應倒置桌面上,以免弄臟,取用試劑后,立即蓋嚴,將試劑瓶放回原處,標簽朝外', '多取的試劑可倒回原瓶,避免浪費', 'C');
INSERT INTO `test` VALUES ('6', '下列不可以放入105℃干燥箱干燥的是( ),', '燒杯', '量筒', '錐形瓶', 'B');
INSERT INTO `test` VALUES ('7', '實驗室內使用乙炔氣時,說法正確的是( ),', '室內不可有明火,不可有產生電火花的電器', '房間應密閉', '室內應有高濕度', 'A');
INSERT INTO `test` VALUES ('8', '進行腐蝕品的裝卸作業應該戴( )手套,', '帆布', '橡膠', '棉布', 'B');
INSERT INTO `test` VALUES ('9', '干粉滅火器適用于( ),', '電器起火', '可燃氣體起火', '以上都是', 'C');

  • score(成績表)
-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `experiment` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `result` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('122', '哈根', '乙酸乙酯的制備', '90');

三、資料庫封裝

  • 1、匯入相關jar包
    在這里插入圖片描述
    2、連接MySQL資料庫類(一般放在dao層)
package dao;

import java.sql.*;
 
public class DbHelper {
	static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
	private static String url = "jdbc:mysql://localhost:3306/myproject?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT";
	private static String userName = "root"; 
	private static String passWord = "huangzhihui@11"; 
	private static Connection conn = null;
 
	private DbHelper() {
 
	}
 
	public static Connection getConnection() {
		if (null == conn) {
			try {
				Class.forName(JDBC_DRIVER);
				conn = DriverManager.getConnection(url, userName, passWord);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return conn;
	}
 
	public static void main(String[] args) { 
		System.err.println(getConnection());
	}
	
}

四、實作效果

登錄首頁

在這里插入圖片描述

管理員用戶管理界面

在這里插入圖片描述

管理員用戶添加界面

在這里插入圖片描述

管理員用戶資訊修改界面

在這里插入圖片描述

管理員用戶資訊洗掉界面

在這里插入圖片描述

管理員實驗管理界面

在這里插入圖片描述

管理員實驗添加界面

在這里插入圖片描述

管理員實驗資訊修改界面

在這里插入圖片描述

管理員題庫管理界面

在這里插入圖片描述

管理員題目增加界面

在這里插入圖片描述

管理員題目修改界面

在這里插入圖片描述

教師個人資訊頁面

在這里插入圖片描述

教師個人資訊修改頁面

在這里插入圖片描述

教師子實驗資訊頁面

在這里插入圖片描述

教師所屬學生資訊頁面

在這里插入圖片描述

教師查看學生成績頁面

在這里插入圖片描述

學生個人資訊頁面

在這里插入圖片描述

學生個人資訊修改頁面

在這里插入圖片描述

學生子實驗資訊頁面

在這里插入圖片描述

學生子實驗測驗頁面

在這里插入圖片描述

學生測驗結果頁面

在這里插入圖片描述

五、基礎代碼

  1. 整體的結構還是很簡單的,每一個功能實作幾乎是共通的!

NO.1 dao層的管理類

即實作我們對資料庫操作的sql陳述句
例如:我書寫的Admindao

package dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
 
import entity.Admin;
 
public class AdminDao {
	public List<Admin> getAllAdmin() { 
		List<Admin> list = new ArrayList<Admin>(); 
		Connection conn = DbHelper.getConnection();
		String sql = "select *from admin order by cast(id as decimal)"; 
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			ResultSet rst = pst.executeQuery();
			while (rst.next()) {
				Admin admin = new Admin();
				admin.setId(rst.getString("id")); 
				admin.setName(rst.getString("name"));
				admin.setPassword(rst.getString("password"));
				admin.setStyle(rst.getString("style"));
				list.add(admin);
			}
			rst.close(); 
			pst.close(); 
		} catch (SQLException e) {
			e.printStackTrace(); 
		}
		return list; 
	}
 
	public boolean addAdmin(Admin admin) { 
		String sql = "INSERT INTO `admin`(`id`,`name`,`password`,`style`) VALUES (?,?,?,?)"; 
		Connection conn = DbHelper.getConnection();
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setString(1, admin.getId());
			pst.setString(2, admin.getName());
			pst.setString(3, admin.getPassword());
			pst.setString(4, admin.getStyle());
			int count = pst.executeUpdate();
			pst.close();
			return count > 0 ? true : false; 
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}
 
	public boolean updateAdmin(Admin admin) { 
		String sql = "UPDATE `admin` SET `name`=?,`password`=?,`style`=? WHERE `id` = ?"; 
		Connection conn = DbHelper.getConnection();
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setString(1, admin.getName());
			pst.setString(2, admin.getPassword());
			pst.setString(4, admin.getId()); 
			pst.setString(3, admin.getStyle());
			int count = pst.executeUpdate();
			pst.close(); 
			return count > 0 ? true : false; 
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}
 
	public boolean deleteAdmin(int id) { 
		String sql = "delete from admin where id = ?"; 
		Connection conn = DbHelper.getConnection();
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setInt(1, id);
			int count = pst.executeUpdate();
			pst.close();
			return count > 0 ? true : false; 
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}
 
	public Admin selectAdminById(int id) { 
		Connection conn = DbHelper.getConnection();
		String sql = "select *from admin where id = " + id;
		Admin admin = null;
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			ResultSet rst = pst.executeQuery();
			while (rst.next()) {
				admin = new Admin();
				admin.setId(rst.getString("id"));
				admin.setName(rst.getString("name"));
				admin.setPassword(rst.getString("password"));
				admin.setStyle(rst.getString("style"));
			}
			rst.close();
			pst.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return admin; 
	}
}

NO.2 entity層的物體類

即實作對資料庫欄位的set和get方法
例如:我書寫的Admin

package entity;

import java.io.Serializable;
 
public class Admin implements Serializable { 
 
	private static final long serialVersionUID = 1L;
 
	private String id;
	private String name;
	private String password;
	private String style;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	public String getStyle() {
		return style;
	}
	public void setStyle(String style) {
		this.style = style;
	}
 
}

NO.3 servlet層的實作類

即實作對資料庫記錄的增刪改查方法
例如:我書寫的AddServlet、DeleteServlet、UpdateServlet、ShowServlet

增  AddServlet.java
package servlet;
import java.io.IOException; 

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import dao.AdminDao;
import entity.Admin;

public class AddServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}
 
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		
		String id=req.getParameter("id");
		String name = req.getParameter("name");
		String password = req.getParameter("password");
		String style=req.getParameter("style");
		Admin admin = new Admin();
		admin.setId(id);
		admin.setName(name); 
		admin.setPassword(password);
		admin.setStyle(style);
		AdminDao dao = new AdminDao();
		dao.addAdmin(admin);
		req.getRequestDispatcher("ShowServlet").forward(req, resp);
	}
}
刪 DeleteServlet.java
package servlet;

import java.io.IOException; 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import dao.AdminDao;
 
public class DeleteServlet extends HttpServlet { 
 
	private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		this.doPost(req, resp);
	}
 
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String idStr = req.getParameter("id"); 
		if (idStr != null && !idStr.equals("")) {
			int id = Integer.valueOf(idStr);
			AdminDao dao = new AdminDao();
			dao.deleteAdmin(id);
		}
		req.getRequestDispatcher("ShowServlet").forward(req, resp);
	}
 
}
改 UpdateServlet.java
package servlet;

import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import dao.AdminDao;
import entity.Admin;
 
public class UpdateServlet extends HttpServlet{  
 
    private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
		String idStr = req.getParameter("id");
		if (idStr != null && !idStr.equals("")) {
			int id = Integer.valueOf(idStr);
			AdminDao dao = new AdminDao();
			Admin admin = dao.selectAdminById(id);
			req.setAttribute("admin", admin);
		}
		req.getRequestDispatcher("admin/admin_user_update.jsp").forward(req, resp);
 
	}
 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {  
    	
    	req.setCharacterEncoding("UTF-8");
    	resp.setCharacterEncoding("UTF-8");
        String username = req.getParameter("name");
        String userpwd = req.getParameter("password");
        String id = req.getParameter("id");
        String style=req.getParameter("style");
        Admin admin = new Admin();
        admin.setId(id);
        admin.setName(username);
        admin.setPassword(userpwd);
        admin.setStyle(style);
        AdminDao dao = new AdminDao();
        dao.updateAdmin(admin);
        req.getRequestDispatcher("ShowServlet").forward(req, resp);
    }
    
    
 
}
查 ShowServlet.java
package servlet;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import dao.AdminDao;
import entity.Admin;
 
public class ShowServlet extends HttpServlet { 
 
	private static final long serialVersionUID = 1L;
 
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		this.doPost(req, resp);
	}
 
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		AdminDao dao = new AdminDao();
		List<Admin> list = dao.getAllAdmin();
		req.setAttribute("list", list);
		req.getRequestDispatcher("admin/admin_user_index.jsp").forward(req, resp);
	}
}

NO.4 jsp層的頁面類

即實作搭配servlet的顯示頁面
例如:我書寫的admin_user_index、admin_user_add、admin_user_update

admin_user_index.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@page import="entity.Admin"%>
    <%@page import="dao.*" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" >
<title>顯示</title>
    <style type="text/css">
           
			form h1 {
				display: inline-block;
				width: 820px;
			}
			.check {
				padding: 30px 30px;
			}
			
			form {
				display: inline;
			}
			
			.contain {
				width: 1298px;
				border-radius: 10px;
				border: 1px #bbb solid;
				background-color: #eee;
				padding-top: 20px;
			}
			
			button {
				margin-left: 10px;
			}
			
			
			.add {
				float: right;
				margin-right: 50px;
			}
			
    </style>
</head>
<body>
<div class="contain pull-left">
    <h2>用戶賬號管理</h2>
    
    <a href="../admin/admin_user_add.jsp" target="_self"><button class="btn btn-primary add">添加用戶</button></a>
  
    <div class="pull-left">
    <table class="table table-hover">
    <thead>
        <tr>
            <td align="center">編號</td>
            <td align="center">帳號</td>
            <td align="center">密碼</td>
            <td align="center">類別</td>
            <td align="center">操作</td>
        </tr>
        
<% 
    java.util.List<Admin> adminList = new java.util.ArrayList<Admin>();
    AdminDao admindao=new AdminDao();
	adminList = admindao.getAllAdmin();	
	for(Admin admin : adminList){
%>
    <tr>
    <td align="center"><%=admin.getId()%></td>
    <td align="center"><%=admin.getName()%></td>
    <td align="center"><%=admin.getPassword() %></td>
    <td align="center"><%=admin.getStyle() %></td>
    
    <td align="center">
    <a href="..//UpdateServlet?id=<%=admin.getId() %>"
    onclick='return window.confirm("This user will be changed. Are you sure?")'><button class='btn btn-primary'>修改</button></a>
    |<a href="..//DeleteServlet?id=<%=admin.getId() %>" 
    onclick='return window.confirm("This user will be deleted. Are you sure?")'><button class='btn btn-danger'>洗掉</button></a>
    </td>
    <%} %>
  </tr> 
        
        </thead>
    </table>
    </div>
    </div>
</body>
</html>
admin_user_add.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" >
   <title>添加</title>
    <style type="text/css">
           
			form h1 {
				display: inline-block;
				width: 820px;
			}
			.check {
				padding: 30px 30px;
			}
			
			form {
				display: inline;
			}
			
			.contain {
				width: 1298px;
				border-radius: 10px;
				border: 1px #bbb solid;
				background-color: #eee;
				padding-top: 20px;
			}
			
			button {
				margin-left: 10px;
			}
			
			
			.add {
				float: right;
				margin-right: 50px;
			}
			
    </style>

  </head>
 
  <body>
  <div class="contain pull-left">
  <h2>用戶賬號添加</h2>
  
  <div class="pull-left">
  
  <form action="../AddServlet" method="post">
    <table class="table table-hover">
    <thead>
        <tr>
            <td>用戶id:</td>
            <td><input type="text" style="width: 40%" name="id" required/></td>
        </tr>
        <tr>
            <td>用戶帳號:</td>
            <td><input  type="text" style="width: 40%" name="name" required/></td>
        </tr>
        <tr>
            <td>用戶密碼:</td>
            <td><input  type="password" style="width: 40%" name="password" required/></td>
        </tr>
        <tr>
            <td>用戶類別:</td>
            <td>
            <select name="style" style="width: 40%">
            <option>管理員</option>
            <option>學生</option>
            <option>教師</option>
            </select>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input  type="submit" class='btn btn-primary' value="提交"/>
                <input  type="reset"  class='btn btn-warning' value="清空"/>
                <input  type="button"  class='btn btn-success'  value="回傳" onclick="history.go(-1)"/>
            </td>
        </tr>
        </thead>
    </table>
   </form>
   </div>
   </div>
  </body>
</html>
admin_user_update.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" >
    <title>修改</title>
    <style type="text/css">
           
			form h1 {
				display: inline-block;
				width: 820px;
			}
			.check {
				padding: 30px 30px;
			}
			
			form {
				display: inline;
			}
			
			.contain {
				width: 1298px;
				border-radius: 10px;
				border: 1px #bbb solid;
				background-color: #eee;
				padding-top: 20px;
			}
			
			button {
				margin-left: 10px;
			}
			
			
			.add {
				float: right;
				margin-right: 50px;
			}
			
    </style>
  </head>
  
  <body>
  <div class="contain pull-left">
  <h2>賬號資訊修改</h2>
  
  <div class="pull-left">
    
    <form action="UpdateServlet" method="post">
    <table class="table table-hover">
    <thead>
        <tr>
            <td>用戶編號:</td>
            <td><input  type="text"  style="width: 40%" name="id" value="${admin.id}" required/></td>
        </tr>
        
        <tr>
            <td>用戶帳號:</td>
            <td><input  type="text"  style="width: 40%" name="name" value="${admin.name}" required/></td>
        </tr>
        <tr>
            <td>用戶密碼:</td>
            <td><input  type="text"  style="width: 40%" name="password" value="${admin.password}" required/></td>
        </tr>
        <tr>
            <td>用戶類別:</td>
            <td><input  type="text"  style="width: 40%" name="style" value="${admin.style}"/></td>
        </tr>
        <tr>
            <td colspan="2">
                <input  type="submit"  class='btn btn-primary'  value="提交"/>
                <input  type="button"  class='btn btn-success'  value="回傳" onclick="history.go(-1)"/>
            </td>
        </tr>
    </thead>
    </table>
   </form>
   </div>
   </div>
  </body>
</html>

六、框架集顯示

  1. 由于當時沒有用VUE的框架,所以用的HTML框架來實作點擊后的右側重繪效果!
    在這里插入圖片描述
frame.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>管理員頁面</title>
</head>
<frameset rows="11%,*"  framespacing="10">
		<frame src="admin/Top.jsp" noresize="noresize" scrolling="yes" />
		<frameset cols="15%,*">
			<frame src="admin/Left_nav.jsp" noresize="noresize" />
			<frame src="admin/admin_user_index.jsp" name="contain" />
		</frameset>
	</frameset>
</html>
Top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>管理員</title>
<style type="text/css">
	.block{
		width: 1300px;
		height: 50px;
		background-color: #ccc;
		border-radius: 10px;
		margin: 0 auto;
	}
	h3{
		text-align: center;
		padding-top: 12px;
		font-family: "微軟雅黑";
	}
</style>
</head>
<body>
	<div class="block">
		<h3>您好!管理員,歡迎使用材料學院實驗管理系統!</h3>
	</div>
</body>
</html>
Left_nav.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
		<style type="text/css">
			ul{
				width: 200px;
				height:400px;
				float: right;
				margin-top: 30px;
				font-family: "微軟雅黑";
			}
		</style>
	</head>
	<body>
		<ul class="nav nav-pills nav-stacked">
			<li style="display: inline-block;background-color:black;font-size: 2em"><a href="admin_user_index.jsp" target="contain">用戶管理</a></li>
			<li style="display: inline-block;background-color:black;font-size: 2em"><a href="admin_experiment_index.jsp" target="contain">實驗管理</a></li>
			<li style="display: inline-block;background-color:black;font-size: 2em"><a href="admin_test_index.jsp" target="contain">題庫管理</a></li>
			<li style="display: inline-block;background-color:black;font-size: 2em"><a href="../index.jsp" target="_parent">退出系統</a></li>
			
		</ul>

	</body>
</html>

第一次進行WEB專案,寫的略顯潦草,后期有待優化!需要原始碼的朋友留下郵箱,我會直接打包發給你們,之后有時間我會上傳到GitHub上!期待大家的指教!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260585.html

標籤:其他

上一篇:【資料結構-學習路線】博文導航與思維導圖(計算機考研+期末考試===> 一步到位)

下一篇:西電OJ題解-283(C語言):數值交換

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more