サーブレットとhtmlを使って、以下のプログラムを作成しました。
-----Servlet-----
package jp.co.iti.servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 Calc
*/
@WebServlet("/Calc")
public class Calc extends HttpServlet {
private static final long serialVersionUID = 1L;
/** * Default constructor. */ public Calc1() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); String num1str=request.getParameter("number1"); //入力された整数 String num2str=request.getParameter("number2"); //入力された整数 String calc = request.getParameter("calc"); //符号 int ans = 0; //空欄の時 if(num1str == "" || num2str == ""){ out.println("<html><body>"); out.println("NULL"); out.println("</body></html>"); }else{ out.println("<html><body>"); int num1 = Integer.parseInt(num1str); int num2 = Integer.parseInt(num2str); if(calc.equals("add")){ ans = num1 + num2; out.println(ans); } else if(calc.equals("sub")){ ans = num1 - num2; out.println(ans); } else if(calc.equals("mul")){ ans = num1 * num2; out.println(ans); } else if(calc.equals("div")){ ans = num1 / num2; out.println(ans); } out.println("</body></html>"); } }
}
-----HTML-----
<!DOCTYPE> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Servlet</title> <script language="javascript" type="text/javascript"> <!-- function formCheck(){ // 半角数字以外で入力された場合は送信しない if(document.Form.number1.value.match(/[^0-9]+/) || document.Form.number2.value.match(/[^0-9]+/)){ //alertを表示 window.alert( '半角数字で入力してください' ) return false; //半角数字で入力されている場合は計算 //0で除算されている場合は送信しない }else if(number2.value.equals("0") && calc.value.equals("div")) { window.alert('0で割ることはできません'); return false; //0以外なら送信 }else{ return true; } } // --> </script> </head> <body> <h1>Servlet</h1> <form name="Form" action="Calc" onsubmit="return formCheck()"> <input type="text" name="number1"> <br><br> <input type="text" name="number2"> <br><br> <select name="calc"> <option value="add">足し算</option> <option value="sub">引き算</option> <option value="mul">掛け算</option> <option value="div">割り算</option> </select><br><br>
<input type="submit" value="送信"> <input type="reset" value="取消"> </form> </body> </html>0で除算が行われた場合はエラーを表示(Javascriptを使用)、その時のifの
条件式に問題があると思うのですが、どのように修正したらよいでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。