- PR -

BASIC認証から入力されたユーザ名を取得できません

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 81
投稿日時: 2005-10-14 15:08
現在、BASIC認証から入力されたユーザ名を取得できずに
困っています。

現象としては、
 1.Menu.jspを起動させる
 2.BASIC認証画面が起動し、ユーザ名とパスワードを入力する
 3.Menu.jspが表示され、週報入力ボタンを押す
 4.FrontCtrl.javaでユーザ名取得の際にNullPointerExceptionで落ちます。
 
しかし、Menu.jspが表示されたままで、もう一度Menu.jspをエクスプローラから表示させ、
週報入力ボタンを押すとユーザ名が取得できます。(このときBASIC認証の画面は出ない)
 
 この現象がよく分かりません。(1.〜4.の操作でユーザ名を取得したい)
 皆様の力をお貸しください、宜しくお願いします。。

★★★★ 環境 ★★★★
Eclipse2.1.1
JDK1.4.2
Tomcat 4.1

★★★★ web.xml ★★★★
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<!-- URL:http://localhost:8080/nippou/jsp/Menu.jsp -->

<!-- サーブレットの登録 -->
<servlet>
<servlet-name>ctrl</servlet-name>
<servlet-class>controller.FrontCtrl</servlet-class>
</servlet>

<!-- マッピング処理 -->
<servlet-mapping>
<servlet-name>ctrl</servlet-name>
<url-pattern>/ctrl</url-pattern>
</servlet-mapping>

<!-- セキュリティ処理 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>nippou</web-resource-name>
<url-pattern>/jsp/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
</security-constraint>

<!-- 認証パターン -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>nippou</realm-name>
</login-config>

<!-- グループ定義 -->
<security-role>
<role-name>member</role-name>
</security-role>

</web-app>

★★★★ Menu.jsp ★★★★
<%@ page language="java" pageEncoding="UTF-8" %>

<html>
<head><title>メニュー画面</title></head>

<body><center>
<form method="post" action="/nippou/ctrl">
<INPUT TYPE="hidden" NAME="COMMAND_ID">

【メニュー画面】<br>

<input type="submit" value="週報入力">

</form>

</center></body>
</html>

★★★★ FrontCtrl.java ★★★★
package controller;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FrontCtrl extends HttpServlet {

public void doPost( HttpServletRequest req,
HttpServletResponse res ) throws IOException
{
String user = (req.getRemoteUser()).toString();
System.out.println("ユーザ名:"+user);
}
}
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-10-14 15:32
security-constraintのurl-patternを「/*」に変えるとどうなりますか?
未記入
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 81
投稿日時: 2005-10-14 16:09
uk様へ

うまくいきました。有難う御座います。
助かりました。
このプログラムでは、Menu.jspを最初に起動させていますが、
いきなりサーブレットを起動することはできるでしょうか?
欲張ってすいません。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-10-14 16:23
「いきなりサーブレット」というのは、JSPを表示させる前にサーブレットのURLを直接
アクセスする、ということですか? であれば、もちろん問題なくできます。
未記入
ベテラン
会議室デビュー日: 2004/08/18
投稿数: 81
投稿日時: 2005-10-14 16:57
uk様有難う御座います。

言葉足らずですいません。
BASE認証画面 ⇒ サーブレット(ここでユーザ名を取得)⇒ JSP遷移
といった感じです。

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-10-14 18:42
引用:

未記入さんの書き込み (2005-10-14 16:57) より:
言葉足らずですいません。
BASE認証画面 ⇒ サーブレット(ここでユーザ名を取得)⇒ JSP遷移
といった感じです。


いや、それが「直接サーブレットのURLにアクセス」する、ということですが。
簡単に試してみることができると思うのですが、なぜやってみないんですか?
1

スキルアップ/キャリアアップ(JOB@IT)