在jsp中可以用<%! %>申明变量,但是为什么不能在其中使用request、out等内置对象呢,例如我滴代码:
<%!
String name=request.getParameter("userName");
String password=request.getParameter("userPwd");
%>
提示:request cannot be resolved<% %>和<%! %>有什么区别?
<%!
String name=request.getParameter("userName");
String password=request.getParameter("userPwd");
%>
提示:request cannot be resolved<% %>和<%! %>有什么区别?
里的内容也可以写在<% %>里。
<%!
private void test(HttpServletRequest request, HttpServletResponse response)
{
}
%>
<%
test(request, response);
%>
不知道你是否看过。
如果是tomcat服务器,源码在work目录底下一直进去直到看到你的工程名。(发布是发布在webapps底下)
你去看下,<%%>里面的东西。服务器将它变成java代码放在_jspService这个方法里面。
<%!%>这里面的代码,是放在class ***{这里面的},类似于我们定义类的属性。
所以。当然,你能够像下面这样子用吗?
class a{
request.getparameter().......
}
当然不行。
另外还有就是import语句。。
当然就是像JAVA里面放在类外面的import一样了。放的位置不同,功能也是不一样的。。够明白了吧
xxx
%>会被编译为servlet里面的 成员, 试想写个servlet的方法。
<%%>
里面同事,在页面写方法是一种非常愚蠢的行为。完全忽略了JAVA的代码重用的意义
其实,<%! %>里的代码,就好比是在类里的代码,但却是在类的方法之外(也就是通常我们在类里申明的全局变量的地方)。而<% %>就相当是我们的main()方法底下的代码,当然是可以直接执行的。而jsp页面就好比是一个类,毕竟最终还是要转化为servlet类,当然这不是我们所关心的(Tomcat从事的工作)