【问题标题】:java JSP Servlet Bean Calculatorjava JSP Servlet Bean 计算器
【发布时间】:2015-11-20 14:53:18
【问题描述】:

我尝试用JSP and a Servlet 写一个计算器 现在工作完美。 (在你的帮助下!) 现在我想用 MVC 编写它。 所以我有一个 JSP:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Hello</title>
</head>
<body>
<form action="Process" method="post">
    Enter a number: <input type="text" name="num1" />
    <input type="text" name="operand" type="submit "value="+" />
    <input type="text" name="operand" type="submit "value="-" />
    <input type="text" name="operand" type="submit "value="*" />
    <input type="text" name="operand" type="submit "value="/" />
    Enter a number: <input type="text" name="num2" />
    <input type="submit" name="submit" value="OK" /> 
</form>
</body>
</html>

我有 Servlet:

package controller;
import model.Calc;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

@WebServlet("/servlet")
public class Process extends HttpServlet {
private static final long serialVersionUID = 1L;


public Process() {
    super();
    // TODO Auto-generated constructor stub
}

protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
}

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

    String num1= request.getParam("num1");
    String num2= request.getParam("num2");
    request.getParameter("operand");

    int num11 = Integer.parseInt(num1);
    int num22 = Integer.parseInt(num2); 

    Calc calc = new Calc();

    calc.setNum1(num11);
    calc.setNum2(num22);

    request.setAttribute("calc", calc);
    request.getParameter("operand");

    request.setAttribute("operand", operand);
    request.setAttribute("calc", calc);

    request.setAttribute(calc.getResult());

    RequestDispatcher dispatcher =    request.getRequestDispatcher("index.jsp");
    dispatcher.forward(request, response);
}}

还有 JavaBean 类:

package model;

import java.io.Serializable;

public class Calc implements Serializable{
private static final long serialVersionUID = 1L;

private int num1;
private int num2;
private int result;
private String operand;

public Calc() {
    super();
}

public Calc(int num1, int num2, int result, String operand) {
    super();
    this.num1 = num1;
    this.num2 = num2;
    this.result = result;
    this.operand = operand;
}

public int getNum1() {
    return num1;
}

public void setNum1(int num1) {
    this.num1 = num1;
}

public int getNum2() {
    return num2;
}

public void setNum2(int num2) {
    this.num2 = num2;
}

public int getResult() {
    return result;
}

public void setResult(int result) {

    if (operand.equals("+")) {
    result = num11 + num22;
    } else if (operand.equals("-")){
    result = num11 - num22;
    } else if (operand.equals("*")){
    result = num11 * num22;
    } else if (operand.equals("/")){
    result = num11 / num22;
    this.result = result;
}

public String getOperand() {
    return operand;
}

public void setOperand(String operand) {
    this.operand = operand;
}}

结果如下: 它在结果字段中返回一个 0。

感谢您的帮助!

【问题讨论】:

  • 有什么问题?
  • Enter a number: 最好这样写:&lt;label for="operand"&gt;Enter a number&lt;/label&gt;
  • Calc 类呢。
  • action="Process" 你也在哪里发送数据,你的 servlet 的 url 模式是 /servlet
  • 抱歉,为了更好地理解,我将代码从德语翻译成英语,我错过了翻译名称。

标签: java jsp servlets model-view-controller javabeans


【解决方案1】:

尝试将您的输入标签更改为带有选项的选择标签。像这样的

<select id="operand" name="operand" >
  <option value="+">+</option>
  <option value="-">-</option>
  <option value="*">*</option>
  <option value="%">%</option>
</select>

当它们的名称完全相同时,有时 JSP 容易混淆。

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2011-05-06
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多