【问题标题】:sending data from java servlet to jsp将数据从 java servlet 发送到 jsp
【发布时间】:2014-07-21 18:04:51
【问题描述】:

我试图将一个字符串从 Java servlet 发送到 JSP,但我总是在字符串中得到一个空值

Test.javaservlet:

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 已将 servlet 类映射到 api。测试和 url-pattern 为/test

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    此外,根据您的 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" ) %>
    

    【讨论】:

    • 它很有效,请您看看我的 web.xml 映射是否正确。谢谢。
    • 您没有提供 web.xml 内容。如果您的页面确实被转发并且您的属性为 null,则映射没有问题。
    • servlet 类映射 apis.Test 和 url-mapping /test
    • 将网址设为&lt;url-pattern&gt;/test*&lt;/url-pattern&gt;。在这种情况下,如果您的网址是http://localhost:8080/Traders/test.jsp,您将访问您的apis.Test servlet。
    【解决方案2】:

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

    小服务程序:

    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>
    

    请查看我的另一篇帖子How does a servlets filter identify next destination is another filter or a servlet/jsp?,了解有关用于url-patternServlet 匹配过程 的详细说明。

    注意:始终尽量避免使用Scriplet,而应使用JavaServer Pages Standard Tag LibraryExpression Language

    【讨论】:

    • 不,dint 有任何区别,并且之前的值
    • 您能解释一下应用程序的流程,并分享web.xml 以及更快的解决方案。
    • 我是新手,我只是想在请求页面后将字符串值从 servlet 发送到 jsp 页面。用户请求页面 localhost:8080/Traders/test.jsp 并且字符串值 s 需要显示出来
    • jsp 是否从 Servlet 正确调用?先在 jsp 中尝试使用虚拟数据。
    • 我不是反对者,但我认为这与形式无关。虽然这可能是一个问题,但我没有看到在任何地方提交表单。 OP 正在尝试访问 servlet 中设置的 JSP 中的属性。
    猜你喜欢
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多