2016-02-29 88 views
1

Jsp頁面如何從JSP值傳遞給Java類

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@page contentType="application/xml" trimDirectiveWhitespaces="true" %> 
<%@ page import="com.raos.kookooivr.CallStatusValues" %> 

<c:choose> 

    <c:when test='${(param.event == "Conference" || param.event == "Hangup" || param.event == "Disconnect") && requestScope.state == "conferenceStarted"}'> 
     <%  
      String session_id = request.getParameter("sid"); 
      out.print(CallStatusValues.getsessionid(session_id)); 
      String called_no = request.getParameter("cid"); 
      out.print(CallStatusValues.getcalledno(called_no)); 
      String actualtime = request.getParameter("total_call_duration"); 
      out.print(CallStatusValues.getactualtime(actualtime)); 
      String start_time = request.getParameter("start_time"); 
      out.print(CallStatusValues.getstarttime(start_time)); 
      String end_time = request.getParameter("time"); 
      out.print(CallStatusValues.getendtime(end_time)); 
     %> 
    </c:when> 
</c:choose> 

的Java類

package com.raos.kookooivr; 

public class CallStatusValues 
{ 
    public static String getsessionid(String session_id) 
    { 
     System.out.println(session_id); 
     return session_id; 
    } 

    public static String getcalledno(String called_no) 
    { 
     System.out.println(called_no); 
     return called_no; 
    } 

    public static String getactualtime(String actualtime) 
    { 
     System.out.println(actualtime); 
     return actualtime; 
    } 

    public static String getstarttime(String start_time) 
    { 
     System.out.println(start_time); 
     return start_time; 
    } 

    public static String getendtime(String end_time) 
    { 
     System.out.println(end_time); 
     return end_time; 
    } 
} 

我得到500錯誤。

我想要的「String session_id = request.getParameter("sid");」的價值觀傳遞給我的Java類,並試圖打印會話ID

public static String getsessionid(String session_id) 
     { 
      System.out.println(session_id); 
      return session_id; 
     } 

我需要幫助從JSP去用我的java類打印的值。示例我的sid是123456.然後,該會話ID應該從我的jsp文件傳遞給我的java類。

+1

您將需要使用HTTP POST將您的數據提交給servlet –

+0

我沒有使用servlet。我正在使用java類 –

回答

0

恐怕你的代碼有多個問題。

  • 您不能使用靜態方法 - web servlet是多線程的,每個線程需要模型類實例(通常每個線程會映射到一個實例)。
  • 您的命名約定是非標準的。 session_id變量的正確名稱是sessionId,getter應該是getSessionId() - 注意大小寫。這符合Java Bean命名約定。
  • 將代碼耦合到模型類(偶然無處存儲數據)的方式是非標準的。
  • 在JSP中編寫Java代碼通常被認爲是新項目的代碼氣味。在JSP中使用EL和標籤並將任何Java代碼移出到模型和控制器中更爲正常。

我建議你下載一個簡單的工作J2EE JSP servlet項目並分析它的工作原理。然後開始修改它以適應您的要求。像http://crunchify.com/servlet-tutorial-getting-starting-with-jsp-servlet-example應該讓你開始。

0

不確定你正在做你想做的事情。

這裏是實際上情況:

  • 客戶端發送,在調用JSP頁面
  • servlet容器調用JSP與呼叫請求
  • 的背景下結束的請求JSP以調用請求的上下文運行服務器端,意思是:
    • 當時沒有任何東西被渲染
    • 所有參數「SID」,「CID」等是那些調用者傳遞
  • 如果任何所需參數的呼籲請求都沒有通過,你在一個錯誤500結束一個NullPointerException

順便說一句,靜態方法使用靜態方法從JSP的方式,至少不常見...如果您需要能夠在JSP內部進行復雜的計算,那麼這很有意義,但在這種情況下,您最好使用servlet來執行處理,將結果存儲在request屬性中並轉發給servlet。