<%! %>中为什么不能使用request

jiangtianyin 2010-04-17 09:27:09
在jsp中可以用<%! %>申明变量,但是为什么不能在其中使用request、out等内置对象呢,例如我滴代码:
<%!
String name=request.getParameter("userName");
String password=request.getParameter("userPwd");

%>
提示:request cannot be resolved

<% %>和<%! %>有什么区别?
...全文
307 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
huhk 2011-02-20
  • 打赏
  • 举报
回复
<%! %>里面的变量,多线程访问会出问题。
wanglifeng595 2010-04-19
  • 打赏
  • 举报
回复

其实,<%! %>里的代码,就好比是在类里的代码,但却是在类的方法之外(也就是通常我们在类里申明的全局变量的地方)。而<% %>就相当是我们的main()方法底下的代码,当然是可以直接执行的。

而jsp页面就好比是一个类,毕竟最终还是要转化为servlet类,当然这不是我们所关心的(Tomcat从事的工作)
cd0425 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 unhappyway 的回复:]

<%! %>是用来声明变量和方法的,你把Java语句写在里边会报错的,Java语句应该写在<% %>里。<%! %>
里的内容也可以写在<% %>里。
[/Quote]
对的
naruto__ 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 unhappyway 的回复:]
<%! %>是用来声明变量和方法的,你把Java语句写在里边会报错的,Java语句应该写在<% %>里。<%! %>
里的内容也可以写在<% %>里。
[/Quote]
that‘s it
keephope 2010-04-18
  • 打赏
  • 举报
回复
<%!

%>

里面写的方法和变量都会作为静态的方法和变量,会消耗服务器资源,同时也有可能引发多个变量同名的问题,记得好像是这样的

因此基本所有的代码都需要写到
<%

%>
里面

同事,在页面写方法是一种非常愚蠢的行为。完全忽略了JAVA的代码重用的意义

神之泪花 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 unhappyway 的回复:]
<%! %>是用来声明变量和方法的,你把Java语句写在里边会报错的,Java语句应该写在<% %>里。<%! %>
里的内容也可以写在<% %>里。
[/Quote]

+1

声明的方式不同
wwwrrrmmm 2010-04-18
  • 打赏
  • 举报
回复
学习JSP最好的办法是看它生成SERVLET之后的原码。
不知道你是否看过。
如果是tomcat服务器,源码在work目录底下一直进去直到看到你的工程名。(发布是发布在webapps底下)
你去看下,<%%>里面的东西。服务器将它变成java代码放在_jspService这个方法里面。
<%!%>这里面的代码,是放在class ***{这里面的},类似于我们定义类的属性。
所以。当然,你能够像下面这样子用吗?
class a{
request.getparameter().......
}
当然不行。
另外还有就是import语句。。
当然就是像JAVA里面放在类外面的import一样了。放的位置不同,功能也是不一样的。。够明白了吧
longlikema 2010-04-18
  • 打赏
  • 举报
回复
申明公共变量的 你拿来处理逻辑
不识别!!!
fiaryeli520 2010-04-18
  • 打赏
  • 举报
回复
顶1楼
sm521 2010-04-18
  • 打赏
  • 举报
回复
顶1楼
leon_xiao 2010-04-18
  • 打赏
  • 举报
回复
<%!
xxx
%>

会被编译为servlet里面的 成员, 试想写个servlet的方法。
老马888 2010-04-18
  • 打赏
  • 举报
回复
申明公共变量的 你拿来处理逻辑不识别!!!
angel 2010-04-18
  • 打赏
  • 举报
回复
1楼正解,<%! %>是用来声明变量和方法的,为了让程序员写的代码读起来更容易
licip 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huhk 的回复:]
建议楼主看一下jsp编译后生成的servlet就知道了。
[/Quote]用<%! %>申明的是类里面的属性,或方法,用<% %>申明的是:类方法_jspService中的局部变量。
van_bo11 2010-04-18
  • 打赏
  • 举报
回复
学习。。。。
huhk 2010-04-18
  • 打赏
  • 举报
回复
建议楼主看一下jsp编译后生成的servlet就知道了。
dut703 2010-04-18
  • 打赏
  • 举报
回复
怎么定义的,你就怎么来
hfliyy 2010-04-17
  • 打赏
  • 举报
回复
他怎么定义我们就怎么用吧,源码又不是我们写的。
weberwong 2010-04-17
  • 打赏
  • 举报
回复
需要主动传进去,这样就可以了
<%!
private void test(HttpServletRequest request, HttpServletResponse response)
{
}
%>
<%
test(request, response);
%>
编程学童 2010-04-17
  • 打赏
  • 举报
回复
<%! %>是用来声明变量和方法的,你把Java语句写在里边会报错的,Java语句应该写在<% %>里。<%! %>
里的内容也可以写在<% %>里。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧