関連する記事 XAMPP 内 Tomcat Version 7 の設定と簡単な JSP の実行テスト forEach の中の 処理で out.println が使えないので、文字列の処理は ArrayList を使用して行って、out.println は、拡張 for の中で実行しました。 この記事の趣旨は、JSP を使用して java の基礎を学習するというものなので、JSP のタグや Beans は利用しないつもりです。 sample_03.jsp
<%@ page
language="java"
import="java.util.*"
contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String getData( HttpServletRequest request,String name ) {
String value = request.getParameter( name );
if ( value == null ) {
value = "";
}
return value;
}
%>
<%
// *********************************************************
// ページ処理
// *********************************************************
request.setCharacterEncoding("utf-8");
String strField1 = getData( request, "field1");
String strField2 = getData( request, "field2");
// 配列
String[] month = {"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走"};
// ArrayList に変換 ( 但し、この場合データを追加できない : 固定 : 配列と同じ )
List<String> listMonth = Arrays.asList( month );
%>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">
<style>
#main {
padding: 30px;
font-size: 24px;
}
form {
margin-bottom: 20px;
}
.btn {
vertical-align: top;
}
</style>
</head>
<body>
<div id="main">
<form method="get">
<input type="text" name="field1" value="<%= strField1 %>">
<input type="submit" name="send" value="GET" class="btn btn-info">
</form>
<form method="post">
<input type="text" name="field2" value="<%= strField2 %>">
<input type="submit" name="send" value="POST" class="btn btn-info">
</form>
<div class="alert alert-primary"><%= request.getMethod() %></div>
<%
if ( request.getMethod().equals( "POST" ) ) {
// 配列
for( int i = 0; i < month.length; i++ ) {
out.println( String.format( "%s<br>", month[i] ) );
}
out.println("<hr>");
// ArrayList
for(int i = 0; i < listMonth.size(); i++ ) {
out.println( String.format( "%s<br>", listMonth.get(i) ) );
}
out.println("<hr>");
// 拡張 for
for( String value : listMonth ) {
out.println( String.format( "%s<br>", value ) );
}
out.println("<hr>");
List<String> list = new ArrayList<String>();
// forEach + ラムダ式 ( ※ forEach の中で out が使えない )
listMonth.forEach( (value) -> { list.add( String.format( "%sだよ", value )); } );
for( String value : list ) {
out.println( String.format( "%s<br>", value ) );
}
}
%>
</div>
</body>
</html>
includeディレクティブ を用いて、jsp ファイルを二つに分割します sample_03_base.jsp
<%@ page
language="java"
import="java.util.*"
contentType="text/html;charset=utf-8" %>
<%!
// *********************************************************
// ローカル関数
// *********************************************************
public String getData( HttpServletRequest request,String name ) {
String value = request.getParameter( name );
if ( value == null ) {
value = "";
}
return value;
}
%>
<%
// *********************************************************
// ページ処理
// *********************************************************
request.setCharacterEncoding("utf-8");
String strField1 = getData( request, "field1");
String strField2 = getData( request, "field2");
// 配列
String[] month = {"睦月","如月","弥生","卯月","皐月","水無月","文月","葉月","長月","神無月","霜月","師走"};
// ArrayList に変換 ( 但し、この場合データを追加できない : 固定 : 配列と同じ )
List<String> listMonth = Arrays.asList( month );
%>
<%@ include file="sample_03_part_01.jsp" %>
sample_03_part_01.jsp
<%@ page contentType="text/html;charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport">
<meta charset="UTF-8">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css">
<style>
#main {
padding: 30px;
font-size: 24px;
}
form {
margin-bottom: 20px;
}
.btn {
vertical-align: top;
}
</style>
</head>
<body>
<div id="main">
<form method="get">
<input type="text" name="field1" value="<%= strField1 %>">
<input type="submit" name="send" value="GET" class="btn btn-info">
</form>
<form method="post">
<input type="text" name="field2" value="<%= strField2 %>">
<input type="submit" name="send" value="POST" class="btn btn-info">
</form>
<div class="alert alert-primary"><%= request.getMethod() %></div>
<%
if ( request.getMethod().equals( "POST" ) ) {
// 配列
for( int i = 0; i < month.length; i++ ) {
out.println( String.format( "%s<br>", month[i] ) );
}
out.println("<hr>");
// ArrayList
for(int i = 0; i < listMonth.size(); i++ ) {
out.println( String.format( "%s<br>", listMonth.get(i) ) );
}
out.println("<hr>");
// 拡張 for
for( String value : listMonth ) {
out.println( String.format( "%s<br>", value ) );
}
out.println("<hr>");
List<String> list = new ArrayList<>();
// forEach + ラムダ式 ( ※ forEach の中で out が使えない )
listMonth.forEach( (value) -> { list.add( String.format( "%sだよ", value )); } );
for( String value : list ) {
out.println( String.format( "%s<br>", value ) );
}
}
%>
</div>
</body>
</html>




JDK は、
(少なくとも単独起動に必要です)
プロジェクト作成
▼ 動的 Web プロジェクトを作成します
サーブレット作成
初期のソース
JSP 作成
▼ ソースを以下に変更して実行
( 全て保存して http://localhost:8080/Web1/NewFile.jsp にアクセス )
続きを読む( ソースコード )
※ エキスパートモードで表示しています
アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります


