Day20_学点儿JavaEE_基于Session的登录、数据库null值正确显示

2024-04-11 09:20

本文主要是介绍Day20_学点儿JavaEE_基于Session的登录、数据库null值正确显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 登录

使用Session技术完成用户登录的功能:
登录功能会使用到Session,把用户登录的用户名和密码保存到Session,因为Session是属于每个用户独有的,就可以记录每个用户单独的登录信息。
在这里插入图片描述
当然,这仅仅是完成了一个简单的登录过程,即完成判断输入信息是否和数据库信息相匹配的操作,但是仍然可以通过直接输入地址的方式在不登录的情况下访问相应的页面。而我们实际生活中的没登录的情况下,很多页面是无法访问的,要实现这样的效果,我们可以在每个页面都增加一个判断Session中的用户名密码是否和数据库匹配的操作,但是未免也太麻烦了点。通过过滤器Filter,可以很简单地实现这个效果。

2 数据库null值正确显示

涉及到前面学的知识——学点儿Java_Day9_String、包装类
起因是我添加了一个教师类,并且实现了增删改查显示,但是增加页面只做了姓名年龄性别三项,数据库和类里边都有一个工资项。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
由于薪资用的是包装类,所以添加的时候没传salary的值的话,它的值会是null而不是0.0,这也符合我这么做的目的——null0.0的意义不总是相同,尤其是表示温度海拔等物理量的时候。但是我后来发现,我添加新的老师信息后,数据库表中确实salary项是null,但是页面显示的却是0.0
在这里插入图片描述
在这里插入图片描述
查了下TeacherDaoImpl的代码发现了问题所在:
在这里插入图片描述

这是一个“歪打正着”的代码:
如果resultSet.getDouble("salary")salary字段的值为null,那么调用该方法将返回0.0。这是因为 getDouble()方法是用于从结果集中获取double类型的数据,如果结果集中的值为null则返回默认值 0.0
正因为默认返回值是0.0,才不会出现给基本数据类型doublenull值的错误,但也就造成了null值显示为0.0的问题。

在这里插入图片描述
结合上述问答,作出如下修改:
在这里插入图片描述

@Overridepublic List<Teacher> selectByPage(int offset, Integer pageSize) {Connection connection = null;PreparedStatement statement = null;ResultSet resultSet = null;List<Teacher> list = new ArrayList<>();try {connection = JDBCUtil.getConnection();String sql = "SELECT id,name,age,gender,salary FROM teacher LIMIT ?,?";statement = connection.prepareStatement(sql);statement.setInt(1, offset);statement.setInt(2, pageSize);System.out.println(statement);resultSet = statement.executeQuery();while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");int age = resultSet.getInt("age");String gender = resultSet.getString("gender");//double salary = resultSet.getDouble("salary");resultSet.getDouble("salary");//这里这里Double salary = resultSet.wasNull() ? null : resultSet.getDouble("salary");Teacher teacher = new Teacher(id, name, age, gender, salary);list.add(teacher);}} catch (SQLException e) {throw new RuntimeException(e);}return list;}

成功

在这里插入图片描述

代码

Day20_复制粘贴快速开发(课程表)、CookieDemo、Filter登录过滤及放行、教师薪资显示0.0

这篇关于Day20_学点儿JavaEE_基于Session的登录、数据库null值正确显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893677

相关文章

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

JavaSE正则表达式用法总结大全

《JavaSE正则表达式用法总结大全》正则表达式就是由一些特定的字符组成,代表的是一个规则,:本文主要介绍JavaSE正则表达式用法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录常用的正则表达式匹配符正则表China编程达式常用的类Pattern类Matcher类PatternSynta

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是