Tomcat 8.5 +mysql 5.7+jdk1.8开发JavaSE的金牌榜小项目

目录
  • 注册登录
    • 注册
    • 登录
  • 留言板模块
    • 留言板
    • 热搜榜
  • 查询&&搜索
  • 增删改查

环境:Tomcat 8.5 +mysql 5.7+jdk1.8

这个作业是我们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 {
            //注册驱动(作用:告诉Java程序,即将要连接的哪个品牌的数据库)
            Class.forName("com.mysql.jdbc.Driver");
            //获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭)
            String url = "jdbc:mysql://127.0.0.1:3306/book";
            String user = "root";
            String password = "123456";
            conn = DriverManager.getConnection(url,user,password);
            //获取数据库操作对象(专门(Statement专门执行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'");//跳转到用户列表页面
                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);
        }
    }
}

就是通过链接数据库,往数据库里面刷数据(添加数据)

1、通过驱动连接数据库
2、往数据库添加前端输入的数据,作为用户的账号密码存储
3、用户注册成功
4、断开与数据库的连接

登录

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判断循环了");  //TODO  进入循环了
            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'");//跳转到管理员列表页面
                    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'");//跳转到用户列表页面
                    out.println("</script>");
                }
            }
            else if(PWD.equals(password)){
                out.println("<script>");
                out.println("alert('Log in successfully');");
                out.println("location.href='Take_02'");//跳转到用户列表页面
                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'");//跳转到用户列表页面
                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'");//跳转到用户列表页面
            out.println("</script>");
        }
    }
}

就是连接数据库,读取数据库里面的内容,和前端输入的做匹配,判断账号密码是否正确。我这粗略的写了一个管理员,可以增删改查后台数据(但是 是写死的)

登陆注册是对同一张表中数据惊醒操作。登录是查询操作,注册是添加操作(俗称刷数据)

1、通过驱动连接数据库
2、读取表中的数据与前端账号做对比
3、比对成功,登陆成功。比对失败,登陆失败。
4、断开与数据库的连接

留言板模块

留言板

这块主要就是一个增加和查看,和前面的注册登录没有太大的区别
首先留言板就是往表中插入数据(注册)。后面的滚动的数据就是将后端取出来的数据展示在提前准备好的js上面(样式上面)

1、连接数据库
2、往相应的表中添加一些数据
3、读取表中的数据,展示在js上面(传递给js)
4、断开与数据库的连接

热搜榜

热搜榜就更简单了,只要把后台处理过存入数据库的数据读取出来显示在js上即可。

这里用到的是结巴分词,将评论区(也就是数据库)内容通过结巴分词,然后按照词性,是人名就默认初始值为1,其余删掉,再遍历分词后的,统计每个人的频率。

频率(词频处理):
1、读取数据库评论区的内容
2、结巴分词,词性辨析,剔除不符合规定的词语
3、遍历,计算每个人名的次数
4、将数据按照人名出现次数存入数据库

详细步骤和代码见此篇文章 结巴分词之热评处理

1、连接数据库
2、读取之前处理好的数据(按照人名出现次数存入数据库)
3、传递给js
4、关闭与数据库的连接

查询&&搜索

查询:就是通过主键(或者某一个属性)查询,查询数据库的数据展示在页面上。
搜索:通过主键(或者某一个属性)搜索,和查询一个意思
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);
        //连接数据库
        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);
            //查询返回结果集    这个结果集只有一条记录  ,国家名称是主键  ,  故只有一条数据
            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("这是数据");
                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);
                //将数据封装程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 将数据放入上面定义好的容器
                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、连接数据库
2、查询数据交给前端页面
3、页面展示出来
4、断开数据库连接

看完用户功能,下面我们来看看管理员功能。
登陆页面(账号密码写死):
账号:admin
密码:admin
时间仓促,没写的太好

增删改查

就是通过对表的增删改查来增加,删除,修改,查询表中的数据。
看到这不知道你们是否发现,在写项目的时候功能往往都是一些增删改查,或者是由增删改查所组成。所以学号增删改查你就可以进行下面的学习了。所以每个项目一开始往往都是增删改查开始的。

详细代码见 Java/JavaWeb 连接数据库完成增删改查

完整项目见:JavaSE项目

因为有些同学找我要数据库文件,就把他放入这里数据库数据

到此这篇关于Tomcat 8.5 +mysql 5.7+jdk1.8开发JavaSE的金牌榜小项目的文章就介绍到这了,更多相关Tomcat 8.5 mysql 5.7 jdk1.8内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java9版本新特性同一个Jar支持多JDK版本运行

    目录 一.基本使用方法 二.真实的例子 java8代码 Java9代码 编译 运行Mainclass 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右. java9第一篇-可以在interface中定义私有方法了java9第二篇-Java9改进try-with-resources语法 本文内容:在Java 9增强了J

  • Java JDK内置常用接口和深浅拷贝

    目录 前言 一.comparable接口 二.Cloneable接口 三.深浅拷贝 1.浅拷贝 2.深拷贝 前言 在Java中,我们使用接口优先原则,当一个场景可以使用抽象类也可以使用接口定义时,优先考虑使用接口,因为接口更灵活,使用抽象类必须满足is a 的继承树关系,而且是单继承,接口相比于抽象类更加的灵活,本篇我们就一起看看JDK中的常用内置接口. 一.comparable接口 java.lang.Comperable: 当一个类实现了Comperable接口,就表示该类具备了可比较的能力

  • 2021最新Java JDK1.8的安装超详细教程

    目录 一.JDK下载 1.官网下载 2.网盘下载 二.安装步骤 1.开始安装: 2.修改默认目录,点击下一步. 3.会提示安装jre,同样修改默认目录,新建目录名如图: 4.继续点击下一步,点击关闭,完成安装. 三.搭配环境变量 1.Path变量 jdk1.8又称jdk8.0,是目前相对比较稳定的版本,不建议下载最新的jdk版本,因为最新版的jdk不稳定,在Java的学习中可能会出现各种各样的问题. 一.JDK下载 1.官网下载 点击官网下载地址往下划,找到自己电脑相对应的JDK,点击下载. 如

  • 教你用JDK编译Java文件的方法

    1.下载并安装好JDK百度网盘链接: 链接: https://pan.baidu.com/s/1j_TSvjHgw3jEBGaMk0LQ8w?pwd=pdp9 提取码: pdp9 2.设置环境变量 第一步:将JDK的安装路径bin进行复制,如:D:\Java\jdk1.8.0_221\bin 第二步:在高级选项卡中,点击环境变量按钮---->在系统变量中找Path---->选中Path点击编辑---->点击新建---->按Ctrl+V---->确定 3:打开记事本编写Java

  • 解决IDEA JDK9没有module-info.java的问题

    目录 IDEA JDK9没有module-info.java问题 module-info.java文件 IDEA JDK9没有module-info.java问题 1. 创建一个maven工程 2. 配置一下项目的编译环境 注意:必须声明为jdk9及其以后的版本,不然new中是没有module-info.java这个选项 下面是使用jdk8的时候,没有module-info.java这个选项 使用jdk10的时候,就有module-info.java这个选项 <build> <plugi

  • 关于java中多个JDK和切换版本介绍

    目录 前言 一.下载安装JDK 二.配置JDK 总结 前言 安装多个JDK并随时切换版本 一.下载安装JDK 我这里采用JDK8和JDK11两个版本进行示范官网下载:https://www.oracle.com/java/technologies/downloads/下载之后进行安装即可 二.配置JDK 1.系统变量 在系统变量中新建变量,变量名JAVA_HOME,JAVA_HOME11,JAVA_HOME8如图所示: 这里JAVA_HOME11,JAVA_HOME8的变量值是你安装JDK8或J

  • 详解java接口(interface)在不同JDK版本中的变化

    JDK1.7以及以前: 接口(interface)在JDK7及之前的版本对接口的要求: 接口定义: 使用 interface 关键字 . 接口中的 所有 成员变量 都默认是由 public static final 修饰的. 接口中的 所有方法 都默认是由 public abstract 修饰的.也可以使用 protected ,但不能用 private . 接口中的 所有方法 都没有方法体. 接口没有构造方法.因为构造方法用于创建对象. 实现接口的类 必须提供接口中所有方法的具体实现内容. 可

  • Java16 JDK安装并设置环境变量的方法步骤

    本文将在win10的环境下安装jdk16.配置环境变量. 1.下载JDK (1)打开官网下载最新的JDK(Java SE Development Kit, JDK) 如果官网打开过慢可以试试本地下载:下载地址 (2)选择对应的版本 (3)双击下载的exe进行安装 在安装过程中可以改变安装位置也可以不改变,但是安装的位置一定要记住!!!!这关系到后面设置环境变量.然后安装过程中其它的选项就next~ (4)配置环境变量 一共需要配置3个系统环境变量. 此电脑–属性–高级系统设置–环境变量-新建系统

  • Java中的OpenJDK使用原理

    目录 Java和OpenJDK的特殊之处是什么? OpenJDK是如何产生的 OpenJDK的工作原理和优点是什么 Java语言与体系结构无关,JVM是可移植的 Java很简单,面向对象,大家都很熟悉 Java是健壮和安全的 Java是高性能的 OpenJDK是如何开发的 OpenJDK作为太空竞赛的基础 OpenJDK的升级过程 错误修复 新功能的实施和过时功能的弃用 主要分支机构以外的项目 规范变更 释放节奏 为什么开源优于闭源 为什么有那么多OpenJDK供应商和实现? 结论 前言: Op

  • java底层JDK Logging日志模块处理细节深入分析

    日志输出是所有系统必备的,很多开发人员可能因为常常使用log4j而忽视了JDK logging模块,两者之间是否有联系?是怎样的联系?JDK logging处理细节是怎么样的?本周抛砖引玉,先分析JDK logging机制. 从例子开始 JDK Logging的使用很简单,如下代码所示,先使用Logger类的静态方法getLogger就可以获取到一个logger,然后在任何地方都可以通过获取到的logger进行日志输入.比如类似logger.info("Main running.")的

随机推荐