一个JavaSE的金牌榜小项目,启蒙+提高【重点:Tomcat 8.5 +mysql 5.7+jdk1.8】

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 一个JavaSE的金牌榜小项目,启蒙+提高【重点:Tomcat 8.5 +mysql 5.7+jdk1.8】

注册登录微信图片_20220927124221.gif

注册

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);
        }
    }
}

就是通过链接数据库,往数据库里面刷数据(添加数据)微信图片_20220927124341.png


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、断开与数据库的连接


留言板模块image.gif

留言板

这块主要就是一个增加和查看,和前面的注册登录没有太大的区别

首先留言板就是往表中插入数据(注册)。后面的滚动的数据就是将后端取出来的数据展示在提前准备好的js上面(样式上面)


1、连接数据库

2、往相应的表中添加一些数据

3、读取表中的数据,展示在js上面(传递给js)

4、断开与数据库的连接

热搜榜

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



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


频率(词频处理):

1、读取数据库评论区的内容

2、结巴分词,词性辨析,剔除不符合规定的词语

3、遍历,计算每个人名的次数

4、将数据按照人名出现次数存入数据库


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

1、连接数据库

2、读取之前处理好的数据(按照人名出现次数存入数据库)

3、传递给js

4、关闭与数据库的连接


查询&&搜索微信图片_20220927124644.gif

查询:就是通过主键(或者某一个属性)查询,查询数据库的数据展示在页面上。

搜索:通过主键(或者某一个属性)搜索,和查询一个意思

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);
    }
}

微信图片_20220927124718.png



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
1月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
164 0
|
4月前
|
Java 应用服务中间件
多项目分接口:在同一Tomcat下使用不同的端口号访问不同的项目。
总而言之,要在同一Tomcat服务器下使用不同端口访问不同项目,关键是通过对server.xml文件的配置创建多个 `<Service>`实例和相应的虚拟主机。这种方法既实现了项目隔离,也有助于优化资源利用率。通过遵循本文的详细说明,很容易地就能满足需求实现多项目分接口。
152 38
|
4月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
288 41
|
6月前
|
Java 应用服务中间件 API
Servlet开发流程 (里面有Idea项目添加Tomcat依赖详细教程)
本文详细介绍了Servlet的开发流程,包括在IntelliJ IDEA中添加Tomcat依赖的详细教程。通过上述步骤,开发者可以快速搭建并运行一个基本的Servlet应用,理解并掌握Servlet的开发流程对于Java Web开发至关重要。希望本文能够帮助开发者顺利进行Servlet开发,提高工作效率。
504 78
|
4月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
378 17
|
4月前
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
826 16
|
4月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
113 18
|
4月前
|
关系型数据库 MySQL Java
安装和配置JDK、Tomcat、MySQL环境,以及如何在Linux下更改后端端口。
遵循这些步骤,你可以顺利完成JDK、Tomcat、MySQL环境的安装和配置,并在Linux下更改后端端口。祝你顺利!
314 11
|
4月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
125 10
|
7月前
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
222 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战

推荐镜像

更多