2016-02-29 78 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。