今回は、「サーブレット+JSP(2)―処理パターン―」です。
サーブレットとJSPを併用するときの処理パターンを見てみましょう。
■動画はこちら
■動画で使用しているソースコード
<処理結果の渡し方が違う処理パターン(1)>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class App1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //パラメータの取得 String str1 = req.getParameter("str1"); String str2 = req.getParameter("str2"); //モデルで文字列結合 Concat c = new Concat(); c.setStr1(str1); c.setStr2(str2); c.join(); //モデルをリクエストにセット req.setAttribute("result", c); //ビュー(JSP)に結果を出力してもらう ServletContext ctx = getServletContext(); RequestDispatcher rd = ctx.getRequestDispatcher("/WEB-INF/join.jsp"); rd.forward(req, resp); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package yurufuwa.prog.sample; public class Concat { private String str1 = null; private String str2 = null; private String answer = null; public void join() { answer = str1 + str2; } public void setStr1(String val) { str1 = val; } public void setStr2(String val) { str2 = val; } public String getAnswer() { return answer; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="yurufuwa.prog.sample.Concat" %> <% //モデルをリクエストから取得 Concat c = (Concat)request.getAttribute("result"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> 文字列の結合結果:<br /> <%= c.getAnswer() %> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class App1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //パラメータの取得 String str1 = req.getParameter("str1"); String str2 = req.getParameter("str2"); //モデルで文字列結合 Concat c = new Concat(); c.setStr1(str1); c.setStr2(str2); c.join(); //モデルの結果クラスを取得 ConcatResult cr = c.getResult(); //モデルの結果クラスをリクエストにセット req.setAttribute("result", cr); //ビュー(JSP)に結果を出力してもらう ServletContext ctx = getServletContext(); RequestDispatcher rd = ctx.getRequestDispatcher("/WEB-INF/join.jsp"); rd.forward(req, resp); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package yurufuwa.prog.sample; public class Concat { private String str1 = null; private String str2 = null; private ConcatResult result = null; public void join() { //文字列の結合 String answer = str1 + str2; //結果クラスに結合結果をセット result = new ConcatResult(); result.setAnswer(answer); } public void setStr1(String val) { str1 = val; } public void setStr2(String val) { str2 = val; } public ConcatResult getResult() { return result; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package yurufuwa.prog.sample; public class ConcatResult { private String answer = null; public void setAnswer(String ans) { answer = ans; } public String getAnswer() { return answer; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="yurufuwa.prog.sample.ConcatResult" %> <% //モデルの結果クラスをリクエストから取得 ConcatResult cr = (ConcatResult)request.getAttribute("result"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> 文字列の結合結果:<br /> <%= cr.getAnswer() %> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package yurufuwa.prog.sample; import java.io.IOException; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class App1 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //モデルで文字列結合 Concat c = new Concat(); c.join(req); //モデルをリクエストにセット req.setAttribute("result", c); //ビュー(JSP)に結果を出力してもらう ServletContext ctx = getServletContext(); RequestDispatcher rd = ctx.getRequestDispatcher("/WEB-INF/join.jsp"); rd.forward(req, resp); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package yurufuwa.prog.sample; import jakarta.servlet.http.HttpServletRequest; public class Concat { private String answer = null; public void join(HttpServletRequest req) { //パラメータの取得 String str1 = req.getParameter("str1"); String str2 = req.getParameter("str2"); //文字列の結合 answer = str1 + str2; } public String getAnswer() { return answer; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="yurufuwa.prog.sample.Concat" %> <% //モデルをリクエストから取得 Concat c = (Concat)request.getAttribute("result"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> 文字列の結合結果:<br /> <%= c.getAnswer() %> </body> </html> |