###前提・実現したいこと
Eclipseの環境でjavaの電卓アプリの件で以前質問させていただいたものです。
その際に、web上で動くためのソースコードが足りてないとの指摘から、そのためのソースコードを調べて追加しました。
再度、ステータス404のエラーが出て原因がわからなく、どう対処すればいいかわからない状態です。
エラー解決してちゃんと電卓アプリが動くようにするにはどうすればいいでしょうか。
###発生している問題・エラーメッセージ
HTTPステータス 404 - Not Found Type ステータスレポート メッセージ /Dentaku3/servletpack2.DentakuServlet 説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
###該当のソースコード
Java //概要部分 //APIをインポートをする import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.JFrame; import java.awt.BorderLayout; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.JLabel; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.annotation.WebServlet @WebServlet("/Dentaku") //URLパターンの設定 //HttpServletの継承 public class DentakuServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("..."); out.println("</html>"); } } //レイアウト部分 public static void main(String args[]){ Dentaku c = new Dentaku(); c.show(); } //フレームを作成する public class DentakuFrame extends JFrame { private static final long serialVersionUID = 1L; JPanel contentPane = new JPanel(); BorderLayout borderLayout1 = new BorderLayout(); JTextField result = new JTextField(""); //計算結果を表示するテキストフィールド double stackedValue = 0.0; boolean isStacked = false; boolean afterCalc = false; String currentOp = ""; //フレームのビルド public DentakuFrame() { contentPane.setLayout(borderLayout1); this.setSize(new Dimension(250, 300)); this.setTitle("電卓"); this.setContentPane(contentPane); contentPane.add(result, BorderLayout.NORTH); //テキストフィールドを配置 JPanel keyPanel = new JPanel(); //ボタンを配置するパネルを用意 keyPanel.setLayout(new GridLayout(4, 4)); contentPane.add(keyPanel, BorderLayout.CENTER); keyPanel.add(new NumberButton("7"), 0); keyPanel.add(new NumberButton("8"), 1); keyPanel.add(new NumberButton("9"), 2); keyPanel.add(new CalcButton("÷"), 3); keyPanel.add(new NumberButton("4"), 4); keyPanel.add(new NumberButton("5"), 5); keyPanel.add(new NumberButton("6"), 6); keyPanel.add(new CalcButton("×"), 7); keyPanel.add(new NumberButton("1"), 8); keyPanel.add(new NumberButton("2"), 9); keyPanel.add(new NumberButton("3"), 10); keyPanel.add(new CalcButton("-"), 11); keyPanel.add(new NumberButton("0"), 12); keyPanel.add(new NumberButton("."), 13); keyPanel.add(new CalcButton("+"), 14); keyPanel.add(new CalcButton("="), 15); contentPane.add(new ClearButton(), BorderLayout.SOUTH); this.setVisible(true); } /* テキストフィールドに引数の文字列をつなげる */ public void appendResult(String c) { if (!afterCalc) //演算子ボタンを押した直後でないなら{ result.setText(result.getText() + c); } else { result.setText(c); afterCalc = false; } } /* 数字を入力ボタンの定義 */ public class NumberButton extends JButton implements ActionListener { private static final long serialVersionUID = 1L; public NumberButton(String keyTop) { super(keyTop); this.addActionListener(this); } } public class NumberButton extends JButton implements ActionListener { private static final long serialVersionUID = 1L; public NumberButton(String keyTop) { super(keyTop); this.addActionListener(this); } public void actionPerformed(ActionEvent evt) { String keyNumber = this.getText(); appendResult(keyNumber); } } /* 演算子ボタンを定義 */ public class CalcButton extends JButton implements ActionListener { private static final long serialVersionUID = 1L; public CalcButton(String op) { super(op); this.addActionListener(this); } public void actionPerformed (ActionEvent e) { if (isStacked) { //以前に演算子ボタンが押されたのなら計算結果を取り出す double resultValue = (Double.valueOf(result.getText())) .double Value(); if (currentOp.equals("+")) //演算子に応じて計算する stackedValue += resultValue; else if (currentOp.equals("−")) stackedValue −= resultValue; //プラス else if (currentOp.equals("×")) stacked Value *= resultValue; else if (currentOp.equals("÷")) stacked Value /= resultValue; result.setText(String.valueOf(stackedValue)); //計算結果をテキストフィールドに設定 } currentOp = this.getText(); //ボタン名から押されたボタンの演算子を取り出す stackedValue = (Double.valueOf(result.getText())).doubleValue(); afterCalc = true; if (currentOp.equals("=")) isStacked = false; else isStacked = true; } } /* クリアボタンの定義 */ public static ClassButton extends JButton implements ActionListener { private static final long serealVersionUID = 1L; public ClassButton() { super("C"); this.addActionListener(this); } public void actionPerformed(ActionEvent evt) { stackedValue = 0.0; afterCalc = false; isStacked = false; result.setText(""); } } }
###試したこと
スッキリわかるサーブレット&JSP入門の本をみてweb上で動くためのソースコードを追加しました。
###補足情報(言語/FW/ツール等のバージョンなど)
回答2件
あなたの回答
tips
プレビュー