- 締切済み
javaサーブレットでのlocalアクセス
いつもお世話になっています。 javaサーブレット実行時における、処理について質問します。 現在、javaサーブレットを使って、複数のidで処理しようとしています。 その際、同期化を行うため、ラップオブジェクト同期化を使用していています。 その際、複数画面からアクセスされた場合、 アクセスされた順番に処理は行えるのですが、 このときどのユーザーが行ったかを判別したいと考えています。 これは、可能なのでしょうか? ソースは以下の方法で作成しています。 jsp側 <body> <form name="groupForm" action="./Group_Run_Servlet" method="POST"> <input type="text" name="userId" value="nanami_45"> <input type="text" name="password" value="moon_Light"><br> ◆更新・削除のどちらかをチェックしてください。<br>Test <table border="2"> <tr> <td style="background-color:white;"></td> <td style="background-color:white;"></td> <td>No.</td> <td>グループ名称</td> </tr> <tr> <td> <input type="checkbox" name="update" value="0">更新 </td> <td> <input type="checkbox" name="delete" value="0">削除 </td> <td><input type="hidden" name="groupNumber" value="24"> 24 </td> <td> <input type="text" name="groupName" value="at"> </td> </tr> </table> </body> ※文字の加減で、一個にしています。 サーブレット側 public class Group_Run_Servlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { /** ラップオブジェクト同期化 **/ private static final List<String> list = Collections.synchronizedList(new ArrayList<String>() ); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //このとき、実行adminユーザーを判定する必要がある。 //方法として、渡されてきた順に一度listかに格納する必要がある System.out.println("userId="+AdminUser_Session.getUserID()); System.out.println("password="+AdminUser_Session.getPassword()); String userId = String.valueOf(request.getParameter("userId")); String password = String.valueOf(request.getParameter("password")); System.out.println("userid:"+userId + "/password:"+ password); synchronized(list) { //checkboxの値を取得する String[] update = request.getParameterValues("update"); String[] delete = request.getParameterValues("delete"); String[] groupNumbers = request.getParameterValues("groupNumber"); String[] groupNames = request.getParameterValues("groupName"); //更新 if(update != null ) { System.out.println("update.length:"+ update.length ); for(int u=0;u<update.length;u++ ) { System.out.println("update[" + u + "]:" + update[u]); testWait(c); } } //削除 if(delete != null ) { System.out.println("delete.length:"+ delete.length); for(int d=0;d<delete.length;d++ ) { System.out.println("delete["+ d + "]: " + delete[d]); testWait(c); } } } private void testWait( int userCnt) { for(int s=0;s<30;s++) { try { Thread.sleep(300); System.out.println("--- " + s ); } catch (InterruptedException e) { e.printStackTrace(); } } } } ※doPost以外省いています. 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- askaaska
- ベストアンサー率35% (1455/4149)
IPアドレスで判断できるだろうし セッションIDで判断できるだろうし 判断できる情報はあるわよ。
お礼
IPアドレスですか。 セッションとか以外でできないのかと思っていたので。 IPアドレス、セッションIDで判断するようにしてみます。 ありがとうございました。