如何将值从jsp传递给java类

时间:2016-02-29 07:09:23

标签: java jsp

我的 Jsp页面

<%@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;
        }

我需要帮助才能使用我的java类从jsp中获取值。示例我的sid是123456.然后,该会话ID应该从我的jsp文件传递到我的java类。

2 个答案:

答案 0 :(得分:0)

我担心您的代码存在多个问题。

  • 您不能使用静态方法 - Web servlet是多线程的,并且每个线程需要模型类实例(通常映射到每个Web会话的实例)。
  • 您的命名约定是非标准的。 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这样的东西应该让你开始。

答案 1 :(得分:0)

不确定你正在做你想做的事。

以下是实际发生的事情:

  • 客户端发送以调用JSP页面结束的请求
  • servlet容器使用调用请求的上下文调用JSP
  • JSP使用调用请求的上下文运行服务器端,这意味着:
    • 当时没有呈现任何内容
    • 所有参数“sid”,“cid”等是调用者传递的参数
  • 如果在调用请求中未传递任何必需参数,则会出现以错误500结尾的NullPointerException
BTW使用带有静态方法的类,从JSP开始,至少是不常见的......如果你需要能够在JSP内部进行复杂的计算,那就更有意义了,但在这种情况下,你会更好使用servlet进行处理,将结果存储在request属性中并转发给servlet。