2014-02-20 48 views
1

我有2個文件名爲bulletedList.java和blist.jsp作爲web應用程序在我的maven項目中。如何將字符串值從(Servlet)java類傳遞給maven Project中的file.jsp?

我將.jsp文件鏈接到.java文件。並有一個按鈕來生成數字,只要我按下該按鈕然後.java文件生成4個隨機數並將它們轉換爲字符串。然後來到我想要在jsp文件中使用那些生成的值作爲項目符號列表的階段,但我無法做到這一點。

bulletedList.java(小服務程序)的代碼是:

public BulletedList() { 
    super(); 
} 

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

    PrintWriter out = response.getWriter(); 
    out.println("<title>My BulletedList Servlet!</title>"); 

    String No1 = "" + ((int) (Math.random() * 50)); 
    String No2 = "" + ((int) (Math.random() * 25)); 
    String No3 = "" + ((int) (Math.random() * 75)); 
    String No4 = "" + ((int) (Math.random() * 99)); 

    response.getWriter().write(No1); 
    response.getWriter().write(No2); 
    response.getWriter().write(No3); 
    response.getWriter().write(No4); 

    response.sendRedirect("bList.jsp"); 

    //out.println("<h1>" + request.getParameter("No1") + "</h1>"); 
} 

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

現在我不知道我需要做的JSP文件中使用這些值,並在瀏覽器中顯示他們什麼。

我試圖此:(LI)標記之後

的request.getParameter(1號),但它只是顯示純1號作爲文本而不是顯示存儲在它的任何隨機值,該值是通過的Math.random()生成的。

回答

1

不要使用重定向

重定向將頭返回給瀏覽器/客戶端。此標題包含要由瀏覽器重定向的資源網址。然後瀏覽器發起對給定url的新請求。由於這是一個新的請求,舊的請求和響應對象將丟失。

用途:

RequestDispatcher rd= request.getRequestDispatcher("bList.jsp"); 
rd.forward(request, response); 
+1

謝謝它的工作。 –

+0

但我仍然不明白爲什麼:{getServletContext()。getRequestDispatcher(「bList.jsp」)。forward(request,response);}沒有工作 –

+1

'request.getRequestDispatcher()'正在取相對路徑url作爲參數_(Ex- /bList.jsp)_而'context.getRequestDispatcher()'將url的絕對路徑作爲參數._(Ex- /Package/bList.jsp)_ – Zeeshan

1

首先將請求轉發到JSP,而不是發送重定向:

request.getRequestDispatcher("bList.jsp").forward(request, response); 

您當前的代碼會告訴瀏覽器,以便爲bList.jsp一個全新的要求,而無需調用你的servlet。

然後設定值的要求範圍,而不是將它們寫入:(在請求鏈基本上只是另一個servlet)

request.setAttribute("no1", No1); 
request.setAttribute("no2", No2); 

在你的JSP您可以訪問這些屬性和嵌入它們在你的HTML標記中。

<li><%= pageContext.getRequest().getAttribute("no1") %></li> 

但即使是更好,首選的方法,是使用JSP表達式語言,而不是進入或輸出請求範圍attriubtes:

<li>${no1}</li> 
+0

它的工作非常感謝,但我不得不使用@ Zeeshan的RequestDispatcher的代碼,否則它仍然給空值。 –

+0

該代碼可能不是正確的,我已經更新它 –

相關問題