<%
String fname=request.getParameter("fname");
String username=getVal("lname");
%>
<%!
private String getVal(String param){
return request.getParameter("fname");
}
%>
/*
--err
org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP
PWC6197: An error occurred at line: 5 in the jsp file: /register.jsp
PWC6199: Generated servlet error:
string:///register_jsp.java:12: cannot find symbol
symbol : variable request
location: class org.apache.jsp.register_jsp
/*
最佳答案
JSP通过JSP编译器,该编译器会将JSP页面转换为servlet,从而自动生成Java代码。
JSP指令指示JSP编译器在何处放置内容。 <% %>
内部的所有内容(称为JSP脚本集)都将放置在生成的servlet的service()
方法内部。 <%! %>
内部的所有内容(称为JSP声明)都将成为生成的servlet实际类的一部分,因此您的getVal()将成为实例方法。
标准的request
(以及session
和pageContext
等)对象实例是在service()
方法中定义的,因此实际上它们仅在JSP scriptlet部分中可用。
例如,如果您在Tomcat上运行,那么如果您在Tomcat安装中的“工作”目录中查看,则可以查看JSP页面实际生成的Java代码。如果不能更好地了解“幕后”情况,可能会很有趣。
关于jsp - 如何在jsp中的函数中使用 "request"对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7171521/