Tomcat?8.5?+mysql?5.7+jdk1.8開發(fā)JavaSE的金牌榜小項目

環(huán)境:Tomcat 8.5 +mysql 5.7+jdk1.8

這個作業(yè)是我們Java課程的考核項目,想在把分享給大家。菜鳥在啟航
MVC+servlet+jsp+mysql
不廢話,下面就來看看這個項目
注冊登錄

注冊
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 {
//注冊驅(qū)動(作用:告訴Java程序,即將要連接的哪個品牌的數(shù)據(jù)庫)
Class.forName("com.mysql.jdbc.Driver");
//獲取連接(表示JVM的進程和數(shù)據(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ù)庫操作對象(專門(Statement專門執(zhí)行sql語句的)
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)到用戶列表頁面
out.println("</script>");
}else{
response.getWriter().print("注冊失敗");
}
// System.out.println(count == 1 ? "保存成功" : "保存失敗");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DButil.close(conn,stmt,null);
}
}
}
就是通過鏈接數(shù)據(jù)庫,往數(shù)據(jù)庫里面刷數(shù)據(jù)(添加數(shù)據(jù))

1、通過驅(qū)動連接數(shù)據(jù)庫
2、往數(shù)據(jù)庫添加前端輸入的數(shù)據(jù),作為用戶的賬號密碼存儲
3、用戶注冊成功
4、斷開與數(shù)據(jù)庫的連接
登錄
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("進入if判斷循環(huán)了"); //TODO 進入循環(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)到管理員列表頁面
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)到用戶列表頁面
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)到用戶列表頁面
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)到用戶列表頁面
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)到用戶列表頁面
out.println("</script>");
}
}
}
就是連接數(shù)據(jù)庫,讀取數(shù)據(jù)庫里面的內(nèi)容,和前端輸入的做匹配,判斷賬號密碼是否正確。我這粗略的寫了一個管理員,可以增刪改查后臺數(shù)據(jù)(但是 是寫死的)
登陸注冊是對同一張表中數(shù)據(jù)驚醒操作。登錄是查詢操作,注冊是添加操作(俗稱刷數(shù)據(jù))
1、通過驅(qū)動連接數(shù)據(jù)庫
2、讀取表中的數(shù)據(jù)與前端賬號做對比
3、比對成功,登陸成功。比對失敗,登陸失敗。
4、斷開與數(shù)據(jù)庫的連接
留言板模塊

留言板
這塊主要就是一個增加和查看,和前面的注冊登錄沒有太大的區(qū)別
首先留言板就是往表中插入數(shù)據(jù)(注冊)。后面的滾動的數(shù)據(jù)就是將后端取出來的數(shù)據(jù)展示在提前準(zhǔn)備好的js上面(樣式上面)
1、連接數(shù)據(jù)庫
2、往相應(yīng)的表中添加一些數(shù)據(jù)
3、讀取表中的數(shù)據(jù),展示在js上面(傳遞給js)
4、斷開與數(shù)據(jù)庫的連接

熱搜榜
熱搜榜就更簡單了,只要把后臺處理過存入數(shù)據(jù)庫的數(shù)據(jù)讀取出來顯示在js上即可。

這里用到的是結(jié)巴分詞,將評論區(qū)(也就是數(shù)據(jù)庫)內(nèi)容通過結(jié)巴分詞,然后按照詞性,是人名就默認(rèn)初始值為1,其余刪掉,再遍歷分詞后的,統(tǒng)計每個人的頻率。
頻率(詞頻處理):
1、讀取數(shù)據(jù)庫評論區(qū)的內(nèi)容
2、結(jié)巴分詞,詞性辨析,剔除不符合規(guī)定的詞語
3、遍歷,計算每個人名的次數(shù)
4、將數(shù)據(jù)按照人名出現(xiàn)次數(shù)存入數(shù)據(jù)庫
詳細步驟和代碼見此篇文章 結(jié)巴分詞之熱評處理
1、連接數(shù)據(jù)庫
2、讀取之前處理好的數(shù)據(jù)(按照人名出現(xiàn)次數(shù)存入數(shù)據(jù)庫)
3、傳遞給js
4、關(guān)閉與數(shù)據(jù)庫的連接
查詢&&搜索

查詢:就是通過主鍵(或者某一個屬性)查詢,查詢數(shù)據(jù)庫的數(shù)據(jù)展示在頁面上。
搜索:通過主鍵(或者某一個屬性)搜索,和查詢一個意思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ù)庫
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語句
ps = conn.prepareStatement(sql);
//賦值 第一個問好賦值 country 國家名稱
ps.setString(1, name);
//查詢返回結(jié)果集 這個結(jié)果集只有一條記錄 ,國家名稱是主鍵 , 故只有一條數(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對象
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ù)庫
2、查詢數(shù)據(jù)交給前端頁面
3、頁面展示出來
4、斷開數(shù)據(jù)庫連接
看完用戶功能,下面我們來看看管理員功能。
登陸頁面(賬號密碼寫死):
賬號:admin
密碼:admin
時間倉促,沒寫的太好
增刪改查

就是通過對表的增刪改查來增加,刪除,修改,查詢表中的數(shù)據(jù)。
看到這不知道你們是否發(fā)現(xiàn),在寫項目的時候功能往往都是一些增刪改查,或者是由增刪改查所組成。所以學(xué)號增刪改查你就可以進行下面的學(xué)習(xí)了。所以每個項目一開始往往都是增刪改查開始的。
詳細代碼見 Java/JavaWeb 連接數(shù)據(jù)庫完成增刪改查
完整項目見:JavaSE項目
因為有些同學(xué)找我要數(shù)據(jù)庫文件,就把他放入這里數(shù)據(jù)庫數(shù)據(jù)
到此這篇關(guān)于Tomcat 8.5 +mysql 5.7+jdk1.8開發(fā)JavaSE的金牌榜小項目的文章就介紹到這了,更多相關(guān)Tomcat 8.5 mysql 5.7 jdk1.8內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
solr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測試用)
下面小編就為大家?guī)硪黄猻olr 配置中文分析器/定義業(yè)務(wù)域/配置DataImport功能方法(測試用)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
Spring Boot 與 Kotlin 上傳文件的示例代碼
這篇文章主要介紹了Spring Boot 與 Kotlin 上傳文件的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
JVM(Java虛擬機)簡介(動力節(jié)點Java學(xué)院整理)
Java虛擬機(Jvm)是可運行Java代碼的假想計算機。Java虛擬機包括一套字節(jié)碼指令集、一組寄存器、一個棧、一個垃圾回收堆和一個存儲方法域。對java jvm 虛擬機感興趣的朋友通過本文一起學(xué)習(xí)吧2017-04-04

