【发布时间】: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:最好这样写:<label for="operand">Enter a number</label> -
Calc类呢。 -
action="Process"你也在哪里发送数据,你的 servlet 的 url 模式是/servlet -
抱歉,为了更好地理解,我将代码从德语翻译成英语,我错过了翻译名称。
标签: java jsp servlets model-view-controller javabeans