Java Web项目中无效数据怎样处理?

文章讨论了在JavaWeb项目中如何处理无效数据,特别是涉及用户敏感信息如加密后的密码。作者建议在查询时不返回密码字段,并提供了在Mapper映射文件中排除该字段的方法。此外,还提到通过创建新的实体类或使用JSON处理工具过滤null值来优化返回结果,以提高响应速度和保证数据安全性。
摘要由CSDN通过智能技术生成

最近在做一个java web项目(自己随便想的),遇到一个这个的需求,就是从后台数据库根据用户id数据查询用户信息给前端用作个人主页展示吧!,但是后台数据库中用户信息中是有密码字段(虽然进行了加密处理)的,对于这个密码数据,很明显在这个需求上是不需要,为此个人觉得这是一个无效数据,如果把这个数据也传给前端,万一被人破解了加密数据呢?(这只是举个例子而已,虽然觉得这样也毫无意义,但是别人可不是这样认为的)。

Java Web项目中无效数据怎样处理?

1. 举个例子

我的解决方法是在mapper.xml映射文件中不传回密码字段即可,如下:

<resultMap id="userMap2" type="User">
   <id column="u_id" property="uId"/>
    <result column="u_account_name" property="uAccountName"/>
    <result column="u_email" property="uEmail"/>
    <result column="u_name" property="uName"/>
</resultMap>

<select id="selectById" resultMap="userMap2">
    select u_id, u_account_name, u_email, u_name
     from user where u_id = #{uId}
 </select>

后台返回给前端数据:
请添加图片描述

这个uPassword字段为空。
这样做显得这个链接的后台sql查询语句中的确查询了u_password这个字段,但是映射上没有给而已,从而返回结果中uPassword这个字段,但是结果为null。个人觉得也可以再写一个实体类,这个实体类缺少uPassword这个变量,映射文件基本差不多,这样返回结果中就没有这个uPassword字段了。当然,第1种方式再进行处理一下,也行。

package com.example.demo.entity;

import lombok.Data;
import lombok.ToString;

@Data
@ToString
public class User2 {
    private Integer uId;
    private String uAccountName;
    private String uEmail;
    private String uName;
}

映射文件

<resultMap id="userMap3" type="User2">
    <id column="u_id" property="uId"/>
    <result column="u_account_name" property="uAccountName"/>
    <result column="u_email" property="uEmail"/>
    <result column="u_name" property="uName"/>
</resultMap>

<select id="selectById2" resultMap="userMap3">
   select u_id, u_account_name, u_email, u_name
    from user where u_id = #{uId}
</select>

请添加图片描述
在第1中方式的基础上进行处理,直接利用JSONArray包的方法进行处理,返回结果(字符串)也行.
请添加图片描述
【注】:输出结果中第一个为map对象,可以看到uPassword字段值为null,但是转为json数据之后,把值为null的键过滤掉了,从而结果没有这个字段uPassword。

package com.example.demo.utils;


import com.alibaba.fastjson2.JSONArray;
import java.util.HashMap;

public class MessgaeUtils {
    // 将map对象转换成json对象
    public static String getObjStr(HashMap<String,Object> map){
        return JSONArray.toJSONString(map);
    }
}

发现使用这个方法,可以对map对象中值为null进行过滤处理。
请添加图片描述

2. 总结

上面只是举个例子,像查询用户信息的接口个人觉得uPassword个人觉得都不应该返回给前端的(过去个人刚学习的时候,把这个数据返回给了前端,现在想起来感觉很好笑,当时这个数据还没有加密处理,也就是明文,别人懂一些这个知识的,很容易就把我的账号或者其他人的账号盗取了),也有其他很多数据,也不需要传回给前端(比如一个管理系统中,查询用户年龄大于多少的用户信息,不需要把用户头像存储路径返回给前端,应为作为后台管理系统的前端在这里的需求是看用户数据,至于用户头像并不怎么关注,而对于个人主页而言,用户头像存储路径则最好返回给前端,除非没有这个字段,这样显得美观一些吧!后台管理的界面看重的是数据,而网页界面可以更看重美观与功能便捷吧!),但是这些无效数据返回前端,一旦总的数据数据很大,那么必然会影响到界面的响应速度的,所以处理好这些无效数据是很有必要的。当然,这毕竟是我的个人见解,欢迎各位大佬评论指正哈!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持不懈的大白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值