gpt4 book ai didi

java - 从 Servlet 向客户端 JSP 发送值时获取 null

转载 作者:行者123 更新时间:2023-12-02 01:59:40 37 4
gpt4 key购买 nike

我正在尝试一个从 servlet Servlet1.java 发送值的简单示例到客户端 JSP 页面 client1.jsp .

但是我变得空了这是代码Server1.java :

import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.util.*;


@WebServlet("/server1")
public class Server1 extends HttpServlet {
private static final long serialVersionUID = 1L;

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

String name="Rahul";
request.setAttribute("myname",name);

//Servlet JSP communication
RequestDispatcher reqDispatcher = getServletConfig().getServletContext().getRequestDispatcher("/client1.jsp");
reqDispatcher.forward(request,response);

}
}

代码 client1.jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% String s=request.getParameter("myname");%>
Hello friends <%=s%>
</body>
</html>

最佳答案

你做的事情很糟糕。

首先,您要混合属性参数。它们是不同的动物。参数来自客户端,由 servlet 容器设置一次。属性是协作元素(过滤器、Servlet 和 JSP 页面)用来传递数据的对象。

所以你至少应该阅读JSP中的属性:

<% String (String) s=request.getAttribute("myname");%>

您必须将属性强制转换为 String,因为 getAttribute 返回一个 Object

但这还不是全部。 Scriptlet 已被弃用数十年,并且只应用于非常特殊的用例(如果有)。在这里,假设您有一个不错的 servlet 容器,您可以简单地使用 ${} JSTL 自动属性:

<body>
Hello friends ${myname}
</body>

它更短、更清晰且不易出错。

根据您的评论,还有另一个可能的问题。当常见请求(除非您从表单发布)是 GET 请求并在 doGet 中处理时,您仅在 servlet 代码中显示 doPost 的覆盖。如果您使用 GET 请求并且仅在 doPost 中设置属性,您的 JSP 将找不到它...

关于java - 从 Servlet 向客户端 JSP 发送值时获取 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51781669/

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