如何在jsp中调用java overrided方法?

时间:2017-07-15 07:39:34

标签: java jsp azure methods

我想在jsp页面上使用我的java方法,但是来自stackoverflow的大多数答案对我没有帮助。有人可以帮我解决这个问题吗?

public class send{
private static final String connectionString = "HostName=hackhubdeu.azure-devices.net;SharedAccessKeyName=****;SharedAccessKey=****";
private static final IotHubServiceClientProtocol protocol = IotHubServiceClientProtocol.AMQPS;
private static final String deviceId = "hack01";
ServiceClient serviceClient;
boolean onOff = false;



public send() {
    try {
        this.serviceClient = ServiceClient.createFromConnectionString(connectionString, protocol);

       this.serviceClient.open();

    } catch (IOException e) {
        e.printStackTrace();
    }
    messagesending();
}

public static void main(String[] args) {
    new send();

}

public void messagesending() {
    onOff = !onOff;
    try {
        FeedbackReceiver feedbackReceiver = serviceClient.getFeedbackReceiver();
        feedbackReceiver.open();

        Message msg = new Message(String.valueOf(onOff));
        msg.setDeliveryAcknowledgement(DeliveryAcknowledgement.Full);

        serviceClient.send(deviceId, msg);
        System.out.println("Message sent to device");

        FeedbackBatch feedbackBatch = feedbackReceiver.receive(10000);
        if (feedbackBatch != null) {
            System.out.println("Message feedback received, feedback time: "
                    + feedbackBatch.getEnqueuedTimeUtc().toString());
        }
        if (feedbackReceiver != null) feedbackReceiver.close();

    } catch (IotHubException ee) {
        ee.printStackTrace();
    } catch (IOException eee) {
        eee.printStackTrace();
    } catch (InterruptedException eeee) {
        eeee.printStackTrace();
    }

}

这是我的java代码,我想要的是首先在serviceclient上连接公共send()方法,然后调用messagesending()方法来做一些工作。

<%@page import="munjuPrj.send"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<%@ page import ="munjuPrj.send" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<% 
send sendclass = new send();
%>
</body>
</html>

这是我的jsp代码。它在运行之前没有出现任何错误,但在我运行此代码后,我得到以下错误:

  

HTTP状态500 - 在第14行处理JSP页面/NewFile.jsp时发生异常   此错误代码

1 个答案:

答案 0 :(得分:0)

  

我想要的是首先在serviceclient上连接公共send()方法,然后调用messagesending()方法完成一些工作。

类中的send()方法不是普通方法,它是一个构造函数,因为它的名称与类名匹配。在对象构造时自动调用构造函数。这就是为什么当你在JSP中创建send类的新对象时,会自动调用send()方法。

如果你想要发送一个发送对象,就像你要求的那样,expilcitly调用send方法。有两种方法:

  1. 不要从send()方法调用messagesending()并更新JSP以显式调用messagesending()。如下:

    <% 
    send sendclass = new send();    
    sendclass.messagesending();
    %>
    
  2. 将您的类名从send更改为MessageSender(但不要更改send()方法名称及其正文)。然后按如下方式编写JSP:

    <% 
    MessageSender messageSender = new MessageSender();
    messageSender.send();
    %> 
    
  3. 它可以帮助您根据需要调用send方法。 500错误代码显示在处理JSP页面时服务器端出现了一些错误。