html→サーブレット→jsp で値を受け渡す方法
サーブレットを使い簡単な計算プログラムを作りました。
サーブレットは初めてだったので 忘れないうちにアウトプットします。
ファイル構成
ファイルの位置は以下のようになります。
servletパッケージ
CalcServlet.java
package servlet; import java.io.IOException; import javax.servlet.RequestDispatcher; 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("/CalcServlet") public class CalcServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { exec(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { exec(request, response); } private void exec(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String inputNumber = request.getParameter("number"); Hold hold = new Hold(); Calc calc = new Calc(); int value = Integer.parseInt(inputNumber); hold.setInputValue(value); int result = calc.calculate(value); hold.setCalculateResult(result); request.setAttribute("hold", hold); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Result.jsp"); dispatcher.forward(request, response); } }
Hold.java(入力した値を保持しておくクラス)
package servlet; public class Hold { private int inputValue; private int calculateResult; public int getInputValue() { return inputValue; } public void setInputValue(int inputValue) { this.inputValue = inputValue; } public int getCalculateResult() { return calculateResult; } public void setCalculateResult(int calculateResult) { this.calculateResult = calculateResult; } }
Calc.java(計算するクラス)
package servlet; public class Calc { public int calculate(int value) { return value * value; } }
htmlファイル
input.html(入力画面のファイル)
<!DOCTYPE html> <html> <head> <meta charset="SJIS"> <title>計算プログラム</title> </head> <body> <form action="/sample/CalcServlet" method="post">: <p>計算する値<input type="text" name="number"></p> <input type="submit" value ="送信"> </form> </body> </html>
jspファイル
Result.jsp(結果を表示するファイル)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="servlet.Hold" %> <% Hold hold = (Hold) request.getAttribute("hold"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>計算プログラム</title> </head> <body> <p>答え</p> <form action="/example/input.html"> <p><%= hold.getCalculateResult() %></p> <a href="/sample/input.html">戻る</a> </form> </body> </html>
表示結果
このようになりました。
↓
あとがき
サーブレットはとりあえずMVCモデルで 処理をhtmlから受け取った値を処理してjspに値を返すということがわかりました。