【发布时间】:2020-05-31 14:47:57
【问题描述】:
有什么方法可以调用index.jsp 上的servlet?我的欢迎文件是index.jsp。当index.jsp 打开时,我需要通过 servlet 填充下拉列表值。
我尝试在web.xml中设置<load-on-startup>,但没有任何效果。如何获取欢迎文件index.jsp 来调用servlet?
【问题讨论】:
标签: jsp servlets welcome-file
有什么方法可以调用index.jsp 上的servlet?我的欢迎文件是index.jsp。当index.jsp 打开时,我需要通过 servlet 填充下拉列表值。
我尝试在web.xml中设置<load-on-startup>,但没有任何效果。如何获取欢迎文件index.jsp 来调用servlet?
【问题讨论】:
标签: jsp servlets welcome-file
只需将欢迎文件 URL 更改为 servlet 之一即可。
鉴于此 servlet 映射,
<servlet-mapping>
<servlet-name>indexServlet</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
只要有这个欢迎文件列表:
<welcome-file-list>
<welcome-file>index</welcome-file>
</welcome-file-list>
不要忘记将 /index.jsp 移动到 /WEB-INF 文件夹中,以防止最终用户通过猜测其 URL 直接访问它(并且不要忘记将索引 servlet 中的转发调用更改为指向 @987654328 @)。
或者,如果您只打算拥有“主页 servlet”而不是“索引 servlet”,则将 servlet 映射到空字符串 URL 模式,而不是作为欢迎文件。
<servlet-mapping>
<servlet-name>indexServlet</servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
【讨论】:
<jsp:include> 破解它,但这是完全错误的,并且 servlet 不会充当控制器。 OP 希望在显示注册为欢迎文件的 JSP 之前调用一个 servlet 来预填充下拉值。我的回答是正确的。
<url-pattern> 仍然使用 /index.jsp(对于 <welcome-file> index .jsp)。当然,在这种情况下,他必须将视图(JSP 文件)的名称更改为其他名称。这样,在将请求从 servlet 转发到视图后,他会在地址栏中看到 desired index.jsp ))
根据您使用的框架,有多种方法可以实现这一点。
简单来说,您可以先调用 servlet,然后将数据设置到表单中,然后重定向到您的 JSP。
或者
如果你熟悉 Ajax,你可以从你的 jsp 调用 ajax 来为你获取数据
如果你能告诉我你在项目中使用的框架,我可以给你一个例子
【讨论】:
只需创建一个空的虚拟索引页面...在该页面中只需添加以下行...
例如:
然后在那个 Servlet 类中,只需实现逻辑并重定向您的原始主页或索引页面。
【讨论】:
使用 JQuery Ajax
<body onload="functionName()">
<script>
function functionName(){
$.ajax({
url : 'YourServlet',
type: "GET",
async: false,
success:function(response){
},
error: function (event) {
console.log("ERROR: ", event);
}
});
}
</script>
【讨论】: