HttpServletRequest
日本語 | 超文書転送規約小奉仕人要求 |
英語 | Hypertext Transfer Protocol servlet request |
ふりがな | えっちてぃーてぃーぴーさーぶれっとりくえすと、えいちてぃーてぃーぴーさーぶれっとりくえすと |
フリガナ | エッチティーティーピーサーブレットリクエスト、エイチティーティーピーサーブレットリクエスト |
リクエストを格納するインターフェイス。
J2EEに含まれるインターフェイスのひとつ。パッケージも含めたインターフェイス名はjavax.servlet.http.HttpServletRequest。
サーブレットのdoGet()メソッド、doPost()メソッドの第1引数がこのインターフェイスである。実際に渡されるのはその実装クラスとなる。
このインターフェイスは「リクエスト」の情報を持つ。
リクエストとして渡されたHTTPメソッドやURL、クッキーを取得することができる。
このインターフェイスの目的のひとつは、入力フォームで入力された値を取得することである。
まずsetCharacterEncoding()メソッドで、入力値の文字コードを指定する。これは通常、入力フォームの文字コードを、IANAに登録された名称で指定する。
次にgetParameter()メソッドで「名前」を指定することで「値」を取得する。「名前」とは、入力フォームの<INPUT>タグのNAME属性で指定された名前である。
リクエストパラメーターの値も同様に取得できる。
リクエストパラメーターの場合、「名前=値」の「名前」を指定することで取得できる。
ただし、文字コードは入力フォームの場合と同じでなければならない。もしくは文字コードもリクエストパラメーターとして指定させる。ただしその場合、setCharacterEncoding()メソッドはgetParameter()メソッドのあとでは機能しない場合があるため、注意が必要。
さらに、JSPにJavaBeansを渡す場合にも使用する。
サーブレット側で「画面に出力するための情報」をJava Beanクラスに格納し、HttpServletRequestインターフェイスのsetAttribute()メソッドで名前を付けてセットすることで、JSP側で<jsp:useBean>JSPタグでそのまま変数として使用することができる。
このように、HttpServletRequestインターフェイスは非常に使い道の多いインターフェイスである。
J2EEに含まれるインターフェイスのひとつ。パッケージも含めたインターフェイス名はjavax.servlet.http.HttpServletRequest。
サーブレットのdoGet()メソッド、doPost()メソッドの第1引数がこのインターフェイスである。実際に渡されるのはその実装クラスとなる。
このインターフェイスは「リクエスト」の情報を持つ。
リクエストとして渡されたHTTPメソッドやURL、クッキーを取得することができる。
このインターフェイスの目的のひとつは、入力フォームで入力された値を取得することである。
まずsetCharacterEncoding()メソッドで、入力値の文字コードを指定する。これは通常、入力フォームの文字コードを、IANAに登録された名称で指定する。
次にgetParameter()メソッドで「名前」を指定することで「値」を取得する。「名前」とは、入力フォームの<INPUT>タグのNAME属性で指定された名前である。
リクエストパラメーターの値も同様に取得できる。
リクエストパラメーターの場合、「名前=値」の「名前」を指定することで取得できる。
ただし、文字コードは入力フォームの場合と同じでなければならない。もしくは文字コードもリクエストパラメーターとして指定させる。ただしその場合、setCharacterEncoding()メソッドはgetParameter()メソッドのあとでは機能しない場合があるため、注意が必要。
さらに、JSPにJavaBeansを渡す場合にも使用する。
サーブレット側で「画面に出力するための情報」をJava Beanクラスに格納し、HttpServletRequestインターフェイスのsetAttribute()メソッドで名前を付けてセットすることで、JSP側で<jsp:useBean>JSPタグでそのまま変数として使用することができる。
このように、HttpServletRequestインターフェイスは非常に使い道の多いインターフェイスである。
参考サイト
<!-- webapps/sample-servlet/form.html -->
<!-- http://localhost:8080/sample-servlet/form.html でアクセスできます。 --><HTML>
<HEAD>
<TITLE>入力フォーム</TITLE>
</HEAD>
<BODY>
<!-- 入力フォームです。 -->
<FORM METHOD="POST" ACTION="servlet/SampleServlet">
名前:<INPUT TYPE="text" NAME="name" SIZE="10"><BR>
<INPUT TYPE="submit" VALUE="実行"><BR>
</FORM>
</BODY>
</HTML>
// webapps/sample-servlet/WEB-INF/src/SampleServlet.java
// http://localhost:8080/sample-servlet/servlet/SampleServlet でアクセスできます。
// このサンプルプログラムは「サーブレット」の項目に書かれている準備を行ってから使用してください。
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.SampleBean;
/**
* サーブレットのテスト。
*/
public class SampleServlet extends HttpServlet
{
/**
* リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。
*/
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
{
// Content-Typeをセット。
response.setContentType( "text/html;charset=Windows-31J" );
// 呼び出した際のURLを取得します。
StringBuffer requestURL = request.getRequestURL();
System.out.println( requestURL.toString() );
// http://localhost:8080/sample-servlet/servlet/SampleServlet
// リクエストのHTTPメソッドを取得します。
String method = request.getMethod();
System.out.println( method );
// POST
// 入力値の文字コードをセットします。
// HTMLの文字コードを指定してください。
request.setCharacterEncoding( "Windows-31J" );
// 入力フォームから入力された値を取得します。
String name = request.getParameter( "name" );
System.out.println( name );
// (入力フォームの「名前:」に入力された文字列)
// SampleBean Java Beanクラスを作成し、JSPで使えるようにセットします。
SampleBean sampleBean = new SampleBean();
sampleBean.setData( 100 );
request.setAttribute( "sample_bean", sampleBean );
// サーブレットコンテキストを取得します。
ServletContext servletContext = getServletContext();
// リクエストディスパッチャーを取得します。
RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher( "/WEB-INF/jsp/sample.jsp" );
// 指定したJSPへと転送します。
requestDispatcher.forward( request, response );
}
/**
* リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。
*/
protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
{
// でも面倒なのでdoGet()メソッドに丸投げします。
doGet( request, response );
}
}
// webapps/sample-servlet/WEB-INF/src/bean/SampleBean.java
package bean;
// Java Beanは、JSPで使用する関係でパッケージに入れる必要があります。
// ここではbeanパッケージに入れます。
// 一応、Java Beanは直列化可能にする必要があります。
// 実際には必要ない場合も多いですが。
import java.io.Serializable;
/**
* SampleServletで使用するJava Beanクラスです。
*/
public class SampleBean implements Serializable
{
/**
* プロパティ。
*/
private int data;
/**
* コンストラクタ。
*/
public SampleBean()
{
data = 0;
}
/**
* プロパティのgetter。
*/
public int getData()
{
return data;
}
/**
* プロパティのsetter。
*/
public void setData( int value )
{
this.data = value;
}
}
<!-- http://localhost:8080/sample-servlet/form.html でアクセスできます。 --><HTML>
<HEAD>
<TITLE>入力フォーム</TITLE>
</HEAD>
<BODY>
<!-- 入力フォームです。 -->
<FORM METHOD="POST" ACTION="servlet/SampleServlet">
名前:<INPUT TYPE="text" NAME="name" SIZE="10"><BR>
<INPUT TYPE="submit" VALUE="実行"><BR>
</FORM>
</BODY>
</HTML>
// webapps/sample-servlet/WEB-INF/src/SampleServlet.java
// http://localhost:8080/sample-servlet/servlet/SampleServlet でアクセスできます。
// このサンプルプログラムは「サーブレット」の項目に書かれている準備を行ってから使用してください。
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.SampleBean;
/**
* サーブレットのテスト。
*/
public class SampleServlet extends HttpServlet
{
/**
* リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。
*/
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
{
// Content-Typeをセット。
response.setContentType( "text/html;charset=Windows-31J" );
// 呼び出した際のURLを取得します。
StringBuffer requestURL = request.getRequestURL();
System.out.println( requestURL.toString() );
// http://localhost:8080/sample-servlet/servlet/SampleServlet
// リクエストのHTTPメソッドを取得します。
String method = request.getMethod();
System.out.println( method );
// POST
// 入力値の文字コードをセットします。
// HTMLの文字コードを指定してください。
request.setCharacterEncoding( "Windows-31J" );
// 入力フォームから入力された値を取得します。
String name = request.getParameter( "name" );
System.out.println( name );
// (入力フォームの「名前:」に入力された文字列)
// SampleBean Java Beanクラスを作成し、JSPで使えるようにセットします。
SampleBean sampleBean = new SampleBean();
sampleBean.setData( 100 );
request.setAttribute( "sample_bean", sampleBean );
// サーブレットコンテキストを取得します。
ServletContext servletContext = getServletContext();
// リクエストディスパッチャーを取得します。
RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher( "/WEB-INF/jsp/sample.jsp" );
// 指定したJSPへと転送します。
requestDispatcher.forward( request, response );
}
/**
* リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。
*/
protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
{
// でも面倒なのでdoGet()メソッドに丸投げします。
doGet( request, response );
}
}
// webapps/sample-servlet/WEB-INF/src/bean/SampleBean.java
package bean;
// Java Beanは、JSPで使用する関係でパッケージに入れる必要があります。
// ここではbeanパッケージに入れます。
// 一応、Java Beanは直列化可能にする必要があります。
// 実際には必要ない場合も多いですが。
import java.io.Serializable;
/**
* SampleServletで使用するJava Beanクラスです。
*/
public class SampleBean implements Serializable
{
/**
* プロパティ。
*/
private int data;
/**
* コンストラクタ。
*/
public SampleBean()
{
data = 0;
}
/**
* プロパティのgetter。
*/
public int getData()
{
return data;
}
/**
* プロパティのsetter。
*/
public void setData( int value )
{
this.data = value;
}
}
<!-- webapps/sample-servlet/form.html --> <!-- http://localhost:8080/sample-servlet/form.html でアクセスできます。 --><HTML> <HEAD> <TITLE>入力フォーム</TITLE> </HEAD> <BODY> <!-- 入力フォームです。 --> <FORM METHOD="POST" ACTION="servlet/SampleServlet"> 名前:<INPUT TYPE="text" NAME="name" SIZE="10"><BR> <INPUT TYPE="submit" VALUE="実行"><BR> </FORM> </BODY> </HTML> // webapps/sample-servlet/WEB-INF/src/SampleServlet.java // http://localhost:8080/sample-servlet/servlet/SampleServlet でアクセスできます。 // このサンプルプログラムは「サーブレット」の項目に書かれている準備を行ってから使用してください。 import java.io.IOException; import javax.servlet.ServletContext; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import bean.SampleBean; /** * サーブレットのテスト。 */ public class SampleServlet extends HttpServlet { /** * リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。 */ public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { // Content-Typeをセット。 response.setContentType( "text/html;charset=Windows-31J" ); // 呼び出した際のURLを取得します。 StringBuffer requestURL = request.getRequestURL(); System.out.println( requestURL.toString() ); // http://localhost:8080/sample-servlet/servlet/SampleServlet // リクエストのHTTPメソッドを取得します。 String method = request.getMethod(); System.out.println( method ); // POST // 入力値の文字コードをセットします。 // HTMLの文字コードを指定してください。 request.setCharacterEncoding( "Windows-31J" ); // 入力フォームから入力された値を取得します。 String name = request.getParameter( "name" ); System.out.println( name ); // (入力フォームの「名前:」に入力された文字列) // SampleBean Java Beanクラスを作成し、JSPで使えるようにセットします。 SampleBean sampleBean = new SampleBean(); sampleBean.setData( 100 ); request.setAttribute( "sample_bean", sampleBean ); // サーブレットコンテキストを取得します。 ServletContext servletContext = getServletContext(); // リクエストディスパッチャーを取得します。 RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher( "/WEB-INF/jsp/sample.jsp" ); // 指定したJSPへと転送します。 requestDispatcher.forward( request, response ); } /** * リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。 */ protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { // でも面倒なのでdoGet()メソッドに丸投げします。 doGet( request, response ); } } // webapps/sample-servlet/WEB-INF/src/bean/SampleBean.java package bean; // Java Beanは、JSPで使用する関係でパッケージに入れる必要があります。 // ここではbeanパッケージに入れます。 // 一応、Java Beanは直列化可能にする必要があります。 // 実際には必要ない場合も多いですが。 import java.io.Serializable; /** * SampleServletで使用するJava Beanクラスです。 */ public class SampleBean implements Serializable { /** * プロパティ。 */ private int data; /** * コンストラクタ。 */ public SampleBean() { data = 0; } /** * プロパティのgetter。 */ public int getData() { return data; } /** * プロパティのsetter。 */ public void setData( int value ) { this.data = value; } }
「みだし」に含まれているページ
「解説」に含まれているページ
「サンプルプログラムとか」に含まれているページ
- <jsp:useBean>
- classesディレクトリ
- Cookie
- doGet
- doPost
- HttpServlet
- HttpServletRequest
- HttpServletResponse
- HttpSession
- JavaBeans
- JSP暗黙オブジェクト「request」
- JSP暗黙オブジェクト「session」
- RequestDispatcher
- ServletConfig
- ServletContext
- ServletException
- web.xml
- キャッシュ
- クッキー
- クロスサイトスクリプティング
- サニタイジング
- サーブレット
- セッション
- セッションID
- セッションスコープ
- リクエストスコープ
- 入力フォーム