繁体   English   中英

将数据从Java Servlet发送到JSP

[英]sending data from java servlet to jsp

我正在尝试将Java servlet中的字符串发送到JSP,但是我总是在字符串中获得null

Test.java Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String s = "HelloWolrd";
    System.out.println(s);
    response.setContentType("text/jsp");
    request.setAttribute("s", s);
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/test.jsp");
    dispatcher.forward(request,response);
}

test.jsp

<body><%= request.getAttribute("s")%> </body>

web.xml具有映射到api的servlet类。 测试和url-pattern为/test

我的目录结构

根据您的项目结构,将test.jsp文件放置在WEB-INF之外。 再次验证。

Servlet:

public class Test extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String s = "HelloWolrd";
        System.out.println(s);
        response.setContentType("text/jsp");
        request.setAttribute("s", s);
        RequestDispatcher dispatcher = getServletContext()
                .getRequestDispatcher("/test.jsp");       // CHANGE IT HERE
        dispatcher.forward(request, response);
   }
}

web.xml:

<servlet>
    <servlet-name>XYZ/servlet-name>
    <servlet-class>apis.Test</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>XYZ</servlet-name>
    <url-pattern>/test</url-pattern>
</servlet-mapping>

看看我的另一篇文章,servlet过滤器如何识别下一个目的地是另一个过滤器还是servlet / jsp? 有关用于url-pattern Servlet匹配过程的详细说明。

注意:始终尽量避免使用Scriplet,而应使用JavaServer Pages标准标记库表达式语言

另外,根据eclipse目录结构,您的JSP仍位于WebContent文件夹下。 所以你需要做

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/traders/test.jsp");

您可以尝试的其他东西

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/traders/test.jsp?s=s");

然后在您的JSP中,您可以执行

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

要么

您可以使用会话

HttpSession session = request.getSession(true);
session.setAttribute("s", "s");

并做

<%= session.getAttribute( "s" ) %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM