SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

JAVA Servlet、JSP 基礎編7 - フォームリクエスト、クエリーリクエスト、日本語

■フォームリクエスト(Servlet)

  ・method="post" によるリクエストは、次のようにする。
    Servlet 側では、doPost メソッドオーバーライドにより、
    req.getParameter("name"); でデータを引き取る。

  ・数値に変換するには、
     int p1 = Integer.parseInt(req.getParameter("a"));
    等を使用する。
    但し、null または、数値変換無効データでは例外が発生する。

  ・データの日本語部分が、うまく引き取れない。(^^;
    調査の結果、Tomcat の server.xml にコード変換の指定が必要と判明した。
    次のように server.xml の最後に <Context>...</Context> を追加した。

...
...
...
    </ContextManager>
    <Context path="/sak" docBase="webapps/sak" debug="0" reloadable="true">
      <DecodeInterceptor defaultEncoding="Shift_JIS" useSessionEncoding="false" />
    </Context>
</Server>

  ・この修正後、Tomcat を再起動すると、日本語が処理できるようになる。
    Perl、PHP、ASP に比較して、どうもこのへんは面倒である。

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>フォームリクエストテスト</TITLE>
</HEAD>
<BODY>
<P align="center">▼ フォームリクエストテスト ▼</P>
<HR>
<DIV>
<FORM action="sak/servlet/test?c=123" id="FORM1" method="post" NAME="FORM1">
<TABLE border=1 cellPadding=3 cellSpacing=1>
  <TBODY>
    <TR>
      <TD nowrap><FONT size="-1">パラメタ a</FONT></TD>
      <TD nowrap><INPUT id="a" NAME="a" type="text" size="42" maxlength="40" value=""></TD>
    </TR>
    <TR>
      <TD nowrap><FONT size="-1">パラメタ b</FONT></TD>
      <TD nowrap><INPUT id="b" NAME="b" type="text" size="42" maxlength="40" value=""></TD>
    </TR>
  </TBODY>
</TABLE>
<BR>
<TABLE border=1 cellPadding=3 cellSpacing=1>
  <TBODY>
    <TR>
      <TD nowrap><INPUT id=submit1 NAME=submit1 type=submit value="  実行  "></TD>
      <TD nowrap><INPUT id=reset1 NAME=reset1 type=reset value="リセット"></TD>
    </TR>
  </TBODY>
</TABLE>
</FORM>
</DIV>
<HR>
</BODY>
</HTML>

// test.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class test extends HttpServlet {

  public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
    res.setContentType("text/html; charset=SJIS");
    PrintWriter rw = res.getWriter();
    String p1 = req.getParameter("a");
    String p2 = req.getParameter("b");
    String p3 = req.getParameter("c");
    rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">");
    rw.println("<HTML>");
    rw.println("<HEAD>");
    rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
    rw.println("<TITLE>JAVA Servlet Test</TITLE>");
    rw.println("</HEAD>");
    rw.println("<BODY>");
    if (p1.equals("")) {
      rw.println("<P>パラメタ a = 空</P>");
    }
    else {
      rw.println("<P>パラメタ a = " + p1 + "</P>");
    }
    if (p2.equals("")) {
      rw.println("<P>パラメタ b = 空</P>");
    }
    else {
      rw.println("<P>パラメタ b = " + p2 + "</P>");
    }
    if (p3.equals("")) {
      rw.println("<P>パラメタ c = 空</P>");
    }
    else {
      rw.println("<P>パラメタ c = " + p3 + "</P>");
    }
    rw.println("</BODY>");
    rw.println("</HTML>");
  }

}

■フォームリクエスト(JSP)

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>フォームリクエストテスト</TITLE>
</HEAD>
<BODY>
<P align="center">▼ フォームリクエストテスト ▼</P>
<HR>
<DIV>
<FORM action="sak/jsp/test.jsp?c=123" id="FORM1" method="post" NAME="FORM1">
<TABLE border=1 cellPadding=3 cellSpacing=1>
  <TBODY>
    <TR>
      <TD nowrap><FONT size="-1">パラメタ a</FONT></TD>
      <TD nowrap><INPUT id="a" NAME="a" type="text" size="42" maxlength="40" value=""></TD>
    </TR>
    <TR>
      <TD nowrap><FONT size="-1">パラメタ b</FONT></TD>
      <TD nowrap><INPUT id="b" NAME="b" type="text" size="42" maxlength="40" value=""></TD>
    </TR>
  </TBODY>
</TABLE>
<BR>
<TABLE border=1 cellPadding=3 cellSpacing=1>
  <TBODY>
    <TR>
      <TD nowrap><INPUT id=submit1 NAME=submit1 type=submit value="  実行  "></TD>
      <TD nowrap><INPUT id=reset1 NAME=reset1 type=reset value="リセット"></TD>
    </TR>
  </TBODY>
</TABLE>
</FORM>
</DIV>
<HR>
</BODY>
</HTML>

<%@ page import="java.util.*" contentType="text/html; charset=Shift_JIS"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>JAVA Server Page(JSP) Test</TITLE>
</HEAD>
<BODY>
<%
  String p1 = request.getParameter("a");
  String p2 = request.getParameter("b");
  String p3 = request.getParameter("c");

  if (p1.equals("")) {
    out.println("<P>パラメタ a = 空</P>");
  }
  else {
    out.println("<P>パラメタ a = " + p1 + "</P>");
  }
  if (p2.equals("")) {
    out.println("<P>パラメタ b = 空</P>");
  }
  else {
    out.println("<P>パラメタ b = " + p2 + "</P>");
  }
  if (p3.equals("")) {
    out.println("<P>パラメタ c = 空</P>");
  }
  else {
    out.println("<P>パラメタ c = " + p3 + "</P>");
  }
%>
</BODY>
</HTML>

■クエリーリクエスト(Servlet)

  ・QUERY_STRING によるリクエストは、次のようにする。
    Servlet 側では、doGet メソッドオーバーライドにより、
    req.getParameter("name"); でデータを引き取る。
    尚、未指定の QUERY_STRING は、NullPointerException でエラーになる。
    if (req.getParameter("a") != null) で、パラメタ指定有無のチェックを
    行った。

http://localhost/sak/servlet/test?b=123&c=456
http://localhost/sak/servlet/test?a=abc&b=123&c=456

// test.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class test extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
    res.setContentType("text/html; charset=SJIS");
    PrintWriter rw = res.getWriter();
    String p1 = "";
    String p2 = "";
    String p3 = "";
    if (req.getParameter("a") != null) {
      p1 = req.getParameter("a");
    }
    if (req.getParameter("b") != null) {
      p2 = req.getParameter("b");
    }
    if (req.getParameter("c") != null) {
      p3 = req.getParameter("c");
    }
    rw.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">");
    rw.println("<HTML>");
    rw.println("<HEAD>");
    rw.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
    rw.println("<TITLE>JAVA Servlet Test</TITLE>");
    rw.println("</HEAD>");
    rw.println("<BODY>");
    if (p1.equals("")) {
      rw.println("<P>パラメタ a = 空</P>");
    }
    else {
      rw.println("<P>パラメタ a = " + p1 + "</P>");
    }
    if (p2.equals("")) {
      rw.println("<P>パラメタ b = 空</P>");
    }
    else {
      rw.println("<P>パラメタ b = " + p2 + "</P>");
    }
    if (p3.equals("")) {
      rw.println("<P>パラメタ c = 空</P>");
    }
    else {
      rw.println("<P>パラメタ c = " + p3 + "</P>");
    }
    rw.println("</BODY>");
    rw.println("</HTML>");
  }

}

■クエリーリクエスト(JSP)

<%@ page import="java.util.*" contentType="text/html; charset=Shift_JIS"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>JAVA Server Page(JSP) Test</TITLE>
</HEAD>
<BODY>
<%
  String p1 = "";
  String p2 = "";
  String p3 = "";
  if (request.getParameter("a") != null) {
    p1 = request.getParameter("a");
  }
  if (request.getParameter("b") != null) {
    p2 = request.getParameter("b");
  }
  if (request.getParameter("c") != null) {
    p3 = request.getParameter("c");
  }

  if (p1.equals("")) {
    out.println("<P>パラメタ a = 空</P>");
  }
  else {
    out.println("<P>パラメタ a = " + p1 + "</P>");
  }
  if (p2.equals("")) {
    out.println("<P>パラメタ b = 空</P>");
  }
  else {
    out.println("<P>パラメタ b = " + p2 + "</P>");
  }
  if (p3.equals("")) {
    out.println("<P>パラメタ c = 空</P>");
  }
  else {
    out.println("<P>パラメタ c = " + p3 + "</P>");
  }
%>
</BODY>
</HTML>

■JAVA Servlet、JSP 基礎編資料
■JAVA Servlet、JSP + PostgreSQL 編資料
■JAVA Servlet、JSP + Oracle9i 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
■SQL 基礎編資料
■SQL 基礎実地編資料
■SQL チューニング編資料
■Oracle PL/SQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK