jsp怎么拿到url参数

在JSP中获取URL参数(如 ?xx=yy中的 xx这个参数)非常简单,主要有以下几种方式:

一、使用 EL 表达式(推荐,最简洁)

EL表达式是获取URL参数最方便的方式。

复制代码
<!-- 直接获取参数值 -->
<p>参数xx的值是:${param.xx}</p>

<!-- 在HTML属性中使用 -->
<input type="text" value="${param.xx}" />

<!-- 条件判断 -->
<c:if test="${not empty param.xx}">
    <p>xx参数存在,值是:${param.xx}</p>
</c:if>

<!-- 多值参数(如?xx=1&xx=2)获取第一个值 -->
<p>第一个值:${paramValues.xx[0]}</p>
<p>第二个值:${paramValues.xx[1]}</p>

二、使用 JSP 脚本(传统方式)

复制代码
<%
    // 获取单个参数值
    String xxValue = request.getParameter("xx");
    
    // 获取多值参数
    String[] xxValues = request.getParameterValues("xx");
%>

<!-- 使用获取到的值 -->
<p>参数xx的值是:<%= xxValue %></p>

<% if (xxValues != null && xxValues.length > 1) { %>
    <p>所有值:</p>
    <ul>
    <% for (String value : xxValues) { %>
        <li><%= value %></li>
    <% } %>
    </ul>
<% } %>

三、完整示例

复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>获取URL参数示例</title>
</head>
<body>
    <h1>URL参数获取演示</h1>
    
    <!-- 方式1:EL表达式 -->
    <div>
        <h2>使用EL表达式:</h2>
        <p>参数xx的值:<strong>${param.xx}</strong></p>
        <p>参数yy的值:<strong>${param.yy}</strong></p>
        
        <!-- 处理可能不存在的参数 -->
        <c:choose>
            <c:when test="${not empty param.xx}">
                <p>xx参数存在,值是:${param.xx}</p>
            </c:when>
            <c:otherwise>
                <p>xx参数不存在</p>
            </c:otherwise>
        </c:choose>
    </div>
    
    <!-- 方式2:JSP脚本 -->
    <div>
        <h2>使用JSP脚本:</h2>
        <%
            String xx = request.getParameter("xx");
            String yy = request.getParameter("yy");
            
            if (xx != null && !xx.trim().isEmpty()) {
        %>
            <p>参数xx的值:<strong><%= xx %></strong></p>
        <%
            } else {
        %>
            <p>xx参数不存在或为空</p>
        <%
            }
        %>
    </div>
    
    <!-- 实际应用:搜索功能 -->
    <%
        String keyword = request.getParameter("keyword");
        if (keyword != null) {
    %>
        <h3>搜索结果显示:</h3>
        <p>您搜索的关键词是:<em><%= keyword %></em></p>
        <!-- 这里可以显示搜索结果 -->
    <%
        }
    %>
</body>
</html>

四、实际应用场景

1. 搜索功能

复制代码
<!-- 访问URL:search.jsp?keyword=java&category=books -->
<%
    String keyword = request.getParameter("keyword");
    String category = request.getParameter("category");
    
    // 执行搜索逻辑...
%>
<h2>搜索结果</h2>
<p>关键词:${param.keyword}</p>
<p>分类:${param.category}</p>

2. 分页功能

复制代码
<!-- 访问URL:list.jsp?page=2&size=20 -->
<%
    int page = Integer.parseInt(request.getParameter("page") != null ? 
                request.getParameter("page") : "1");
    int size = Integer.parseInt(request.getParameter("size") != null ? 
                request.getParameter("size") : "10");
    
    // 分页查询逻辑...
%>
<p>当前第 ${param.page} 页,每页 ${param.size} 条</p>

3. 带默认值的处理

复制代码
<!-- 优雅地处理可能为空的参数 -->
<c:set var="pageNum" value="${not empty param.page ? param.page : 1}" />
<c:set var="pageSize" value="${not empty param.size ? param.size : 10}" />

<p>当前页码:${pageNum}</p>
<p>每页大小:${pageSize}</p>

五、重要注意事项

  1. 空值处理:总是要考虑参数可能不存在的情况

  2. 编码问题:中文参数可能需要处理URL编码

    <%
    String keyword = request.getParameter("keyword");
    if (keyword != null) {
    keyword = new String(keyword.getBytes("ISO-8859-1"), "UTF-8");
    }
    %>

  3. 安全性:对用户输入的参数进行验证和转义,防止XSS攻击

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

    安全显示:${fn:escapeXml(param.userInput)}

总结

  • 推荐使用EL表达式 :${param.参数名},简洁安全

  • 多值参数 :使用${paramValues.参数名[索引]}或request.getParameterValues()

  • 一定要处理空值情况,避免NullPointerException

  • 考虑安全性,对用户输入进行转义

EL表达式是现代JSP开发的首选,代码更简洁,可读性更好。

相关推荐
凤城老人8 分钟前
从 PyQt6 到 Electron:给 Edge TTS 做一个“多角色配音机“的踩坑手记
javascript·typescript·electron
Dovis(誓平步青云)12 分钟前
浇水提醒刚弹出又消失,植物状态别只存一个百分比
开发语言·前端·javascript·pdf·ecmascript·电脑
HEJOO933 分钟前
指针的算术运算详解
java·数据结构·算法
sunshine22 girl34 分钟前
Java学习六 Java常见API-2--String-3-字符串的截取替换和其他方法
java·开发语言·学习
码艺-Alimjan44 分钟前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
EatFan1 小时前
从“框架混战“到“运行时收敛“:2026 年 AI Agent 开发框架的三条路线之争
java·数据库·人工智能·多智能体·ai agent·mcp·agent 框架
小蒜学长1 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统
sunshine22 girl1 小时前
Java学习六 Java常见API-1-Radom随机数
java·开发语言·学习
可乐鸡翅yeah_1 小时前
hls.js 手动自定义 http 请求 loader,修改请求头实战
开发语言·前端·javascript·网络协议·http·ecmascript·m3u8在线
IT_陈寒2 小时前
Vite静态资源导入这个坑我帮你们踩过了
前端·人工智能·后端