一尘不染

如何在jsp中的函数中使用“请求”对象

jsp

    <%
    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
/*

阅读 187

收藏
2020-06-08

共1个答案

一尘不染

JSP通过一个JSP编译器,该编译器会将JSP页面转换为servlet,从而自动生成Java代码。

JSP指令指示JSP编译器在哪里放置内容。内部的所有内容<% %>(称为 JSP scriptlets
)都将放入service()生成的servlet 的方法中。内部的所有内容<%! %>(称为 JSP声明
)都将成为生成的servlet实际类的一部分,因此您的getVal()将成为实例方法。

标准request(和sessionpageContext等)对象实例的内部限定service(),以便它们被在效果,仅提供内部JSP脚本部分方法。

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

2020-06-08