2012-10-05 36 views
0

我有一个java servlet将数组传递给一个jsp页面,在该jsp页面上它显示了一堆结果。我试图做的是当它打印出来打印一个链接,所以我可以用它作为参数。在我的情况下,它打印出一大堆实验室类,我想要发生的是他们点击与该实验室相关的链接,然后我单击链接并可以在sql语句中使用该lab.id。Servlet Jsp数组打印链接

这里是正在打印的数组的代码进行

这里是servlet

private void sendBack(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    HttpSession session = request.getSession(true); 

     //Set data you want to send back to the request (will be forwarded to the page) 
    //Can set string, int, list, array etc. 
    //Set data you want to send back to the request (will be forwarded to the page) 
    //Can set string, int, list, array etc. 
    String sql = "SELECT s.name, l.time, l.day, l.room" + 
       " FROM lab l, subject s, user_lab ul" + 
      " WHERE ul.user_id=" + (Integer)session.getAttribute("id") +" AND ul.lab_id ="+ "l.id"+" AND l.subject_id ="+"s.id"; 

    try{ 
    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/wae","root",""); 
    System.out.println("got boobs"); 
    System.out.println(session.getAttribute("id")); 

     Statement stmt = con.createStatement(); 
     ResultSet res = stmt.executeQuery(sql); 
     System.out.println(res); 
     ArrayList<String> list1 = new ArrayList<String>(); 
     if (res.next()){ 
      do{ 
       list1.add(res.getString(1) + " " + res.getString(2) +" "+ res.getString(3) + " " + res.getString(4)); 
       System.out.print(res.getString(1) + res.getString(2)); 
      }while(res.next()); 
     System.out.println("Outside"); 
     String[] arr = list1.toArray(new String[list1.size()]); 
     request.setAttribute("res", arr); 
     } 




    }catch (SQLException e) { 
    } 
    catch (Exception e) { 
    } 


    //Decides what page to send the request data to 
    RequestDispatcher view = request.getRequestDispatcher("Lecturer_labs.jsp"); 
    //Forward to the page and pass the request and response information 
    view.forward(request, response); 

,这里是JSP页面

<h3>Manage Labs</h3> 
<table> 
<% String[] list1 = (String[])request.getAttribute("res"); 
     if(null == list1){%> 

<% 
     }else{ 
     for(int i=0; i<list1.length; i++) 
     { %> 
     <tr><%out.println(list1[i] + "<br/>");%></tr>   
    <% } 
     } 
     %> 
     </table> 

所以我怎样才能得到它的打印作为通过参数的链接的结果

回答

2

要将结果显示为链接传递参数id,每一个环节可能是这样的:

<a href="/myapp/mypage.jsp?id="<%out.println(list1[i]);%>">Link <%out.println(list1[i]);%></a> 

但怎么看这个笨重的外观。

JSTL tags可以消除所有这些scriptlet代码:

<c:forEach items="${res}" var="id"> 
    <tr><td><a href="/myapp/mypage.jsp?id=${id}">Link ${id}</a></td></tr> 
</c:forEach> 
+0

不幸的是,我们是不允许使用JSTL :( – user1393064

+0

然后使用 - > 的(一个String:链接){ 的System.out。的println( “​​”); 的System.out.println(一个或多个); 的System.out.println(“”);} 原始 JSP是痛苦 –

+0

上。 é问题,它没有传递到URL的身份证,我知道在PHP它确实要传递变量是Java一样吗? – user1393064