Tomcat?8.5?+mysql?5.7+jdk1.8開(kāi)發(fā)JavaSE的金牌榜小項(xiàng)目
環(huán)境:Tomcat 8.5 +mysql 5.7+jdk1.8
這個(gè)作業(yè)是我們Java課程的考核項(xiàng)目,想在把分享給大家。菜鳥在啟航
MVC+servlet+jsp+mysql
不廢話,下面就來(lái)看看這個(gè)項(xiàng)目
注冊(cè)登錄
注冊(cè)
package com.bjpowernode.javaweb.servlet; import com.bjpowernode.javaweb.utils.DButil; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; @WebServlet(name = "register", value = "/register") public class Register extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String Myname = request.getParameter("registerName"); String Mypassword =request.getParameter("registerPwd"); response.setContentType("text/html"); response.setCharacterEncoding("GBK"); Connection conn = null; PreparedStatement stmt = null; try { //注冊(cè)驅(qū)動(dòng)(作用:告訴Java程序,即將要連接的哪個(gè)品牌的數(shù)據(jù)庫(kù)) Class.forName("com.mysql.jdbc.Driver"); //獲取連接(表示JVM的進(jìn)程和數(shù)據(jù)庫(kù)進(jìn)程之間的通道打開(kāi)了,這屬于進(jìn)程之間的通信,重量級(jí)的,使用完之后一定要關(guān)閉) String url = "jdbc:mysql://127.0.0.1:3306/book"; String user = "root"; String password = "123456"; conn = DriverManager.getConnection(url,user,password); //獲取數(shù)據(jù)庫(kù)操作對(duì)象(專門(Statement專門執(zhí)行sql語(yǔ)句的) stmt = conn.prepareStatement("INSERT INTO user VALUES (?,?)"); stmt.setString(1,Myname); stmt.setString(2,Mypassword); int count = stmt.executeUpdate(); if(count==1){ PrintWriter out = response.getWriter(); out.println("<script>"); out.println("alert('Registered successfully');"); out.println("location.href='index.html'");//跳轉(zhuǎn)到用戶列表頁(yè)面 out.println("</script>"); }else{ response.getWriter().print("注冊(cè)失敗"); } // System.out.println(count == 1 ? "保存成功" : "保存失敗"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { DButil.close(conn,stmt,null); } } }
就是通過(guò)鏈接數(shù)據(jù)庫(kù),往數(shù)據(jù)庫(kù)里面刷數(shù)據(jù)(添加數(shù)據(jù))
1、通過(guò)驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)
2、往數(shù)據(jù)庫(kù)添加前端輸入的數(shù)據(jù),作為用戶的賬號(hào)密碼存儲(chǔ)
3、用戶注冊(cè)成功
4、斷開(kāi)與數(shù)據(jù)庫(kù)的連接
登錄
package com.bjpowernode.javaweb.servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.Map; @WebServlet(name = "Login", value = "/Login") public class Login extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String username = request.getParameter("userName"); String password = request.getParameter("userPwd"); Map<String,String> map = Mysql.user(); response.setContentType("text/html"); response.setCharacterEncoding("GBK"); if(map.containsKey(username)) { System.out.println("進(jìn)入if判斷循環(huán)了"); //TODO 進(jìn)入循環(huán)了 String PWD = map.get(username); System.out.println(PWD);//TODO 有值 if (PWD.equals("admin")) { if (password.equals("admin")){ out.println("<script>"); out.println("alert('Log in successfully');"); out.println("location.href='Take_01'");//跳轉(zhuǎn)到管理員列表頁(yè)面 out.println("</script>"); } else{ out.println("<script>"); out.println("alert('Dear, the account password is incorrect, please input it again');"); out.println("location.href='index.html'");//跳轉(zhuǎn)到用戶列表頁(yè)面 out.println("</script>"); } } else if(PWD.equals(password)){ out.println("<script>"); out.println("alert('Log in successfully');"); out.println("location.href='Take_02'");//跳轉(zhuǎn)到用戶列表頁(yè)面 out.println("</script>"); } else{ out.println("<script>"); out.println("alert('Dear, the account password is incorrect, please input it again');"); out.println("location.href='index.html'");//跳轉(zhuǎn)到用戶列表頁(yè)面 out.println("</script>"); // System.out.println("美猴王"); // response.getWriter().println("齊天大圣"); } } else{ out.println("<script>"); out.println("alert('This account is not registered, dear, please register first?。?!');"); out.println("location.href='index.html'");//跳轉(zhuǎn)到用戶列表頁(yè)面 out.println("</script>"); } } }
就是連接數(shù)據(jù)庫(kù),讀取數(shù)據(jù)庫(kù)里面的內(nèi)容,和前端輸入的做匹配,判斷賬號(hào)密碼是否正確。我這粗略的寫了一個(gè)管理員,可以增刪改查后臺(tái)數(shù)據(jù)(但是 是寫死的)
登陸注冊(cè)是對(duì)同一張表中數(shù)據(jù)驚醒操作。登錄是查詢操作,注冊(cè)是添加操作(俗稱刷數(shù)據(jù))
1、通過(guò)驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)
2、讀取表中的數(shù)據(jù)與前端賬號(hào)做對(duì)比
3、比對(duì)成功,登陸成功。比對(duì)失敗,登陸失敗。
4、斷開(kāi)與數(shù)據(jù)庫(kù)的連接
留言板模塊
留言板
這塊主要就是一個(gè)增加和查看,和前面的注冊(cè)登錄沒(méi)有太大的區(qū)別
首先留言板就是往表中插入數(shù)據(jù)(注冊(cè))。后面的滾動(dòng)的數(shù)據(jù)就是將后端取出來(lái)的數(shù)據(jù)展示在提前準(zhǔn)備好的js上面(樣式上面)
1、連接數(shù)據(jù)庫(kù)
2、往相應(yīng)的表中添加一些數(shù)據(jù)
3、讀取表中的數(shù)據(jù),展示在js上面(傳遞給js)
4、斷開(kāi)與數(shù)據(jù)庫(kù)的連接
熱搜榜
熱搜榜就更簡(jiǎn)單了,只要把后臺(tái)處理過(guò)存入數(shù)據(jù)庫(kù)的數(shù)據(jù)讀取出來(lái)顯示在js上即可。
這里用到的是結(jié)巴分詞,將評(píng)論區(qū)(也就是數(shù)據(jù)庫(kù))內(nèi)容通過(guò)結(jié)巴分詞,然后按照詞性,是人名就默認(rèn)初始值為1,其余刪掉,再遍歷分詞后的,統(tǒng)計(jì)每個(gè)人的頻率。
頻率(詞頻處理):
1、讀取數(shù)據(jù)庫(kù)評(píng)論區(qū)的內(nèi)容
2、結(jié)巴分詞,詞性辨析,剔除不符合規(guī)定的詞語(yǔ)
3、遍歷,計(jì)算每個(gè)人名的次數(shù)
4、將數(shù)據(jù)按照人名出現(xiàn)次數(shù)存入數(shù)據(jù)庫(kù)
詳細(xì)步驟和代碼見(jiàn)此篇文章 結(jié)巴分詞之熱評(píng)處理
1、連接數(shù)據(jù)庫(kù)
2、讀取之前處理好的數(shù)據(jù)(按照人名出現(xiàn)次數(shù)存入數(shù)據(jù)庫(kù))
3、傳遞給js
4、關(guān)閉與數(shù)據(jù)庫(kù)的連接
查詢&&搜索
查詢:就是通過(guò)主鍵(或者某一個(gè)屬性)查詢,查詢數(shù)據(jù)庫(kù)的數(shù)據(jù)展示在頁(yè)面上。
搜索:通過(guò)主鍵(或者某一個(gè)屬性)搜索,和查詢一個(gè)意思select XX from 表明 where 屬性=XX;
package com.bjpowernode.javaweb.servlet; import com.bipowernode.pojo.Olypic; import com.bjpowernode.javaweb.utils.DButil; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.sql.*; import java.util.ArrayList; import java.util.List; @WebServlet(name = "select",value = "/select") public class Select extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); String name = request.getParameter("select_name"); System.out.println(name); //連接數(shù)據(jù)庫(kù) Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; List<Olypic> olypicList=new ArrayList<>(); try { Class.forName("com.mysql.jdbc.Driver"); //獲取連接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mofa", "root", "123456"); String sql = "select * from medals_table where Country=?"; //編譯sql語(yǔ)句 ps = conn.prepareStatement(sql); //賦值 第一個(gè)問(wèn)好賦值 country 國(guó)家名稱 ps.setString(1, name); //查詢返回結(jié)果集 這個(gè)結(jié)果集只有一條記錄 ,國(guó)家名稱是主鍵 , 故只有一條數(shù)據(jù) rs = ps.executeQuery(); if (rs.next()) { String country = rs.getString("Country"); String Glod = rs.getString("Glod_num"); String Silver = rs.getString("Silver_num"); String Copper = rs.getString("Copper_num"); String id=rs.getString("id"); String logo=rs.getString("logo"); System.out.println("這是數(shù)據(jù)"); System.out.println(country); System.out.println("Glod"); // String Sum=rs.getString("Sum"); int G = Integer.valueOf(Glod).intValue(); int S = Integer.valueOf(Silver).intValue(); int C = Integer.valueOf(Copper).intValue(); int A=G+S+C; String Sum=String.valueOf(A); //將數(shù)據(jù)封裝程Java對(duì)象 Olypic olpic=new Olypic(); olpic.setCountry(country); olpic.setGlod_num(Glod); olpic.setSilver_num(Silver); olpic.setCopper_num(Copper); olpic.setId(id); olpic.setSum(Sum); olpic.setLogo(logo); // TODO 將數(shù)據(jù)放入上面定義好的容器 olypicList.add(olpic); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { DButil.close(conn, ps, rs); } request.setAttribute("olypicList",olypicList); request.getRequestDispatcher("./take_03.jsp").forward(request,response); } }
1、連接數(shù)據(jù)庫(kù)
2、查詢數(shù)據(jù)交給前端頁(yè)面
3、頁(yè)面展示出來(lái)
4、斷開(kāi)數(shù)據(jù)庫(kù)連接
看完用戶功能,下面我們來(lái)看看管理員功能。
登陸頁(yè)面(賬號(hào)密碼寫死):
賬號(hào):admin
密碼:admin
時(shí)間倉(cāng)促,沒(méi)寫的太好
增刪改查
就是通過(guò)對(duì)表的增刪改查來(lái)增加,刪除,修改,查詢表中的數(shù)據(jù)。
看到這不知道你們是否發(fā)現(xiàn),在寫項(xiàng)目的時(shí)候功能往往都是一些增刪改查,或者是由增刪改查所組成。所以學(xué)號(hào)增刪改查你就可以進(jìn)行下面的學(xué)習(xí)了。所以每個(gè)項(xiàng)目一開(kāi)始往往都是增刪改查開(kāi)始的。
詳細(xì)代碼見(jiàn) Java/JavaWeb 連接數(shù)據(jù)庫(kù)完成增刪改查
完整項(xiàng)目見(jiàn):JavaSE項(xiàng)目
因?yàn)橛行┩瑢W(xué)找我要數(shù)據(jù)庫(kù)文件,就把他放入這里數(shù)據(jù)庫(kù)數(shù)據(jù)
到此這篇關(guān)于Tomcat 8.5 +mysql 5.7+jdk1.8開(kāi)發(fā)JavaSE的金牌榜小項(xiàng)目的文章就介紹到這了,更多相關(guān)Tomcat 8.5 mysql 5.7 jdk1.8內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java使用MySQL實(shí)現(xiàn)連接池代碼實(shí)例
這篇文章主要介紹了Java使用MySQL實(shí)現(xiàn)連接池代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03solr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測(cè)試用)
下面小編就為大家?guī)?lái)一篇solr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測(cè)試用)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09Spring Boot 與 Kotlin 上傳文件的示例代碼
這篇文章主要介紹了Spring Boot 與 Kotlin 上傳文件的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01SpringSecurity 測(cè)試實(shí)戰(zhàn)
這篇文章主要介紹了SpringSecurity 測(cè)試實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Spring?Boot實(shí)現(xiàn)文件上傳下載
這篇文章主要為大家詳細(xì)介紹了Spring?Boot實(shí)現(xiàn)文件上傳下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08詳解Spring 中如何控制2個(gè)bean中的初始化順序
本篇文章主要介紹了Spring 中如何控制2個(gè)bean中的初始化順序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10JVM(Java虛擬機(jī))簡(jiǎn)介(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
Java虛擬機(jī)(Jvm)是可運(yùn)行Java代碼的假想計(jì)算機(jī)。Java虛擬機(jī)包括一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。對(duì)java jvm 虛擬機(jī)感興趣的朋友通過(guò)本文一起學(xué)習(xí)吧2017-04-04