0

0

如何在 Java Servlet 中为用户档案页面添加 URL 参数

心靈之曲

心靈之曲

发布时间:2026-01-14 21:29:18

|

228人浏览过

|

来源于php中文网

原创

如何在 Java Servlet 中为用户档案页面添加 URL 参数

本文介绍如何通过隐藏表单字段将用户 id 动态注入 url,使 `/webproject/user?id=293710` 这类带参数的档案链接可访问、可分享,并支持查看任意用户(非仅当前登录用户)的公开资料。

要在 Java Web 应用中实现“通过 URL 参数(如 id)访问不同用户档案”的功能,关键在于:让请求携带可变的用户标识符,并由 Servlet 统一解析处理。你当前的表单使用 GET 方法提交到 UserServlet,但未传递任何参数,因此 URL 为空(/webproject/user?)。解决方法是在表单中显式添加一个隐藏字段(),其 name 与后端期望的参数名一致(如 id),value 则动态设为当前用户的唯一标识(如数据库主键或自定义编码)。

✅ 正确实现方式(JSP + Servlet)

在 JSP 的表单中,将静态 ID 替换为从会话或请求作用域中动态获取的值:

<form method="GET" action="UserServlet">
    <input type="hidden" name="id" value="${sessionScope.currentUser.id}" />
    <input type="submit" class="buttontClass" value="View Profile" />
</form>
? 假设登录成功后,你已在 HttpSession 中存储了当前用户对象(如 session.setAttribute("currentUser", user)),且 User 类有 getId() 方法。JSTL 表达式 ${sessionScope.currentUser.id} 会自动渲染为实际数值(如 293710)。

提交后,浏览器将跳转至类似 /webproject/UserServlet?id=293710 的地址 —— 此时 URL 含参、可复制、可手动修改,完全满足你“通过修改 URL 查看其他用户档案”的需求。

Pixelfox AI
Pixelfox AI

多功能AI图像编辑工具

下载

? 后端 Servlet 配合处理

在 UserServlet 的 doGet() 方法中,需从请求中安全读取并验证 id 参数:

立即学习Java免费学习笔记(深入)”;

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
    String idParam = request.getParameter("id");
    if (idParam == null || idParam.trim().isEmpty()) {
        response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing 'id' parameter");
        return;
    }

    try {
        long userId = Long.parseLong(idParam);
        User targetUser = userService.findById(userId); // 从数据库查询目标用户
        if (targetUser == null) {
            response.sendError(HttpServletResponse.SC_NOT_FOUND, "User not found");
            return;
        }
        // 注意:此处不校验是否为当前登录用户,以支持跨用户查看
        request.setAttribute("user", targetUser);
        request.getRequestDispatcher("/profile.jsp").forward(request, response);
    } catch (NumberFormatException e) {
        response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid user ID format");
    }
}

⚠️ 重要注意事项

  • 安全性提醒:此方案默认开放任意用户档案的只读访问。若需权限控制(例如仅管理员可查看他人档案),应在 UserServlet 中加入角色校验逻辑(如 request.isUserInRole("ADMIN")),而非依赖前端隐藏字段。
  • 避免硬编码 ID:切勿在 JSP 中写死 —— 必须动态绑定,否则所有用户点击都会跳转到同一档案。
  • URL 友好性进阶:如需更美观的 URL(如 /webproject/user/293710),可结合 Servlet 3.0+ 的 @WebServlet(urlPatterns = "/user/*") 或使用 Filter + URL 重写,但 GET 参数方案最轻量、兼容性最佳。
  • 防止 XSS:若 id 来源不可信(如来自 URL 或表单输入),务必对输出到 JSP 的值做 EL 转义(JSTL 默认安全),避免 漏洞。

通过以上改造,你的档案系统即可真正实现“参数化路由”——既支持一键跳转本人档案,也支持手动输入 ID 浏览他人资料,为后续功能(如分享链接、好友推荐等)奠定基础。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
servlet生命周期
servlet生命周期

Servlet生命周期是指Servlet从创建到销毁的整个过程。本专题为大家提供servlet生命周期的各类文章,大家可以免费体验。

390

2023.08.08

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

334

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

774

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

206

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

313

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

290

2025.06.11

c++标识符介绍
c++标识符介绍

本专题整合了c++标识符相关内容,阅读专题下面的文章了解更多详细内容。

174

2025.08.07

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

0

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.1万人学习

C# 教程
C# 教程

共94课时 | 10.6万人学习

Java 教程
Java 教程

共578课时 | 76.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号