- PR -

webアプリケーションのURLセット方法について

1
投稿者投稿内容
JUN1
会議室デビュー日: 2006/01/19
投稿数: 4
投稿日時: 2006-01-19 14:38
みなさま、はじめまして。
現在Tomcat/5.0.16を使用したユーザー管理用のWebアプリを作成しております。

■環境
 Windows2000
 Tomcat/5.0.16
 Eclipse 3.1.1
 webアプリ名:EmpInfoManageSystem

下記の手順で処理を行おうとしているのですが、
検索結果画面から削除処理を呼び出した所、
何故か検索処理(SerchUser.java)が実行されてしまい
削除処理の呼び出しを行うことができません。

検索画面(EmpSerch.jsp)     時点でのURL(/EmpInfoManageSystem/EmpSerch)
    ↓
検索処理(SerchUser.java)     
    ↓
検索結果画面(serchUserResult.jsp) 時点でのURL(/EmpInfoManageSystem/SerchUser)
    ↓
対象レコードの削除処理(DeleteUser.java)

なお、
JSP→JAVA への遷移は、
 フォームのアクションに設定されたURLにPOST形式でsubmitし、
JAVA→JSP への遷移は、
 String target = "/SerchUserResult.jsp";
 ServletContext context = getServletContext();
 RequestDispatcher rd = context.getRequestDispatcher( target );
 rd.forward( req,res);

という形式で遷移しています。

URLを見たところ、検索結果画面(serchUserResult.jsp)時点でのURLが
 /EmpInfoManageSystem/SerchUser
となっているので検索結果画面の表示時URLがおかしいか?と考えたのですが、
JSP毎にURLをセットする方法というのがわからず、困っております。

どなたか知恵をお借りできませんでしょうか?
よろしくお願いいたします。
ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-01-19 15:21
検索画面から削除処理の呼び出しは、どのように行っているのでしょう?
具体的に、お願いします。
JUN1
会議室デビュー日: 2006/01/19
投稿数: 4
投稿日時: 2006-01-19 15:47
早速のご返信ありがとうございます。

> 検索画面から削除処理の呼び出しは、どのように行っているのでしょう?
>具体的に、お願いします。

検索結果画面からの呼び出しは、
削除ボタン(button)押下時にjavascriptの関数を呼び、method、actionを指定して
submitしております。

下記ソースから抜き出し↓
<input type="button" name="btnDelete" value="削除" onclick="fncDelete()">
↓(押下時)
function fncDelete() {
if(window.confirm("よろしいですか?")) {
document.frm1.method = "POST";
document.frm1.Action = "/DeleteUser";
document.frm1.submit();
}
}

一応、下記にソースを記載致します。
ご確認よろしくお願いいたします。

========================ここから==========================
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS" %>
<%@ page import="Db.SerchUserProc" %>
<%@ page import="java.util.Vector" %>

<%
// セッションを取得します</FONT>
String auth = (String)session.getAttribute("auth");

SerchUserProc serchUserProc = (SerchUserProc)request.getAttribute( "serchUserResult" );
Vector vec = (Vector)serchUserProc.getVec();


%>
<html>
<head>
<title>
社員検索結果画面
</title>
<script>
<!--
function fncDelete() {
if(window.confirm("よろしいですか?")) {
document.frm1.method = "POST";
document.frm1.Action = "/DeleteUser";
document.frm1.submit();
}
}
function fncUpdate() {
if(window.confirm("削除処理を行います。本当によろしいですか?")) {
document.frm1.method = "POST";
document.frm1.Action = "/UpdateUser";
document.frm1.submit();
}
}
//-->
</script>

</head>
<body>
<center>
<h1>社員検索結果画面</h1>
</center>
<br>
<form name="frm1" method="post" action="">
<%
//取得件数が0件の場合、「該当するデータがありません」と表示する。
if(vec.size() != 0){
%>
<table border="1" align="center">
<tr>
<%
if(auth.equals("1")){
%>
<td><input type="radio" value="" name="rdSample" disabled></td>
<%
}
%>
<td>社員コード</td>
<td>入社日</td>
<td>名前(姓名)</td>
<td>性別</td>
<td>生年月日</td>
<td>部署</td>
<td>役職</td>
<td>メモ</td>
</tr>
<%
for(int i=0; i<vec.size(); i++){
String tmpVecData = (String)vec.elementAt(i);
String[] recData = tmpVecData.split(":");
%>
<tr>

<%
if(auth.equals("1")){
//最初に取り出されたレコードのラジオボタンのみチェック済みにする。
if(i==0){
%>
<td><input type="radio" value="<%=recData[0]%>" NAME="rdUserData" checked></td>
<%
}else{
%>
<td><input type="radio" value="<%=recData[0]%>" NAME="rdUserData"></td>

<%
}
}
for (int j = 0; j < recData.length; j++) {
%>
<td><%=recData[j]%></td>
<%
}
%>
</tr>
<%
}
%>

</table>
<p align="center">
<%
if(auth.equals("1")){
%>
<input type="button" name="btnUpdate" value="更新" onclick="fncUpdate()">
<input type="button" name="btnDelete" value="削除" onclick="fncDelete()">
<%
}
%>
<input type="button" name="btnBack" value="戻る" onclick="history.back();">
</p>
</form>
</body>

<%
}else{
%>
該当するデータがありません。
</form>
</body>
<%
}
%>


</html>

JUN1
会議室デビュー日: 2006/01/19
投稿数: 4
投稿日時: 2006-01-19 16:03
失礼しました。
javascript部分、ダイアログに出力する文章を誤りました。
正しい文章を記載します。
すみませんでした^^;

しかし、目的の関数を呼び出すのを誤っているわけではありません。
一応補足です^^;
以上です。

<script>
<!--
function fncDelete() {
if(window.confirm("削除処理を行います。本当によろしいですか?")) {
document.frm1.method = "POST";
document.frm1.Action = "/DeleteUser";
document.frm1.submit();
}
}
function fncUpdate() {
if(window.confirm("よろしいですか?")) {
document.frm1.method = "POST";
document.frm1.Action = "/UpdateUser";
document.frm1.submit();
}
}
//-->
</script>

ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2006-01-19 16:08
おそらく、削除処理のサーブレットは
http://hoge/EmpInfoManageSystem/DeleteUser
あたりで呼び出すようにしているのでしょうが、
引用:
document.frm1.Action = "/DeleteUser";


で本当に目的のサーブレットを呼び出せているかチェックしましょう。
JUN1
会議室デビュー日: 2006/01/19
投稿数: 4
投稿日時: 2006-01-19 17:17
>引用:
>------------------------------------------------------------------------------->document.frm1.Action = "/DeleteUser";
>------------------------------------------------------------------------------->で本当に目的のサーブレットを呼び出せているかチェックしましょう。

その動作をほかのページからエラー覚悟で試してみたのですが、
目的のサーブレットを呼び出すことはできませんでした。

しかし、
 document.frm1.Action = "/DeleteUser";
を        ↑
 document.frm1.action = "/DeleteUser";
         ↑
と、ダメ元で Aをaに置き換えたところ、削除処理を呼び出し、実行が可能となりました。。

初歩的な問題なのにお手数をおかけして申し訳ありませんでした。;
1

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