如何在servlet中声明函数中执行out.println?

时间:2014-01-15 09:16:06

标签: java servlets

我有一个声明servlet:

<%!
private static void printMyLine(String line){
     out.println(line);
}
%>

<%
     printMyLine("this is my line");
%>

但我在运行时遇到一个错误,说“无法解决”。 当我在常规servlet中没有函数的情况下执行相同的代码时,它可以正常工作:

 <%
     out.println("this is my line");
 %>

有人可以帮忙吗? 谢谢!

4 个答案:

答案 0 :(得分:0)

你不应该使用scriptlet;他们正被逐步淘汰。你应该转而使用JSTL。

您还可以从out对象访问HttpResponse流。

实施例

OutputStream os = response.getOutputStream();

os.print("Hello".getBytes());

答案 1 :(得分:0)

实际上,out是jsp中的隐含对象。但它不是一个静态的对象。您在静态方法中使用'out'。但我们不能在静态方法中使用实例对象。将static关键字删除到方法后尝试。它会起作用。

我猜它有帮助。

答案 2 :(得分:0)

在声明中无法访问JSP隐式对象。这些对象仅在生成的servlet的service()方法中可用。

答案 3 :(得分:0)

通过Servlet中的doPostdoGet方法,以这种方式使用printMyLine方法:

response.setContentType("text/html"); 
try {
    out=response.getWriter();
} catch (IOException io) {
    System.out.println("Hello exception");
}
out.println("Printed from Servlet");

您必须将printMyLine声明更改为:

private void printMyLine(HttpServletResponse response, String message)

最后,你会得到:

private void printMyLine(HttpServletResponse response, String message) {
    response.setContentType("text/html"); 
    try {
        out=resp.getWriter();
    } catch (IOException io) {
        System.out.println("Hello exception");
    }
    out.println(message);
    out.flush();
    out.close();
}