gpt4 book ai didi

java - Servlet 到 JSP 总是传递空值

转载 作者:行者123 更新时间:2023-11-30 02:09:16 25 4
gpt4 key购买 nike

我刚刚开始使用JSP和Servlet,所以我遇到了一个非常基本的问题。我试图从 JSP 向 servlet 发出请求,在其中设置一个参数,然后将答案从 servlet 转发回 jsp。这是我的 JSP 中的代码:

<% String s = (String)request.getAttribute("name");
out.println(s);
%>

这是我的 servlet 代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
try (PrintWriter out = response.getWriter()) {
request.setAttribute("name", new String("aa"));
this.getServletContext().getRequestDispatcher("/index.jsp").forward(request,response);
}
}

所以最终,servlet 具有值(value),但我的 jsp 没有。

最佳答案

这里你已经声明了一个 String 类型,但你也将它转换为 String,这是多余的。

<% String s = (String)request.getAttribute("name");
out.println(s);
%>

此外,<%= %> 之间也有区别。和<% %> 。如果要将变量输出到 jsp 中,请使用带有等于 ( <%= %> ) 的变量。 scriptlet 代码的第二行也会生成错误。您在 servlet 中编写的代码不仅仅在 JSP 上继续,也不是它的工作方式。

如果你想输出 name 属性,只需这样做:

<%= request.getAttribute("name") %>

但是,自 2010 年以来,不鼓励使用 scriptlet(技术过时)。我们使用 EL 和 JSTL 代替。您应该能够像这样输出变量:

${name}

在您的 Servlet 中,您需要做的就是:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String name = "Jane"; //create a string
request.setAttribute("name", name); //set it to the request

RequestDispatcher rs = request.getRequestDispatcher("index.jsp"); //the page you want to send your value
rs.forward(request,response); //forward it

}

编辑

你问了,

Is there a way to trigger the servlet let s say on a click of a button or something like that?

是的,有多种方法可以做到这一点,这实际上取决于您想要如何设置。单击按钮触发 servlet 的简单方法如下。 *(假设您有一个 servlet 映射到 /Testing ):

<a href="/Testing">Trigger Servlet<a>

另一种方式可能是使用表单:

<form action="Testing" method="get">
<input type="hidden" name="someParameterName" value="you can send values like this">
<button type="submit">Do some magic</button>
</form>

还有 AJAX(涉及 javascript)。但这是相当高级的,在您熟悉正常的同步 http 行为之前,我不建议您这样做。

关于java - Servlet 到 JSP 总是传递空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com