【问题标题】:Passing calculation result to JSP page将计算结果传递给 JSP 页面
【发布时间】:2013-09-19 05:35:06
【问题描述】:

Index.jsp 接受两个输入数字,提交请求后转到 Operation.java。它有一个单选按钮来选择操作。输入和单选按钮都提交给 Operation.java。

<body>
    <h1>Easy way to do fast operation</h1>
    <form action="Operation">
        First number::<input type="text" name="firstno"></input></br></br>
        Second number::<input type="text" name="Secondno"></input></br></br>
        <input type="radio" name="option" value="add">Add</input>
        <input type="radio" name="option" value="substract">Subtract</input>
        <input type="radio" name="option" value="mul">Multiply</input>
        <input type="radio" name="option" value="divide">Divide</input>
        </br></br>
        <input type="submit" value="submit"/>
    </form>    
    <%if(request.getAttribute("res")!=null){%>                   
        The result is ::${res}
    <%}%>
</body>  

Operation.java(Servlet) 从输入按钮获取值并根据单选按钮单击进行计算。它会计算结果。

int result1=0;
int n1=Integer.parseInt(request.getParameter("firstno"));
int n2=Integer.parseInt(request.getParameter("Secondno"));
String radio=request.getParameter("option");
if(radio.equals("add"))
{
    result1=n1+n2;
}
 else if(radio.equals("substract"))
{
    result1=n1-n2;
}
else if(radio.equals("mul"))
{
    result1=n1*n2;
}

       request.setAttribute("res", result1);
        RequestDispatcher requestDispatcher =      request.getRequestDispatcher("index.jsp");
        requestDispatcher.forward(request, response);

计算后我想在 index.jsp 上显示结果。我该怎么做?

【问题讨论】:

  • 使用 request.setAttribute("result1Name",result1);
  • @gjman2 但我想在点击提交按钮后得到结果。不是以前。在这种情况下,在索引页面中,我总是得到结果值。
  • 所以编辑后,它工作了吗?
  • @gjman2 是的,它工作正常。
  • 顺便说一句,你知道jstl吗? @ashish

标签: java forms servlets


【解决方案1】:

通过在响应中呈现所需的输出。 Servlet 是 HTTP 的一个非常薄的包装器:您正在处理一个 HttpRequest 并生成一个 HttpResponse。

【讨论】:

    【解决方案2】:

    servelt 和 jsp 之间有几种通信方式。

    1)通过请求。

    2)通过session

    在您的情况下,请求级别的通信就足够了。处理会话有点棘手,尤其是当您不知道它在做什么时。

    在你的 servlet 中

                int n1=Integer.parseInt(request.getParameter("firstno"));
                int n2=Integer.parseInt(request.getParameter("Secondno"));
    

    如果这两行为空,则会导致 nullpointer exception.

    进行空检查。

    然后更改表单动作,可能是&lt;form action="/Operation"&gt;

    然后从那里将该请求设置为attribute.

    派发到同一个jsp

    在jsp中获取请求属性

    在那里打印。

    request.setAttribute("name", "value");
    request.getRequestDispatcher("/index.jsp").forward(request, response);
    

    阅读更多:

    【讨论】:

    • 但我只想要点击提交按钮后的结果值。不是在那之前。如果我使用它,我在单击提交按钮之前已经有一个值。
    • @ASHISH 点击按钮后,只有servlet被调用对吗?
    • 是的,点击按钮后,servlet 被调用。但是在 index.jsp 中存储了之前的操作值。
    • 你是如何在 jsp 中设置值的??你能用你现在在做什么来编辑你的帖子吗?
    • 我在提交按钮后和servlet中只使用${res} request.setAttribute("res", result1); RequestDispatcher requestDispatcher = request.getRequestDispatcher("index.jsp"); requestDispatcher.forward(请求,响应);
    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 2019-02-20
    • 2012-03-29
    • 2014-09-03
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多