2014-04-28 41 views
4

你好我試圖打電話給普通的Java類的JSP頁面和要打印一些JSP頁面上,當我試圖做我沒有得到任何輸出如何調用Java類在JSP中

這裏是我的代碼

MyClass.java

package Demo; 
public class MyClass { 
    public void testMethod(){ 
     System.out.println("Hello"); 
    } 
} 

test.jsp的

<%@ page import="Demo.MyClass"%> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <jsp:useBean id="test" class="Demo.MyClass" /> 
    <% 
    MyClass tc = new MyClass(); 
    tc.testMethod(); 
    %> 
</body> 
</html> 

我怎樣才能得到我想要的輸出?

+0

我沒有去過 – user3575501

+1

System.out ID是您的Web服務器的控制檯,通常被Web服務器重定向到一個文件。如果要寫入瀏覽器,則必須寫入JSP Writer。但是你絕不應該在JSP中使用scriptlet。使用Servlet進行Java代碼,並且僅在JSP中使用JSP EL,JSTL和自定義標記。閱讀關於MVC。閱讀http:// stackoverflow。com/questions/2188706/how-to-avoid-using-scriptlets-in-my-jsp-page –

+0

whats'testClass'?它應該是'MyClass' – MaVRoSCy

回答

6

的JSP useBean的聲明新的對象。

只需使用

<body> 
<% 
    MyClass tc = new MyClass(); 
    tc.testMethod(); 
%> 
</body> 

但不會打印在JSP什麼。它只會在服務器的控制檯上打印Hello。 要在JSP上打印Hello,必須從輔助Java類MyClass返回一個字符串,然後使用JSP輸出流來顯示它。

事情是這樣的:

在Java類

public String testMethod(){ 
    return "Hello"; 
} 

然後在JSP

out.print(tc.testMethod()); 
+0

我用這個顯示錯誤消息void類型不允許在這裏 – user3575501

+0

可能在你的java類中你仍然有'void'作爲你的方法的返回類型。這是錯誤的。 'Void'告訴編譯器該方法不會返回任何東西。用'String'替換'void' – MaVRoSCy

0

嗨使用你的類名的正確

<% 
MyClass tc = new MyClass(); 
     tc.testMethod(); 

    %> 

代替

<% 
testClass tc = new testClass(); 
     tc.testMethod(); 

    %> 

也當您使用JSP:useBean的,它創建了一個名爲作爲ID裏面你的JSP轉換的servlet的新對象。

所以使用該ID本身調用的方法,而不是創建再不需要在你的代碼

+0

我做到了,但沒有工作 – user3575501

+0

使用MyClass intead的測試類和更改已更新在相同的答案 –

0

只是爲了完成所有的機會,你可以同時使用<%= opertator像:

<% 
MyClass tc = new MyClass(); 
%> 


<h1><%= tc.testMethod(); %> </h1> 

,只是對簡歷的關鍵點:

  1. 包括與<%@頁面進口標籤種類
  2. 使用類照常的.java行爲
  3. 用的out.print打印數據,<% =或jstl out標記