JSP: CSV¥Õ¥¡¥¤¥ë¤«¤é¤Î¥Ç¡¼¥¿¸¡º÷

¤³¤³¤Ç¤Ï¡¢¥Ç¡¼¥¿¤¬¥«¥ó¥Þ¶èÀÚ¤ê¤ÇÊݸ¤µ¤ì¤Æ¤¤¤ëCSV (Comma Separated Values) ¥Õ¥¡¥¤¥ë¤ò³«¤¤¤Æ¡¢¥Ç¡¼¥¿¤òÆɤ߽Ф·¤Æ½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿¤êÊĤ¸¤¿¤ê¤¹¤ë¼ê½ç¤Ï¡¢¤É¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤âɬÍ×¤È ¤µ¤ì¡¢Æüì¤Ê¼ê½ç¤È¤¤¤¦°õ¾Ý¤ò¼õ¤±¤ë¤«¤âÃΤì¤Þ¤»¤ó¤¬¡¢¤³¤¦¤¤¤¦¤â¤Î¤À¤È ¼õ¤±»ß¤á¤Æ¡¢¤½¤Î¸å¤Î½èÍý¤ò¤·¤Ã¤«¤êÍý²ò¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

CSV¥Õ¥¡¥¤¥ë¤Î¥ª¡¼¥×¥ó¡¢¥Ç¡¼¥¿ÆþÎÏ

¤½¤ì¤Ç¤Ï¡¢¤Þ¤º¤Ï¥Õ¥¡¥¤¥ë¤ò³«¤¤¤Æ¥Ç¡¼¥¿¤òÆɤ߼è¤ë±é½¬¤ò¹Ô¤¤¤Þ¤¹¡£ ¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç¤¢¤ì¤Ð¤¤¤¤¤Î¤Ç¤¹¤¬¡¢¥Ç¡¼¥¿¤¬¥«¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤¿ CSV¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ¹¤ë¤â¤Î¤È¤·¤Þ¤¹¡£¤Þ¤º¤Ï¡¢¥³¥Ô¡¼¥Ú¡¼¥¹¥È¤Ç ·ë¹½¤Ç¤¹¤Î¤Ç¡¢²¼µ­¤Îbuilding.csv¤òºîÀ®¤·¡¢Êݸ¤·¤Æ¤¯¤À¤µ¤¤¡£

building.csv

1,ËÜ´ÛÅï,7,¹ÖµÁ¼¼¡¢±é½¬¼¼¡¢»ö̳¶É¡¢¥¼¥ß¼[ 
2,Âΰé´ÛÅï,2,¥¢¥ê¡¼¥Ê¡¢¥È¥ì¡¼¥Ë¥ó¥°¥ë¡¼¥à 
3,³Ø½Ñ¥Õ¥í¥ó¥Æ¥£¥¢¶¦Æ±¸¦µæ¿ä¿Ê¥»¥ó¥¿¡¼,3,¹ñºÝ¶¦Æ±¸¦µæ¤Î¥Õ¥í¥ó¥Æ¥£¥¢¥×¥í¥¸¥§¥¯¥È¤ÎµòÅÀ 
4,Áí¹ç¾ðÊ󥻥󥿡¼Åï,3,ÅŻҿ޽ñ´Û¡¢¥á¥Ç¥£¥¢¡¦¥Û¡¼¥ë¡¢¥¹¥¿¥¸¥ª 
5,³ØÀ¸²ñ´Û¡Ö¥Ô¥ª¡¼¥Í¡×,2,Éô³èÆ°¡¢¥µ¡¼¥¯¥ë¡¢³Ø±àº×¤Ê¤É¤Î²Ý³°³èÆ°¤ÎµòÅÀ 
6,¿©Æ²Åï,1,Ȭ³Ñ·Á¤Î·úʪ 
7,ÌîµåÉô¥°¥é¥¦¥ó¥É,1,ÌîµåÀìÍÑ¥°¥é¥¦¥ó¥É 
8,¥°¥é¥¦¥ó¥É,1,¿ÌÜŪ¥°¥é¥¦¥ó¥É 
9,¥Æ¥Ë¥¹¥³¡¼¥È,1,¥Æ¥Ë¥¹¥³¡¼¥[ 
10,Ãó¼Ö¾ì,1,³ØÀ¸Ãó¼Ö¾ì 
11,Éô¼¼ÅïI¡¦II,2,Éô¼¼¡¢æÆÉ÷º×¼Â¹Ô°Ñ°÷²ñ¤Î½àÈ÷ºî¶ÈÉô²° 

¼¡¤Ë¡¢¾åµ­¤Îbuilding.csv¥Õ¥¡¥¤¥ë¤ò³«¤¤¤Æ¥Ç¡¼¥¿¤òÆɤ߼è¤ê¡¢É½¤ò½ÐÎϤ¹¤ë JSP¥Õ¥¡¥¤¥ë¤òºî¤ê¤Þ¤¹¡£²¼µ­¤ÎÆâÍƤò¼êÆþÎϤǺîÀ®¤·¡¢building1.jsp¤È¤¤¤¦ ¥Õ¥¡¥¤¥ë̾¤ÇÊݸ¤·¤Æ¤¯¤À¤µ¤¤¡£

building1.jsp

<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page import="java.io.*, java.util.*" %>

<html>
<head><title>¾ðÊóÂç¤Î·úʪ</title></head>
<body>

<h1>¾ðÊóÂç¤Î·úʪ</h1>

<table border="1">
<tr>
  <th>No.</th><th>·úʪ</th><th>³¬¿ô</th><th>ÆÃħ</th>
</tr>

<%
  String tmp;
  StringTokenizer stk;
  FileReader fr = new FileReader(application.getRealPath("building.csv"));
  BufferedReader br = new BufferedReader(fr);

  while (br.ready()) {
    tmp = br.readLine();
    stk = new StringTokenizer(tmp, ",");
    out.println("<tr>");
    while (stk.hasMoreTokens()) {
      out.println("<td>" + stk.nextToken() + "</td>");
    }
    out.println("</tr>");
  }
  br.close();
%>

</table>
</body>
</html>

¤½¤ì¤Ç¤Ï½ç¤òÄɤäÆÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤¹¡£

StringTokenizer stk;

¤Ï¡¢Ê¸»úÎó¤Îʬ³ä¤Ë»ÈÍѤ¹¤ëStringTokenizer¥¯¥é¥¹¤Î ¥¤¥ó¥¹¥¿¥ó¥¹¤òstk¤È¤¤¤¦¥¤¥ó¥¹¥¿¥ó¥¹Ì¾¤ÇÀë¸À¤·¤Æ¤¤¤Þ¤¹¡£Perl¤äPHP¤Ç¤Ï ÆäËʸ»úÎóʬ³äÍѤÎÊÑ¿ô¤ÏÍפê¤Þ¤»¤ó¤¬¡¢Java¤Ç¤Ï¤³¤Î¤è¤¦¤Ê¥¯¥é¥¹¤ò ÍøÍѤ»¤¶¤ë¤òÆÀ¤Þ¤»¤ó¡£

FileReader fr = new FileReader(application.getRealPath("building.csv"));

¤Ï¡¢FileReader¥¯¥é¥¹¤òÍѤ¤¤Æ¡¢¥Õ¥¡¥¤¥ë¤ò³«¤¯¤¿¤á¤Î ¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤·¤Æ¤¤¤Þ¤¹¡£¤Ç¤¹¤¬¡¢ÁȤ߹þ¤ß¥ª¥Ö¥¸¥§¥¯¥È¡ÊÆÃ¤Ë ÌÀ¼¨¤·¤Ê¤¯¤Æ¤â¾¡¼ê¤Ë»ÈÍѤǤ­¤ë¥ª¥Ö¥¸¥§¥¯¥È¡§°ÅÌÛ¥ª¥Ö¥¸¥§¥¯¥È¤È¤â¤¤¤¦¡Ë ¤Ç¤¢¤ëapplication¤ÎgetRealPath() ¤È¤¤¤¦¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ¡¢¥Õ¥¡¥¤¥ë¤ÎÀäÂХѥ¹¤ò¼èÆÀ¤·¤Æ¤¤¤Þ¤¹¡£

¾åµ­¤ÎÀë¸À¤Ç¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬¤Ç¤­¡¢¥Ç¡¼¥¿¤òÆɤ߼è¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢FileReader¤Ï¥Ð¥¤¥Èñ°Ì¤Çʸ»ú¤òÆɤ߼è¤ë¤¿¤á¸úΨ¤¬ °­¤¤¤¿¤á¡¢BufferedReader¥¯¥é¥¹¤òÍѤ¤¤Æ ¤¤¤Þ¤¹¡£

BufferedReader br = new BufferedReader(fr);

BufferedReader¥¯¥é¥¹¤Ï¡¢Æɤ߼è¤Ã¤¿Ê¸»úÎó¤ò¥Ð¥Ã¥Õ¥¡¤ËÃßÀѤ·¤Æ¤«¤é½èÍý¤ò¹Ô ¤¦¤¿¤á¡¢¸úΨ¤¬¾å¤¬¤ê¤Þ¤¹¡£

br.ready()

¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎÆɤ߼è¤ê°ÌÃÖ¤ò¼¨¤¹¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤¬¡¢Æɤ߼è¤ê²Äǽ¤«¤É¤¦¤« ¤òÊÖ¤·¤Þ¤¹¡£Æɤ߼è¤ê²Äǽ¤Ê¸Â¤ê¡¢whileʸ¤¬·«¤êÊÖ¤µ¤ì¤Þ¤¹¡£ ¤½¤Îwhileʸ¤ÎÃæ¤Î½èÍý¤Ç¤¹¤¬¡¢

tmp = br.readLine()

¤Ç¤Ï¡¢1¹Ô¤º¤Äʸ»úÎó¤òÆɤ߹þ¤ó¤Ç¡¢String¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë tmp¤Ë³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Îtmp¤ËÂФ·¤Æ¡¢

stk = new StringTokenizer(tmp, ",");

¤Ç¡¢¥«¥ó¥Þ¶èÀÚ¤ê¤Çʬ³ä¤·¡¢¤½¤Î·ë²Ì¤òStringTokenizer¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹ ¤Ç¤¢¤ëstk¤Ë³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£¤³¤Îʬ³ä·ë²Ì¤ò¼è½Ð¤·¤Æɽ¼¨¤µ¤»¤¿¤¤¤ï¤±¤Ç¤¹¤¬¡¢

while (stk.hasMoreTokens()) {

¤Ï¡¢Ê¬³ä¤µ¤ì¤¿Ê¸»úÎ󤬤ޤÀ¸ºß¤¹¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¡¢Â¸ºß¤¹¤ë¸Â¤êtrue¤ò ÊÖ¤·¤Þ¤¹¡£Ê¬³ä¤µ¤ì¤¿Ê¸»úÎó¤¬Â¸ºß¤¹¤ë¸Â¤ê¡¢whileʸ¤¬·«¤êÊÖ¤µ¤ì¤Þ¤¹¡£¤½¤·¤Æ¡¢

stk.nextToken()

¤Ï¡¢stk.hasMoreTokens()¤Ç¤Þ¤À¸ºß¤¹¤ë¤È¼¨¤µ¤ì¤¿Ê¸»úÎó¤òÆɤߤˤ¤¤­¡¢ ¤½¤Îʸ»úÎó¤ò¼è½Ð¤·¤Æ¤¯¤ì¤Þ¤¹¡£¤³¤Î¼è½Ð¤·¤¿Ê¸»úÎó¤ò¡¢table·Á¼°¤ÎÃæ¤Ç ½ÐÎϤ·¤Æ¤¤¤ë¤È¤¤¤¦Î®¤ì¤Ç¤¹¡£

¼ÂºÝ¤Ë¡¢Sun ONE¾å¤ÇÆ°ºî³Îǧ¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ï¾ÜºÙ¤ò´°Á´¤Ë ³Ð¤¨¤Ê¤¯¤Æ¤â·ë¹½¤Ç¤¹¤Î¤Ç¡¢ ¡Ö¥Õ¥¡¥¤¥ë¤ò³«¤¤¤Æ¡¢1¹Ôñ°Ì¤ÇÆɤ߼è¤ê¡¢ ¥«¥ó¥Þ¶èÀÚ¤ê¤Çʬ³ä¤·¡¢½ÐÎϤ·¤Æ¤¤¤ë¡×¤È¤¤¤¦½èÍý¤Îή¤ì¤òÍý²ò¤¹¤ì¤Ð ½½Ê¬¤Ç¤¹¡£

ÆÃÄê¤Î¾ò·ï¤Ç¤Î¸¡º÷

¾åµ­¤Îbuilding1.jsp¤Ç¤Ï¡¢Ã±½ã¤Ë¥«¥ó¥Þ¶èÀÚ¤ê¤Î¥Ç¡¼¥¿¤òÁ´¤Æ½ÐÎϤ·¤Æ ¤¤¤Þ¤·¤¿¡£CSV¥Õ¥¡¥¤¥ë¤Ïñ¤Ë¥«¥ó¥Þ¤Ç¥Ç¡¼¥¿¤¬¶èÀÚ¤é¤ì¤Æ¤¤¤ë¤À¤±¤Ç¤¹¤Î¤Ç¡¢ ¥Ç¡¼¥¿¤¬»ý¤Ä°À­¡Ê̾Á°¤äÆÃħ¤Ê¤É¡Ë¤Ï¤ï¤«¤ê¤Þ¤»¤ó¡£¤Ç¤¹¤¬¡¢ ¥Ç¡¼¥¿¤¬»ý¤Ä°À­¡¢¤ª¤è¤Ó¥Õ¥¡¥¤¥ë¤Î¹½À®¤¬»öÁ°¤Ë¤ï¤«¤Ã¤Æ¤¤¤ë CSV¥Õ¥¡¥¤¥ë¤Ï»È¤¤¤ä¤¹¤¤¤È¤â¸À¤¨¤Þ¤¹¡£

¤³¤³¤Ç¤Ï¡¢¥Ç¡¼¥¿¤ÎʤӤ¬¤ï¤«¤Ã¤Æ¤¤¤Æ¡¢2ÈÖÌܤΡַúʪ̾¡×¤À¤±¤òÃê½Ð¤·¤Æ ɽ¼¨¤µ¤»¤¿¤¤¤È¤¤¤¦ÆâÍƤò±é½¬¤·¤Þ¤¹¡£²¼µ­¤Îbuilding2.jsp¤òºîÀ®¤·¤Æ ¤¯¤À¤µ¤¤¡£

building2.jsp

<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page import="java.io.*, java.util.*" %>

<html>
<head><title>¾ðÊóÂç¤Î·úʪ</title></head>
<body>

<h1>¾ðÊóÂç¤Î·úʪ</h1>

<table border="1">
<tr>
  <th>·úʪ</th>
</tr>

<%
  String tmp;
  StringTokenizer stk;
  FileReader fr = new FileReader(application.getRealPath("building.csv"));
  BufferedReader br = new BufferedReader(fr);
  int i, num;
  String[] strData = new String[10];

  while (br.ready()) {

    tmp = br.readLine();
    stk = new StringTokenizer(tmp, ",");
    num = stk.countTokens();
    
    for (i=0; i<num; i++) {
      strData[i] = stk.nextToken();
    }
    out.println("<tr>");
    out.println("<td>" + strData[1] + "</td>");
    out.println("</tr>");
  }
  br.close();
%>

</table>
</body>
</html>

¾åµ­¤Ç¤Ï¡¢ÆÃÄê¤Î¥Ç¡¼¥¿¡Ê2ÈÖÌܤΡַúʪ̾¡×¤Î¥Ç¡¼¥¿¡Ë¤À¤±¤ò¼è¤ê½Ð¤·¤¿¤¤¤Î ¤Ç¤¹¤¬¡¢1¹Ôʬ¤Îʸ»úÎó¤òÆɤ߹þ¤ó¤Ç¤­¤¿¸å¤Ë¡¢

for (i=0; i<num; i++) {
  strData[i] = stk.nextToken();
}

¤Î¤è¤¦¤Ë¡¢String¥¯¥é¥¹¤ÎstrData¤È¤¤¤¦ÇÛÎó¤Ë¡¢°ìöʸ»úÎó¤ò³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£ ¤½¤Î¸å¡¢

out.println("<td>" + strData[1] + "</td>");

¤Ë¤ª¤¤¤Æ¡¢2ÈÖÌܤΥǡ¼¥¿(strData[1])¤ò½ÐÎϤ·¤Æ¤¤¤Þ¤¹¡£

¤½¤ì¤Ç¤Ï¡¢¾åµ­¤Î½èÍý¤ò´ðËܤˤ·¤Æ¡¢³¬¿ô¤¬3³¬°Ê¾å¤Î·úʪ¤À¤±¤òɽ¼¨¤µ¤»¤ë JSP¥Õ¥¡¥¤¥ë¤¬²¼µ­¤Ë¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£³¬¿ô¥Ç¡¼¥¿¤Ïbuilding.csv¤Ç¤Ï3ÈÖÌÜ¤Ë µ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢strData[2]¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£

building3.jsp

<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page import="java.io.*, java.util.*" %>

<html>
<head><title>¾ðÊóÂç¤Î·úʪ¸¡º÷</title></head>
<body>

<h1>¾ðÊóÂç¤Î·úʪ¸¡º÷</h1>

<h2>¸¡º÷¾ò·ï¡§¡Ö³¬¿ô¡×¤¬3°Ê¾å</h2>

<table border="1">
<tr>
  <th>No.</th><th>·úʪ</th><th>³¬¿ô</th><th>ÆÃħ</th>
</tr>

<%
  String tmp;
  StringTokenizer stk;
  FileReader fr = new FileReader(application.getRealPath("building.csv"));
  BufferedReader br = new BufferedReader(fr);
  int i, num, flag=0;
  String[] strData = new String[10];

  while (br.ready()) {

    tmp = br.readLine();
    stk = new StringTokenizer(tmp, ",");
    num = stk.countTokens();

    for (i=0; i<num; i++) {
      strData[i] = (String) stk.nextToken();
    }
    if (Integer.parseInt(strData[2]) >= 3) {
      out.println("<tr>");
      for (i=0; i<num; i++) {
        out.println("<td>" + strData[i] + "</td>");
      }
      out.println("</tr>");
      flag = 1;
    }
  }
  br.close();
%>

</table>

<%
  if (flag == 0) {
    out.println("<p>³ºÅö¤¹¤ë·úʪ¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£</p>");
  }
%>

</body>
</html>

¡Ö³¬¿ô¤¬3³¬°Ê¾å¤Ê¤éɽ¼¨¤µ¤»¤ë¡×¤È¤¤¤¦½èÍý¤Ï¡¢²¼µ­¤Îµ­½Ò¤¬Âбþ¤·¤Æ¤¤¤Þ¤¹¡£

if (Integer.parseInt(strData[2]) >= 3) {

³¬¿ô¥Ç¡¼¥¿¤È¤¤¤¤¤Þ¤·¤Æ¤â¡¢strData¤ÏString¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¹¤«¤é¡¢ ʸ»úÎó¤È¤·¤Æǧ¼±¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢¾åµ­¤Î¤è¤¦¤Ë¡¢Integer¥¯¥é¥¹¤Î parseInt()¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ¡¢À°¿ô¤È¤·¤Æ¤ÎÈæ³Ó¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

¤Þ¤¿¡¢1·ï¤â³ºÅö¤¹¤ë·úʪ¤¬¤Ê¤±¤ì¤Ð¡¢¡Ö³ºÅö¤¹¤ë·úʪ¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡× ¤È¤¤¤¦É½¼¨¤ò¤µ¤»¤ë¤è¤¦¤Ë½èÍý¤·¤Æ¤¤¤Þ¤¹¡£

Àµµ¬É½¸½¤òÍѤ¤¤¿¸¡º÷

º£Å٤ϡ¢¡Ö¸¡º÷¡ÊÀµµ¬É½¸½¤ÎÍøÍÑ¡Ë¡×¤Ç ±é½¬¤·¤¿¤è¤¦¤Ë¡¢Àµµ¬É½¸½¤òÍøÍѤ·¤Æ¤ß¤Þ¤¹¡£¡ÖPattern¡×¥¯¥é¥¹¤ä ¡ÖMatcher¡×¥¯¥é¥¹¤òÍøÍѤ·¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤òÀ¸À®¤¹¤ë¤È¤³¤í¤ÏƱ¤¸¤Ç¤¹¡£

²¼µ­¤Îbuilding4.jsp¤Ç¤Ï¡¢¡Ö´Û¡×¤È¤¤¤¦Ê¸»úÎ󤬡¢2ÈÖÌܤΥǡ¼¥¿¤Ç¤¢¤ë ·úʪ̾¤Î¥Ç¡¼¥¿(strData[1])¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¤Æ¤¤¤Þ¤¹¡£

building4.jsp

<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page import="java.io.*, java.util.*, java.util.regex.*" %>

<html>
<head><title>¾ðÊóÂç¤Î·úʪ¸¡º÷</title></head>
<body>

<h1>¾ðÊóÂç¤Î·úʪ¸¡º÷</h1>

<h2>¸¡º÷¾ò·ï¡§¡Ö·úʪ¡×¤Ë¡Ö´Û¡×¤ò´Þ¤à</h2>

<table border="1">
<tr>
  <th>No.</th><th>·úʪ</th><th>³¬¿ô</th><th>ÆÃħ</th>
</tr>

<%
  String tmp;
  StringTokenizer stk;
  FileReader fr = new FileReader(application.getRealPath("building.csv"));
  BufferedReader br = new BufferedReader(fr);
  int i, num, flag=0;
  String[] strData = new String[10];

  Pattern searchPattern = Pattern.compile("´Û");


  while (br.ready()) {

    tmp = br.readLine();
    stk = new StringTokenizer(tmp, ",");
    num = stk.countTokens();

    for (i=0; i<num; i++) {
      strData[i] = (String) stk.nextToken();
    }
    Matcher searchMatcher = searchPattern.matcher(strData[1]);
    if (searchMatcher.find()) {
      out.println("<tr>");
      for (i=0; i<num; i++) {
        out.println("<td>" + strData[i] + "</td>");
      }
      out.println("</tr>");
      flag = 1;
    }
  }
  br.close();
%>

</table>

<%
  if (flag == 0) {
    out.println("<p>³ºÅö¤¹¤ë·úʪ¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£</p>");
  }
%>

</body>
</html>

¥Õ¥©¡¼¥à¤«¤é¤Î¥Ç¡¼¥¿¤ËÂФ¹¤ëÀµµ¬É½¸½¤òÍѤ¤¤¿¸¡º÷

ºÇ¸å¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢HTML¥Õ¥¡¥¤¥ë¤Î¥Õ¥©¡¼¥à¤«¤éÁ÷¤é¤ì¤Æ¤­¤¿¥Ç¡¼¥¿¤ò¸¡º÷¤Î ¾ò·ï¤Ë»ÈÍѤ·¤Þ¤¹¡£building4.jsp¤ËÂФ·¤Æ¡¢¥Õ¥©¡¼¥à¤«¤é¤Î¥Ç¡¼¥¿¤ÎÆɤ߼è¤ê ¤ÎÉôʬ¤òÄɲ乤ë¤À¤±¤Ç¤¹¤Î¤Ç¡¢¤½¤ì¤Û¤ÉÆñ¤·¤¯¤Ï¤¢¤ê¤Þ¤»¤ó¡£

building5.html

<html>
<head>
<title>¾ðÊóÂç¤Î·úʪ¸¡º÷</title>
</head>

<body>
<form method="post" action="building5.jsp">

<p>
¸¡º÷¾ò·ï¤òÆþÎϤ·¤Æ²¼¤µ¤¤
</p>

<table border="1">
<tr>
  <th>·úʪ̾</th>
  <td><input type="text" size="30" name="building" /></td>
</tr>
</table>
<br />
<input type="submit" value="Á÷¿®" />

</form>
</body>
</html>

building5.jsp

<%@page contentType="text/html;charset=Shift_JIS"%>
<%@page import="java.io.*, java.util.*, java.util.regex.*" %>
<%!
private String escapeChar(String strInput){
  StringBuffer strOutput=new StringBuffer();
  for(int i=0;i<strInput.length();i++){
    switch(strInput.charAt(i)){
      case '<' :
        strOutput.append("&lt;");
        break;
      case '>' :
        strOutput.append("&gt;");
        break;
      case '&' :
        strOutput.append("&amp;");
        break;
      case '"' :
        strOutput.append("&quot;");
        break;
      default :
        strOutput.append(strInput.charAt(i));
        break;
    }
  }
  return strOutput.toString();
}
%>
<html>
<head><title>¾ðÊóÂç¤Î·úʪ¸¡º÷</title></head>
<body>
<%
  request.setCharacterEncoding("Shift_JIS");
  String searchBuilding = escapeChar(request.getParameter("building"));
%>
<h1>¾ðÊóÂç¤Î·úʪ¸¡º÷</h1>

<h2>¸¡º÷¾ò·ï¡§¡Ö·úʪ¡×¤Ë¡Ö<%=searchBuilding%>¡×¤ò´Þ¤à</h2>

<table border="1">
<tr>
  <th>No.</th><th>·úʪ</th><th>³¬¿ô</th><th>ÆÃħ</th>
</tr>

<%
  String tmp;
  StringTokenizer stk;
  FileReader fr = new FileReader(application.getRealPath("building.csv"));
  BufferedReader br = new BufferedReader(fr);
  int i, num, flag=0;
  String[] strData = new String[10];

  Pattern searchPattern = Pattern.compile(searchBuilding);


  while (br.ready()) {

    tmp = br.readLine();
    stk = new StringTokenizer(tmp, ",");
    num = stk.countTokens();

    for (i=0; i<num; i++) {
      strData[i] = (String) stk.nextToken();
    }
    Matcher searchMatcher = searchPattern.matcher(strData[1]);
    if (searchMatcher.find()) {
      out.println("<tr>");
      for (i=0; i<num; i++) {
        out.println("<td>" + strData[i] + "</td>");
      }
      out.println("</tr>");
      flag = 1;
    }
  }
  br.close();
%>

</table>

<%
  if (flag == 0) {
    out.println("<p>³ºÅö¤¹¤ë·úʪ¤Ï¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£</p>");
  }
%>

</body>
</html>


[JSP¤Î¥Ú¡¼¥¸] [´Ä¶­¾ðÊó¥·¥¹¥Æ¥àÏÀ¤Î¥Ú¡¼¥¸]
¿Üºê½ã°ì¡¡µþÅÔÂç³ØÂç³Ø ¹©³Ø¸¦µæ²ÊÅԻԴĶ­¹©³ØÀ칶 ´Ä¶­¾ðÊó³Ø¹ÖºÂ