MyUtils

View on GitHub

Java/Jsp

WebサーバがリアルタイムにHTMLページを組み立て、Webブラウザに送り返すという仕組み。 JSPでは、通常のHTMLページの代わりに、「.jsp」という拡張子を持つ「JSPページ」を記述することで、Webコンテンツを動的に生成できます

tomcat フォルダ構成

user@macbook webapps % tree ./helloworld 
# 🌟HTMLファイル、イメージファイル、JSPファイルなどを格納
# ディレクトリは自由に作成できます
/usr/local/tomcat/webapps/helloworld/ # 🌟webアプリルートディレクトリ
├── WEB-INF # 🌟Webアプリケーション環境定義ファイル(web.xml)を格納
│   ├── classes # 🌟サーブレットなどのJavaのクラスファイルを格納
│   │   └── xxx.class
│   └── lib # 🌟JavaクラスファイルをJAR形式のJARファイルを格納
│   └── web.xml
└── index.jsp

3 directories, 3 files

XMLファイル書き方

<?xml version="1.0"?>
<web-app>
    <servlet>
        <!-- 🌟サーブレット・クラスsample.TestServlet定義 -->
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>sample.TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!-- 🌟sample.TestServletに/testというURLを割り当て -->
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

サンプル1(for loop)

// sample1.jsp
<%@ page contentType="text/html; charset=Windows-31J" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
  <head>
    <title>JSPサンプル</title>
  </head>
  <body>

    <!-- 🌟こうすることで、よくあるforループができる -->
    <c:forEach var="item" begin="1" end="10">
        ${item}
    </c:forEach>
    <div id="text"></div>

  </body>

  <script type="text/javascript">
 
  <!-- 🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟 -->
  <!-- 🌟script内に書き込むことでjsのデータを書き込むこともできる -->
  let data = {
  <%
  for(int i=0;i<10;i++){
    if (i !=0) out.println(",");
      out.println( "data" +i + ":" + i);
    }
    %>
  };

  temp = document.getElementById("text");
  temp.innerText = JSON.stringify(data);
  <!-- 🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟 -->
</script>

</html> 

サンプル2

// pageディレクティブ
// <%@ このタグで JSPページの文字コードやコンテンツ内容をTomcatに伝える機能を持つ
<%@ page contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="now" class="java.util.Date" />

//取得したいインスタンスのクラスをインポートする
<%@ page import = "bean.Human" %>

//リクエストスコープ(cookie)からインスタンスを取得する
<% Human h = (Human) request.getAttribute("human"); %>

<html>
  <head>
    <title>JSPサンプル</title>
  </head>
  <body>
    //インスタンスのプロパティにアクセスし、値を取り出す
    <%= h.getName() %>さんの年齢は<%= h.getAge() %>歳です
    こんにちは、今の日時は <%= now %> です。

    // 式: Java式の実行とWebブラウザへの出力
    <%= new java.util.Date() %>
    // スクリプトレット: Javaコードの実行
    <% Date d = new Date(); %>
    // 宣言: Javaフィールドまたはメソッドの宣言
    <%! Date d = null; %>
    // コメント
    <%-- コメント --%>
  </body>
</html>

サーブレットでセッション(Cookie)を使う

Human human = new Human();
human.setName("かずきち");
human.setAge(29);

//HttpSessionインスタンスの取得(javax.servlet.ttp.HttpSessionをインポートしておく必要がある)
HttpSession session = request.getSession();

//セッションスコープにインスタンスを保存
// 🌟クラスをセットしていることに注目!!
// jsp側からgetで取得することもできる
session.setAttribute("human", human);

//セッションスコープからインスタンスを取得
Human h = (Human) session.getAttribute("human");