2017-08-21 19 views
1

私はWeb開発の初心者です。私は自分のプロジェクトにJSPとサーブレットを使用しました。私は2つのJSPファイルを作成しました。 1つは特定のuser.Howの値を内容は、フォームのユーザーリストをリダイレクトするボタンを押して、他の人に値を1つからjsp.Passingを接続することができます。どのように私は1つのJSPから他のボタンを押すとデータを送信することができます

ユーザーリスト

<form name="admin_users" action="${pageContext.request.contextPath}/admin/users" method="GET"> 
    <ul class="listing"> 

    <c:forEach var="obj" items="${list}"> 
     <li> 
      <div class="listinfo"> <img src="${pageContext.request.contextPath}/images/imageholder.jpg" alt="" class="listingimage" /> 
       <div> 
        <table> 
         <tr> 
          <td width="10%" class="label">Nickname</td> 
          <td name="nickname" id="nickname" class="text longfield" value="${nickname}"> 
           <c:out value="${obj.nickname}"/> 
          </td> 
         </tr> 

         <tr> 
          <td width="10%" class="label">Email</td> 
          <td name="email" id="email" class="text longfield" value="${email}"> 
           <c:out value="${obj.email}"/> 
          </td> 
         </tr> 

         <tr> 
          <td width="10%" class="label">Phone Number</td> 
          <td name="phoneNumber" id="phoneNumber" class="text longfield" value="${phoneNumber}"> 
           <c:out value="${obj.phoneNumber}"/> 
          </td> 
         </tr> 

        </table>   

       </div> 


      </div> 
      <!--   <div class="listingbtns"> <span class="listbuttons"> <a href="#">View Details</a></span> 

         </div>--> 
      <div> 
       <button type="button" onclick="viewdeteils()"/>View Details</button> 
      </div> 

      <div class="clear">&nbsp;</div> 
     </li> 
    </c:forEach> 
</ul> 

ユーザープロファイル

<div id="single_item_details"> 
<form name="admin_user" action="${pageContext.request.contextPath}/admin/users/user" method="GET"> 
    <div id="leftcolumn"> 
     <div> 
      <img src="${pageContext.request.contextPath}/images/imageholder_detailspage.jpg" alt="" width="220" height="220" class="previewimg" /> 
     </div> 

     <div> 
      <button type="button" onclick="alert('activate')">Activete</button> 
     </div> 


    </div> 

    <div id="rightcolumn"> 
     <table class="table"> 
      <tr> 

       <td width="10%" class="td_attributes">Nickname</td> 
       <td name="nickname" id="nickname" class="text longfield" value="${nickname}"> 
        <c:out value="${nickname}"/> 
       </td> 

      </tr> 

      <tr> 

       <td width="10%" class="td_attributes">Name</td> 
       <td name="firstname" id="firstname" class="text longfield" value="${firstname}"> 
        <c:out value="${firstname}"/> 
       </td> 

      </tr> 


      <tr> 

       <td width="10%" class="td_attributes">Surname</td> 
       <td name="surname" id="surname" class="text longfield" value="${surname}"> 
        <c:out value="${surname}"/> 
       </td> 

      </tr> 


      <tr> 

       <td width="10%" class="td_attributes">Email</td> 
       <td name="email" id="email" class="text longfield" value="${email}"> 
        <c:out value="${email}"/> 
       </td> 

      </tr> 


      <tr> 

       <td width="10%" class="td_attributes">Phone</td> 
       <td name="phonenumber" id="phonenumber" class="text longfield" value="${phonenumber}"> 
        <c:out value="${phonenumber}"/> 
       </td> 

      </tr> 



      <tr> 

       <td width="10%" class="td_attributes">Role</td> 
       <td name="role" id="role" class="text longfield" value="${role}"> 
       </td> 
      </tr> 


      <tr> 

       <td width="10%" class="td_attributes">Active</td> 
       <td name="active" id="active" class="text longfield" value="${active}"> 
        <c:out value="${active}"/> 
       </td> 

      </tr> 

     </table> 

     <div> 
      <button type="button" onclick="alert('edit')">Edit</button> 
     </div> 

    </div> 
    <div class="clear">&nbsp;</div> 
</form> 

私は、ユーザーリストにit.So押しボタンビューの詳細について例を持っているし、リダイレクトすることができますユーザープロフィールjspに

答えて

1

これを行うために使用できる方法が2つあります。

1:あなたが入力を隠して、その後、フォームにユーザリストでそのテーブルを囲むことができ、フォーム

で囲みます。フォームごとにボタンがあり、ユーザーがクリックしたボタンによって、どの変数が送信されます。

<c:forEach var="obj" items="${list}" varStatus="count"> 
<form action="GetUser" method="get"> 
      <div class="listinfo"> <img src="${pageContext.request.contextPath}/images/imageholder.jpg" alt="" class="listingimage" /> 
       <div> 
        <table> 
         <tr> 
          <td width="10%" class="label">Nickname</td> 
          <td id="nickname" class="text longfield"> 
           nickname: <c:out value="${obj.nickname}"></c:out> 
          </td> 
         </tr> 

         <tr> 
          <td width="10%" class="label">Email</td> 
          <td id="email" class="text longfield" > 
           email: <c:out value="${obj.email}"></c:out> 
          </td> 
         </tr> 

         <tr> 
          <td width="10%" class="label">Phone Number</td> 
          <td id="phoneNumber" class="text longfield"> 
           <c:out value="${obj.phoneNumber}"></c:out> 
          </td> 
         </tr> 

        </table>   

       </div> 


      </div> 
         <input type="hidden" name="nickname" value="${obj.nickname}"> 
          <input type="hidden" name="email" value="${obj.email}"> 
           <input type="hidden" name="phoneNumber" value="${obj.phoneNumber}"> 
      <div> 
       <button type="submit">View Details</button> 
      </div> 

      <div class="clear">&nbsp;</div> 
     </form> 
    </c:forEach> 

1:他のオプションは、あなたのGETUSERサーブレットに値を送るhref属性でアンカータグを使用することで、リンクを経由して

を提出します。注:これはGET要求でのみ機能します。 GET要求はサーブレットのurlにマップされているため(web.xmlを確認してください)。 POSTリクエストではこれを行うことはできません。 メモ:セットアップでは「../」は必要ない場合があります。たとえば、ユーザーがurl website /users/randomNameにある場合その後、それが必要になります。例えば

 <c:forEach var="obj" items="${list}" varStatus="count"> 

    <a href="../GetUser?nickname="${obj.nickname}"&email="${obj.email}"&phoneNumber="${obj.phoneNumber}">${obj.nickname}</a> 

    </c:forEach> 

送られるものを見た上でニースのヒント: は右ページをクリックすると、クリック点検し、あなたがネットワークの見出しに行けば、ここにあなたがに送信されますかを見ることができますあなたのサーブレット。これはデバッグに便利です。単に

import java.io.IOException; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class GetUser extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public GetUser() { 
     super(); 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     //get the values submitted to servlet 
     String nickName = request.getParameter("nickname"); 
     String email = request.getParameter("email"); 
     String number = request.getParameter("phoneNumber"); 

     //set the values that will be accessed in userprofile 
     request.setAttribute("name", nickName); 
     request.setAttribute("email", email); 
     request.setAttribute("number", number); 


     RequestDispatcher rd=request.getRequestDispatcher("Userprofile.jsp");  
     rd.forward(request,response); 


    } 

} 

USERPROFILEのJSPでこれらの変数にアクセスするには、:: enter image description here

サーブレット

${name} 
${email} 
${number} 

お役に立てば幸いです。気軽に何か質問してください。

+0

あなたは、セッションを使用してサーブレットなしでデータを送信することもできます。 JSPのJSTLまたはスクリプトレットを介してセッション変数を設定し、要求変数にアクセスするのと同じ方法でそれを取得します。 "$ {変数}" –

関連する問題