java - 如何检索音量参数并使其显示在 result.jsp 中

标签 java spring-mvc servlets model-view-controller

这个问题我真的很困惑。我已经尝试了一切,但没有任何效果。

我希望能够获取音量并将其显示为 param.volume。但是,如果我将其作为 scriptlet 执行,它将返回零。

我希望能够创建名为 getVolume 的 getter 方法,该方法在调用时返回立方体的体积 (side * side * side)。

我的getter方法是:

package servlets;



public class Cube {



    private int side;


    private int volume;

    public void setVolume(int volume){
        this.volume=volume;
    }

    public int getVolume() {
        volume=side*side*side;
        return volume;
    }

    public int getSide() {
        return side;
    }

    public void setSide(int side) {
        this.side = side;
    }

}

在 CalcServlet 中:

package servlets;

import java.io.IOException;


import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Servlet implementation class CalcServlet
 */
@WebServlet("/calc")
public class CalcServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


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



        }


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


                String scube=request.getParameter("cube");

                Cube obj=new Cube();


                try{
            int cube=Integer.parseInt(scube);
            obj.setSide(cube);
            obj.getVolume();



            request.setAttribute("cube", obj);



            }catch(NumberFormatException e){

            }
                ServletContext sc = this.getServletContext();
            //RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/pages/result.jsp"); 
                RequestDispatcher rd = sc.getRequestDispatcher ("/WEB-INF/pages/result.jsp");
            rd.forward(request, response);

        }

    }

在 result.jsp 中:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
 <%@ taglib prefix="c" 
           uri="http://java.sun.com/jsp/jstl/core" %>  

<%@ taglib tagdir="/WEB-INF/tags" prefix="myjsp" %>
<%@ page import="servlets.Cube, servlets.CalcServlet " %>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<body>

<h2>Cube Info Using JSP 2.0 </h2><br>
<b>Side of a Cube: ${param.side} </b><br>
<b>Volume of a Cube: ${param.side*param.side*param.side}</b><br>

 <br></br><br>
 Using Custom Tag:
<myjsp:displayform color="red"></myjsp:displayform>


 <br></br><br>
<h2>Using JSTL:</h2>
<h2>Cube Info Using JSP 2.0 </h2><br>
<b>Side of a Cube: ${param.side} </b><br>
<b>Volume of a Cube: </b>
<c:choose>
    <c:when test="${param.side*param.side*param.side>10}">
    <li><span style="color: red;">Volume: ${param.side*param.side*param.side}</span></li>
    </c:when>
    <c:otherwise>
    <li><span style="color: black;">Volume: ${param.side*param.side*param.side}</span></li>
    </c:otherwise>
    </c:choose>



</body>
</html>

显示结果是因为正在读取 param.side。不过我想用 param.volume 来做到这一点。请帮忙!!我已经尝试了一切。

最佳答案

首先修复音量的 getter/setter。现在你的 getter 的行为就像 setter 一样。

public void setVolume(int Volume){
        this.volume=volume;
    }

    public int getVolume() {
        return volume;
    }

然后在您的servet中(正确的做法是在实用程序类中执行此操作)

            int side=Integer.parseInt(scube);
            obj.setSide(side);
            int volume= side*side*side; 
            obj.setVolume(volume);

            request.setAttribute("cube", obj);

您将包含 Cube Bean 的参数命名为“cube”。在那条线上 request.setAttribute("cube", obj);

因此,要访问 JSP 中的 Bean 立方体,您应该这样做

${cube.side}
${cube.volume}

或者正确的方式

<c:out value="${cube.side}"/>
<c:out value="${cube.volume}"/>

关于java - 如何检索音量参数并使其显示在 result.jsp 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088278/

相关文章:

java - 如何确保 OverlayLayout 中的绘制顺序正确?

java - 找不到类型为 [org.springframework.social.twitter.api.Twitter] 的匹配 bean 以获取依赖项

java - Spring @Transactional 注释使我的类无法 Autowiring

java - 从 Tomcat 6 升级到 Tomcat 8 后出现的问题

java - Java的时间序列数据库?

java - 套接字——来自 python 和 java 的不同字节

java - SmartGWT:是否可以为列表网格中的特定行着色?

java - 收到 404 running spring boot

session - 我希望我的 Domino Servlet 获得经过身份验证的用户 session

java - 基于AJAX POST向JSP文件发送请求