我有一个声明servlet:
<%!
private static void printMyLine(String line){
out.println(line);
}
%>
<%
printMyLine("this is my line");
%>
但我在运行时遇到一个错误,说“无法解决”。 当我在常规servlet中没有函数的情况下执行相同的代码时,它可以正常工作:
<%
out.println("this is my line");
%>
有人可以帮忙吗? 谢谢!
答案 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中的doPost
或doGet
方法,以这种方式使用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();
}