资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

课程《JavaWeb基础框架程序设计》考试题下篇——数据库与表单操作用题(人事管理平台的添加员工档案信息的操作题)

Java 更新时间: 发布时间: 计算机考试归档 最新发布

课程《JavaWeb基础框架程序设计》考试题下篇——数据库与表单操作用题(人事管理平台的添加员工档案信息的操作题)

文章目录

  • 📋前言
  • 🎯第三题(40分)
  • 🎯报错以及解决方法
  • 📝最后

📋前言

这篇文章是大学课程《JavaWeb基础框架程序设计》考试题目的内容,包括了原题和答案。题目只包括了三道编程题,分值为30分、30分和40分,这篇文章继上一篇(课程《JavaWeb基础框架程序设计》考试题上篇——基础应用题(计算应用、水仙花数)),介绍40分的那题,以及代码编写中出现的报错和解决方法。


🎯第三题(40分)

添加员工档案:添加员工档案包括两个 JSP 页面。其中 addEmployee1.jsp 页面负责显示添加界面,addEmployee2.jsp 负责添加新进员工档案信息到指定数据库。具体说明如下:

1)添加员工档案信息页面 addEmployee.jsp(该页面已给出)运行界面如图2-1所示,其表单属性“action=addEmployee2.jsp”,指定本页面的表单由addEmployee2.jsp负责处理。

2)addEmployee2.jsp(该页面需要完成)负责获取 addEmployee1.jsp 页面表单元素值,将新进员工档案信息添加到指定数据库 hrms 当中。

提供的 addEmployee.jsp 页面代码如下。

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>人事管理平台	
    查询员工档案信息
员工编号:     
姓        名:     
性        别:     
所属部门:     
出生日期:     
籍        贯:     
婚姻状况:     
身份证号:     
政治面貌:     
民       族:     
学       历:     
专        业:     
毕业日期:     
毕业院校:     
职        称:     
在职情况:     
用工形式:     
个人简历:     
      


addEmployee2.jsp 页面解答如下。

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@ page import="java.sql.*" %><%// 获取表单中提交的参数		request.setCharacterEncoding("utf-8"); // 设置编码格式        String EmployeeID = request.getParameter("employeeid");        String UserName  = request.getParameter("username");         String Sex = request.getParameter("sex");         String Branch = request.getParameter("branch");        String Birthday = request.getParameter("birthday");         String NativePlace = request.getParameter("nativeplace");         String Marriage = request.getParameter("marriage");         String IdentityID = request.getParameter("identityid");         String Politics = request.getParameter("politics");         String Folk = request.getParameter("folk");        String Education = request.getParameter("education");        String Department = request.getParameter("department");         String GraduateDate = request.getParameter("graduatedate");         String University = request.getParameter("university");         String Position = request.getParameter("position");         String Incumbency = request.getParameter("incumbency");        String IncumbencyType = request.getParameter("incumbencytype");         String Resume = request.getParameter("resume");// 判断是否有必填项为空if (EmployeeID == null || EmployeeID.equals("") ||	UserName == null || UserName.equals("")) {    out.println("员工编号和姓名为必填项");} else {    // 数据库连接信息    String driver = "com.mysql.cj.jdbc.Driver";    String url = "jdbc:mysql://localhost:3306/hrms?useSSL=false&serverTimezone=UTC";    String user = "root";    String password = "123456";    Connection conn = null;    try {        // 加载驱动程序        Class.forName(driver);        // 创建数据库连接        conn = DriverManager.getConnection(url, user, password);        // 构建插入 SQL 语句		String sql = "INSERT INTO employee (EmployeeID,UserName,Sex,Branch,Birthday,NativePlace,Marriage,IdentityID,Politics,Folk,Education,Department,GraduateDate,University,Position,Incumbency,IncumbencyType,Resume) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";        // 创建 PreparedStatement 对象,用于执行 SQL 语句        PreparedStatement pstmt = conn.prepareStatement(sql);        // 设置参数值        pstmt.setString(1, EmployeeID);        pstmt.setString(2, UserName);        pstmt.setString(3, Sex);        pstmt.setString(4, Branch);        pstmt.setString(5, Birthday);        pstmt.setString(6, NativePlace);        pstmt.setString(7, Marriage);        pstmt.setString(8, IdentityID);        pstmt.setString(9, Politics);        pstmt.setString(10, Folk);        pstmt.setString(11, Education);        pstmt.setString(12, Department);        pstmt.setString(13, GraduateDate);        pstmt.setString(14, University);        pstmt.setString(15, Position);        pstmt.setString(16, Incumbency);        pstmt.setString(17, IncumbencyType);		pstmt.setString(18, Resume);        // 执行 SQL 语句        pstmt.executeUpdate();        out.println("数据插入成功");        // 关闭 PreparedStatement 对象        pstmt.close();    } catch (Exception e) {        e.printStackTrace();        out.println("数据库操作失败:" + e.getMessage());    } finally {        // 关闭数据库连接        try {            if (conn != null) {                conn.close();            }        } catch (SQLException se) {            se.printStackTrace();        }    }}%>

数据库表结构如下(需要SQL文件私信我或评论区留言)。

运行结果如下。填好相对应的数据。

点击提交,数据插入成功。

然后检查数据中是否有新插入的数据。

具体逻辑如下:

  • 首先通过 request.getParameter()
    方法获取表单中提交的参数,包括员工编号、姓名、性别、所属部门、出生年月、籍贯、婚姻状况、身份证号、政治面貌、民族、学历、毕业时间、毕业院校、职位、任职状态、用工类型和个人简历。

  • 然后判断必填项是否为空,如果为空则输出提示信息;否则继续下一步操作。

  • 接着使用 JDBC API 连接到 MySQL 数据库,首先加载 MySQL 驱动程序,并构建插入 SQL 语句。

  • 创建 PreparedStatement 对象,用于执行 SQL 语句,并设置参数值。

  • 执行 SQL 语句并提交事务,输出操作结果。

  • 最后关闭连接对象和 PreparedStatement 对象。


🎯报错以及解决方法

一年多没写 JavaWeb 了,在写这个题目的时候遇到了很报错,与其说是在写题,不如说是在处理 bug。题目很简单,一会功夫就写完了要求的功能了,但是数据库和 jdbc 的连接出现了问题,因为不是学校的机房环境,而且老师给的包是三点几的远古版本,导致一直报错,和产生其他相对应的错误。最后换了个八点多的版本,这些问题就挥之而去了,最后也是成功的运行了。接下来我们来看看出现报错有哪些(因为现在报错已经全部处理完了,所以得重新走一遍案发现场了)。

报错1️⃣:The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one time zone

📚解决方法:
首先我们要知道出现这个报错的原因是因为MySQL的时区设置出现了问题。

报错中提示我们要这么You must configure either the server or JDBC driver (via the ‘serverTimezone’ configuration property) to use a more specifc time zone value if you want to utilize time zone support.
意思是:如果你想运用时区支持,必须配置服务器或JDBC驱动程序(通过 'serverTimezone' 配置属性)来使用更具体的时区值。

因此,我们在 jdbc 数据库连接的 url 后面加上 serverTimezone=UTC,即可解决。serverTimezone 连接 mysql 数据库时指定了时差,UTC 是全球标准时间,北京地区早标准时间8小时。


报错2️⃣: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.
与 Unknown character set index for field '255' received from server.
与 Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused: connect

📚解决方法:
首先这几个报错都是还没换高版本 mysql-connector-java-xxx.jar 前出现的 bug,我怎么也没想到老师给的是三点几的包,然后怼着 jdbc 的 url 搞了大半天,然后出现上述的这些问题。他们意思分别是:
1.从服务器接收到未知的初始字符集索引“255”。可以通过“characterEncoding”属性强制设置初始客户端字符集。
2.从服务器收到字段“255”的未知字符集索引。
3.由于以下异常,无法连接到任何主机:java.net.ConnectException:连接被拒绝:connect

首先要确保JDBC驱动程序是 MySQL Connector/J 5.1.x 或更高版本。早期版本可能无法正确处理字符集,因此可能会导致该错误。因此我们从mysql-connector-java-xxx.jar 开始处理,切换更高版本的,然后再检查代码有没有其他报错,如数据库服务器的其他设置、是否启用了自定义字符集等。


报错3️⃣:Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

📚解决方法:
报错的意思是:正在加载类“com.mysql.jdbc.Driver”。这是不推荐使用的。新的驱动程序类是“com.mysql.cj.jdbc.driver”。驱动程序是通过SPI自动注册的,通常不需要手动加载驱动程序类。

首先出现这个报错的原因是因为切换高版本的mysql-connector-java-xxx.jar 后原先的 com.mysql.jdbc.Driver 不推荐使用了,需要把它修改成 com.mysql.cj.jdbc.Driver 即可。

❗补充:com.mysql.cj.jdbc.Driver 报错
遇到这个问题后,需要检查如下:

  • 是否已将 MySQL JDBC 驱动程序添加到您的项目依赖项中。您可以通过将官方的 MySQL JDBC 驱动程序 JAR 文件添加到项目的 classpath 中来解决此问题。
  • 检查驱动程序的版本是否与您使用的 MySQL 数据库版本匹配。如果不匹配,会出现此类错误。建议您使用与您正在使用的 MySQL 版本相应的官方 MySQL JDBC 驱动程序版本。
  • 您的 JDBC URL 是否正确。您应该检查您的 JDBC URL 是否正确,包括正确指定主机、端口和数据库名称等信息。
  • 检查您的代码是否正确,并确保正确加载了驱动程序。您可以在连接数据库之前使用 Class.forName() 方法注册 JDBC 驱动程序。

📝最后

这一题是关于人事管理平台的添加员工档案信息的操作题,除了原题和答案,还有报错处理的解决方法,至此三道题的内容以及介绍了,前两道题目可以看如下文章。

文章地址:课程《JavaWeb基础框架程序设计》考试题上篇——基础应用题(计算应用、水仙花数)

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1095425.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【课程《JavaWeb基础框架程序设计》考试题下篇——数据库与表单操作用题(人事管理平台的添加员工档案信息的操作题)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2