<%
    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(以及sessionpageContext等)对象实例是在service()方法中定义的,因此实际上它们仅在JSP scriptlet部分中可用。

例如,如果您在Tomcat上运行,那么如果您在Tomcat安装中的“工作”目录中查看,则可以查看JSP页面实际生成的Java代码。如果不能更好地了解“幕后”情况,可能会很有趣。

关于jsp - 如何在jsp中的函数中使用 "request"对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7171521/

10-14 11:13