Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我们不能从jsp声明中访问请求?_Java_Jsp_Servlets_Request - Fatal编程技术网

Java 为什么我们不能从jsp声明中访问请求?

Java 为什么我们不能从jsp声明中访问请求?,java,jsp,servlets,request,Java,Jsp,Servlets,Request,我是JSP相关技术的新手。我面临着一种奇怪的情况: 用scriplet找到的作品 <% String username = request.getParameter("username"); if ( username != null && username.length() > 0 ) { } %> 0){ } %> 但是用声明请求对象找不到 我了解到,当在声明中定义方法或变量时,它们是servlet的一部分,我们可以从serv

我是JSP相关技术的新手。我面临着一种奇怪的情况: 用scriplet找到的作品

<%
    String username = request.getParameter("username");
    if ( username != null && username.length() > 0 ) {

    }
%>
0){
}
%>
但是用声明请求对象找不到


我了解到,当在声明中定义方法或变量时,它们是servlet的一部分,我们可以从servlet访问请求对象。那么为什么会出现这种奇怪的行为呢?

JSP在编译之前被转换成servlet

在jsp脚本中编写的内容放在servlet的service()方法中,jsp声明中的所有内容放在服务方法之外,但放在servlet类中


如果条件只能在方法内部使用,并且请求是服务方法的参数,因此不能在服务方法外部访问它。

JSP在编译之前转换为servlet

在jsp脚本中编写的内容放在servlet的service()方法中,jsp声明中的所有内容放在服务方法之外,但放在servlet类中


如果条件只能在方法内部使用,而请求是服务方法的一个参数,因此无法在服务方法外部访问它。

删除问号(是的,如果删除它,它将成为scriptlet。我想知道为什么不能访问带有声明的请求对象。您创建了动态web项目吗?(您的jsp文件应该在Web内容文件夹中)@dsp_user,是的,第一个带有scriptlet的cod代码段可以工作,但第二个不能。原因是无法从jsp声明中访问隐式对象。您可以显式声明一个请求变量并删除问号(是的,如果我删除它,它将成为scriptlet。我想知道为什么with declarations请求对象不可访问。您是否创建了动态web项目?(您的jsp文件应位于web内容文件夹中)@dsp_用户,是的,第一个带有scriptlet的cod代码段可以工作,但第二个不能。原因是无法从JSP声明中访问隐式对象。您可以显式声明请求变量