👌

JSP

2023/05/16に公開

内容について

新卒エンジニアが研修で学んだことの備忘録

フォルダ作成

  1. WebContent を右クリック
  2. 新規->JSPファイル

コーディング

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% String str = "Hello World!"; 
			for(int i = 0 ; i < 5 ; i++){
	%>
	<h1><%= str %></h1>
	<% } %>
</body>
</html>

JSPでフォームを作る

入力画面

jsp11.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="jsp12.jsp">
		<label>お名前</label>
		<input type="text" name="onamae">
		<button type="submit">送信</button>
	</form>
</body>
</html>

出力

jsp12.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h2>こんにちは!<%= request.getParameter("onamae") %>さん!</h2>
</body>
</html>
文字化けしたら

<% request.setCharacterEncoding("UTF-8"); %> を追記してみる

サーブレットでHello World!してみる

サーブレットはjavaのクラス
現場ではコントローラーって言ったりする
JavaがWEBを扱うために用意したクラスで、HttpServlet がある
これをサーブレットと呼ぶ!

コントローラーの役割

  1. リクエストを受け付ける
  2. Modelを使ってデータコントロールができる
  3. viewを使ってレスポンスするHTMLを生成できる
  4. ユーザにレスポンスする

サーブレットを作る場所と作り方

  1. servletパッケージを右クリック
  2. サーブレットを選択

クラス名の設定

クラス Hello と入力
ここで、完了を押さず、次へを押す
URLマッピングをHelloをhelloに変更

作成できたら...

下のようなファイルができる!

package servlet;

import java.io.IOException;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Hello
 */
public class Sample2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Hello() {
    	//親クラスを呼び出して使う
        super();
        // 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
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

解説

get送信のときに動いているメソッド

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

post送信のときに動いているメソッド

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                // TODO Auto-generated method stub
                doGet(request, response);
        }}

先ほどかいたHello worldを呼び出す

書き換える

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		response.getWriter().append("<h1>Hello World!</h1>");
	}

URLをみてみる

http://localhost:8080/Sample/hello

http://localhost:8080/Sample/ ドキュメントルート
helloが呼び出されて、コントロールが動き出す

Discussion