Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Servlet向客户端JSP发送值时获取null_Java_Jsp_Servlets - Fatal编程技术网

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

Java 从Servlet向客户端JSP发送值时获取null,java,jsp,servlets,Java,Jsp,Servlets,我正在尝试一个简单的示例,将值从servletServlet1.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") pub

我正在尝试一个简单的示例,将值从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>

在此处插入标题
朋友们好

在jsp页面中尝试以下代码

String s=(String) request.getServletContext().getAttribute("myname");

在jsp页面中尝试以下代码

String s=(String) request.getServletContext().getAttribute("myname");
您正在将“myname”设置为request.setAttribute

因此,您可以按如下方式检索:

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

您正在将“myname”设置为request.setAttribute

因此,您可以按如下方式检索:

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

你做的是坏事

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

因此,您至少应该阅读JSP中的属性:

<% String (String) s=request.getAttribute("myname");%>
它更短、更干净、更不容易出错

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

您所做的是错误的

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

因此,您至少应该阅读JSP中的属性:

<% String (String) s=request.getAttribute("myname");%>
它更短、更干净、更不容易出错



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

您正在设置属性并获取参数。尝试在jsp中获取属性。我甚至尝试过,但它再次显示null@danielbararianso您使用的是
request.getAttribute(“myname”)
,但仍然是null?您是否正在向servlet发出post请求?并且您确定正在向该servlet发出post请求,而不是直接进入浏览器中的jsp页面?请尝试
localhost:8080/mypro/server1
。哦,然后将servlet代码中的
doPost
更改为
doGet
。您正在设置一个属性并获取一个参数。尝试在jsp中获取属性。我甚至尝试过,但它再次显示null@danielbararianso您使用的是
request.getAttribute(“myname”)
,但仍然是null?您是否正在向servlet发出post请求?并且您确定正在向该servlet发出post请求,而不是直接进入浏览器中的jsp页面?请尝试
localhost:8080/mypro/server1
。哦,然后将servlet代码中的
doPost
更改为
doGet
。再次获取null:(没有这两个选项都能工作。无论如何,感谢您获取null:(这两种方法都不起作用。不管怎样,谢谢直到得到null仍然得到null现在它没有显示null,但也没有显示该字符串的值。它起作用了!我用doGet编写代码,改为getAttribute,并感谢其他提示,但它只显示在服务器页面上,我想在客户端页面上显示它。我该怎么办?@RahulChoubey:对不起,b我不明白。你说的客户端页面是什么意思?JSP是由真正的servlet中的服务器容器翻译的,因此它只能存在于服务器端web应用程序中。现在它没有显示null,但也没有显示该字符串的值。它起作用了!我用doGet编写代码,改为getAttribute,并感谢其他提示它只显示在服务器页面上,我希望它显示在客户端页面上。我该怎么办?@RahulChoubey:对不起,我不明白。客户端页面是什么意思?JSP是由真正的servlet中的服务器容器翻译的,所以它只能存在于服务器端web应用程序中