利用JDBC及Servlet实现对信息录入注册功能的实现

news2024/9/20 9:34:14

利用JDBC及Servlet实现对登录注册功能的实现;

1.题目要求:

    1、新建一个数据库名为(个人姓名拼音),表(学生所在城市),字段(sid:学号,sname:姓名,sage:年龄,scontent:简介)

    2、实现一个注册页面register.jsp,需包含以上信息的输入

    3、利用Servlet实现对数据的接受及JDBC的保存

    4、实现一个显示页面show.jsp。从数据库中返回以上所有数据(或EL表达式)

2.实施效果

3.实施代码

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="styles.css">
    <title>信息录入</title>
</head>
<body>
<%--<h1>学生信息注册</h1>--%>
<form action="${pageContext.request.contextPath}/register" method="post">
    <label>学号:</label>
    <input type="text" name="sid"><br>
    <label>姓名:</label>
    <input type="text" name="sname"><br>
    <label>年龄:</label>
    <input type="text" name="sage"><br>
    <label>简介:</label>
    <input type="text" name="scontent"><br>
    <input type="submit" value="注册">
</form>
</body>
</html>

style.css

body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

h1 {
    float: top;
    text-align: center;
}

form {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 300px;
    padding: 20px;
    border: 1px solid #ddd;
    border-radius: 5px;
}

input[type=text]{
    width: 100%;
    padding: 12px 20px;
    margin: 8px 0;
    border: 1px solid #ccc;
    box-sizing: border-box;
}

input[type=submit] {
    background-color: #4CAF50;
    color: white;
    padding: 14px 20px;
    margin: 8px 0;
    border: none;
    cursor: pointer;
    width: 100%;
}

input[type=submit]:hover {
    background-color: #45a049;
}

.error {
    color: red;
}

.success {
    color: green;
}

show.jsp

<%@ page import="java.sql.*" %><%--
  Created by IntelliJ IDEA.
  User: ALASIJIA
  Date: 2023/11/16
  Time: 11:29
  To change this template use File | Settings | File Templates.
--%>
<%--<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>信息展示</title>
    <style>
        body {
            font-family: Arial, sans-serif;
        }

        h1 {
            color: #333;
        }

        table {
            width: 100%;
            border-collapse: collapse;
        }

        th, td {
            border: 1px solid #333;
            padding: 8px;
        }

        th {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
<h1>学生信息</h1>
<table>
    <tr>
        <th>学号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>简介</th>
    </tr>

    <%
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3307/person_info?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        String username = "root";
        String password = "123456";

        // 建立数据库连接
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection(url, username, password);

            // 查询学生信息
            stmt = con.createStatement();
            rs = stmt.executeQuery("SELECT * FROM stu_city");

            // 遍历结果集并显示学生信息
            while (rs.next()) {
                String sid = rs.getString("sid");
                String sname = rs.getString("sname");
                String sage = rs.getString("sage");
                String scontent = rs.getString("scontent");

                out.println("<tr>");
                out.println("<td>" + sid + "</td>");
                out.println("<td>" + sname + "</td>");
                out.println("<td>" + sage + "</td>");
                out.println("<td>" + scontent + "</td>");
                out.println("</tr>");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 关闭数据库连接和资源
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    %>
</table>
</body>
</html>

JDBCServlet

package com.hjj.servlet.hw10;

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.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.TimeZone;

/**
 * @author:嘉佳 Date:2023/11/16 10:46
 **/
@WebServlet("/register")
public class JDBCServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String sid = req.getParameter("sid");
        String sname = req.getParameter("sname");
        String sage = req.getParameter("sage");
        String scontent = req.getParameter("scontent");

        Connection connection=null;
        PreparedStatement stmt=null;

        String url="jdbc:mysql://localhost:3307/person_info?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC";
        String user="root";
        String password="123456";

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            connection = DriverManager.getConnection(url, user, password);
            String sql = "INSERT INTO stu_city (sid, sname, sage, scontent) VALUES (?, ?, ?, ?)";
            stmt=connection.prepareStatement(sql);
            stmt.setInt(1, Integer.parseInt(sid));
            stmt.setString(2,sname);
            stmt.setInt(3, Integer.parseInt(sage));
            stmt.setString(4,scontent);
//            System.out.println(stmt);

            stmt.executeUpdate();
//            if (rs>0)
//                resp.sendRedirect("show.jsp");
            resp.sendRedirect("hw10/show.jsp");
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }finally {
            if(stmt!=null){
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection!=null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1229897.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过cpolar内网穿透工具实现远程访问本地postgreSQL

文章目录 前言1. 安装postgreSQL2. 本地连接postgreSQL3. Windows 安装 cpolar4. 配置postgreSQL公网地址5. 公网postgreSQL访问6. 固定连接公网地址7. postgreSQL固定地址连接测试 前言 PostgreSQL是一个功能非常强大的关系型数据库管理系统&#xff08;RDBMS&#xff09;,下…

vue中使用echarts渐变柱状图 Cannot read properties of undefined (reading ‘graphic‘)解决方法

在使用渐变颜色时报错&#xff0c;Cannot read properties of undefined (reading ‘graphic’) echarts也下载了&#xff0c;引入了&#xff0c;就是报错&#xff0c;用不了new charts&#xff0c; 结果换了一个版本号就可以了&#xff0c;本来用的"echarts": "…

win10家庭版系统远通过一根网线程连接另一台机器

用网线连接两个机器 打开cmd命令行 输入ipconfig&#xff0c;查看 复制 IPv4地址 打开 远程桌面 程序 点击连接 输入在另外一机器设置好的用户名和密码即可

CMMI之项目管理类核心框架

项目管理类过程域涵盖了与项目的计划、监督和控制相关的项目管理活动。 CMMI-DEV 中的七个项目管理类过程域是&#xff1a; • 集成项目管理&#xff08;Integrated Project Management&#xff0c; IPM&#xff09; • 项目监督与控制&#xff08;Project Monitoring and Cont…

【Ant Design合集】自用总结

a-input 1. search 与 pressEnter 的设计区别 search 是与a-input-search绑定一起的&#xff0c;点击按钮和回车触发事件&#xff0c;关联有&#xff1a; enter-button&#xff1a;是否确认按钮&#xff08;与addon自定义按钮冲突&#xff09; loading&#xff1a;搜索loadin…

简单好用的轻量级思维导图:ClickCharts 激活for mac

ClickCharts是一款流程图和流程图绘制软件&#xff0c;它提供了直观的界面和丰富的工具&#xff0c;帮助用户轻松创建和编辑各种类型的图表和流程图。 以下是ClickCharts软件的一些主要功能和特点&#xff1a; 流程图绘制&#xff1a;ClickCharts允许用户创建各种类型的流程图…

直流充电桩测试仪的作用

直流充电桩测试仪主要用于对充电桩进行全面的功能测试和性能评估&#xff0c;以确保其正常运行和安全使用。直流充电桩测试仪可以对充电桩的各个功能进行测试&#xff0c;包括连接性测试、通信测试、充电功率测试等。通过测试可以检测充电桩是否正常工作&#xff0c;是否能够正…

【2021集创赛】NI杯三等奖:基于IECUBE-3100的高精度数模转换器设计及自动化测试方案

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 杯赛题目&#xff1a;DAC芯片测试 参赛要求&#xff1a;本科生组 赛题内容&#xff1a; NIC公司最近正在竞争一个8bit DAC芯片设计的订单机会&#xff0c;需要按照甲方需求尽快提交芯片的设…

基于SSM的在线测试管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

Revive开发商加入VR开源标准OpenXR

导读作为一款能让HTC Vive用户玩到Oculus平台游戏的软件&#xff0c;它的开发商CrossVR今日宣布即将加盟为VR和AR应用程序开源组织&#xff0c;即OpenXR。 由Khronos Group引领的OpenXR旨在创建一个标准化且免版税的应用程序编程接口&#xff08;API&#xff09;&#xff0c;该…

服务号转为订阅号可以吗

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;很多小伙伴想把服务号改为订阅号&#xff0c;但是不知道改了之后具体有什么作用&#xff0c;今天跟大家具体讲解一下。首先我们知道服务号一个月只能发四次文章&#xff0c;但是订阅号每天都可以发…

设置指定时间之前的时间不可选

1、el-date-picker设置今天之前的日期不可选 <el-date-picker style"width: 100%" type"date" v-model"form.resetDate" align"right" :value-format"yyyy-MM-dd" placeholder"选择调整日期":disabled"t…

1.索引的本质

索引是帮组MYSQL高效获取数据的排好序的数据结构 二叉树 二叉树是树节点的度不大于2的有序树。它是一种最简单最重要的树。 二叉树的左节点始终小于父节点。二叉树的有节点始终大于等于父节点 对于单边递增的数据&#xff0c;二叉树会变成链表的形式。这个时候查询不会减少次数…

Vatee万腾外汇市场新力量:vatee科技决策力

在当今数字化时代&#xff0c;Vatee万腾崭露头角&#xff0c;以其强大的科技决策力进军外汇市场&#xff0c;成为该领域的新力量。这一新动向将不仅塑造外汇市场的未来&#xff0c;也展现Vatee科技决策力在金融领域的引领作用。 Vatee万腾带着先进的科技决策力进入外汇市场&…

ChatGPT 从零完全上手实操指南!

那么&#xff0c;在正式开始前&#xff0c;我这里有必要说明一下&#xff1a; 关于 GPT 的基本面介绍&#xff0c;以及怎么注册&#xff0c;这些搜索引擎一搜一大把的东西&#xff0c;我们这里不浪费口舌。 PS&#xff1a;为了照顾一些无特殊环境的同学&#xff0c;文中也会提供…

大批量合并识别成一个表或文档的方法

金鸣表格文字识别系统功能强大&#xff0c;其中可以将上百张图片或上百页PDF中的表格文字合并识别成一个表格或文档的功能尤其受到广大用户的欢迎&#xff0c;那应该怎么操作呢&#xff1f; 一、打开金鸣表格文字识别软件&#xff0c;点击左上角的“表格识别”&#xff0c;选择…

(亲测有效)VMware Windows虚拟机扩容

场景&#xff1a; VMware安装了一个windows系统&#xff0c;现在windows系统剩余空间不足&#xff0c;需要扩容。 解决步骤&#xff1a; 关闭虚拟机&#xff0c;状态如下&#xff1a; 2、点击编辑虚拟机设置-》扩展 3、输入最大磁盘大小-》点击扩展 4、等待成功后&#xff0c…

Django 路由配置(二)

一、路由 就是根据用户请求的URL链接来判断对应的出来程序&#xff0c;并返回处理结果&#xff0c;也是就是URL和django的视图建立映射关系. 二、Django请求页面的步骤 1、首先Django确定要使用的根URLconf模块&#xff0c;通过ROOT_URLCONF来设置&#xff0c;在settings.py配置…

spring-boot-maven-plugin插件 —— 打包时减小jar包的大小方法

Maven 在打包时会将所依赖的 jar 包全部打包进去&#xff0c;包含了所有的依赖和资源文件&#xff0c;就会导致打出来的包比较大。如果再上传服务器&#xff0c;那么耗时特别长。 由于依赖包变化小&#xff0c;占用空间大&#xff0c;而且大部分情况是添加一次后&#xff0c;就…

MPN在QM中的使用

此文章为机器翻译SAP BLOG 文章&#xff0c;原文地址&#xff1a;Manufacturer Part Profile in QM | SAP Blogs 目的&#xff1a;–材料管理 (MM) 组件支持从不同供应商采购制造商特定的零件或材料。如果您实施制造商零件编号 (MPN) 处理功能&#xff0c;您还可以在质量管理 …