JSP取得在WEB.XML中定义的参数
在web.xml中为JSP配置初始化参数时,只能通过config.getInitParameter获取,因为config代表当前Servlet配置;而application.getInitParameter只能读取全局上下文参数,无法获取Servlet专属参数。
JSP 中获取 web.xml 初始化参数的那些坑
先看一个典型的场景:在 web.xml 里配置好初始化参数,然后在 JSP 页面里尝试读取它。按理说,这应该是个常规操作,但实际写代码时,不少开发者却在这里栽了跟头——同样一个参数,有的方式能读到,有的方式却读不到。
下面是一份标准的 web.xml 配置,定义了一个名为 firstparam 的初始化参数,值设为 firstparamvalue,并绑定到 /MyJsp.jsp 上。
myjsp /MyJsp.jsp firstparam firstparamvalue myjsp /myurl/*
那么,在 JSP 页面里,怎样写才能正确取出这个参数呢?下面是两种常见的写法,结果却截然不同。
失败的写法:用 application.getInitParameter
my jsp page .jsp My init parameter is <%= application.getInitParameter("firstparam") %>
运行这段代码,页面上一片空白,根本拿不到值。问题出在哪里?
正确的写法:用 config.getInitParameter
<%
String Str1;
Str1 = config.getInitParameter("firstparam");
Out.println(Str1);
%>
换成 config.getInitParameter 之后,参数值就顺利输出了。为什么会有这样的差异?
关键原因在于:config 是 ja vax.servlet.ServletConfig 类的对象,它代表当前 JSP 页面(即编译后的 Servlet)自身的配置,自然能读取到该 Servlet 专属的 init-param。而 application 是 ja vax.servlet.ServletContext 类的对象,它代表整个 Web 应用的上下文,只能读取全局的上下文参数(),而不是某个 Servlet 的初始化参数。
换句话说,把参数定义在 内部的 里,就只能通过 config.getInitParameter 来获取;如果想通过 application 获取,需要改用 全局配置。
顺带提一个实用的小技巧:如果使用 WebLogic 作为应用服务器,可以把侦听端口设置为 80。这样一来,在浏览器中访问时就不需要再手工输入端口号了,直接用 http://hostname/myfile.html 代替 http://hostname:portnumber/myfile.html,省去不少麻烦。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















