恳请高手帮忙解答application的实例化问题

changshacyrus 2011-04-05 03:50:47
<%@page contentType="text/html;charset=GB2312"%>
<%@page import="java.util.*"%>
<%!
int n=0;
ServletContext application;//此处为什么不能写成ServletContext application=getServletContext();
synchronized void sendMessage(String s){
n++;
application=getServletContext();//为什么不能函数外实例化application
Vector v=new Vector();
v.add("NO."+n+":"+s);
application.setAttribute("mess",v);
}
%>
<%
String name=request.getParameter("name");
String title=request.getParameter("title");
String messages=request.getParameter("messages");
if(name==null)
name="guest";
if(title==null)
title="无标题";
if(messages==null)
messages="无信息";
String s="姓名:"+name+"#"+"标题:"+title+"#"+"信息:"+messages;
sendMessage(s);
%>
<html>
<body bgcolor=cyan>
<font size=10>
<p>你的信息已发送
<br><a href=myapplication.jsp>返回</a>
</font>
</body>
</html>
...全文
64 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
changshacyrus 2011-04-05
  • 打赏
  • 举报
回复
谢谢各位的回复,我在好好研究下
beowulf2005 2011-04-05
  • 打赏
  • 举报
回复
先学Servlet,再学JSP,一切自然豁然开朗
paneyjiang 2011-04-05
  • 打赏
  • 举报
回复
ServletContext application=getServletContext(); 和下面的这个是一样的
ServletContext application=this.getServletContext();
全局变量的初始化应该是先执行的,那么这里需要this 对象,但是在jsp转化为servlet的时候还没有创建HttpServlet对象,这个时候this.getServletContext();应该是null pointer

在方法里面为什么可以呢,因为这时候已经产生了HttpServlet对象,不知是否应该是这样
changshacyrus 2011-04-05
  • 打赏
  • 举报
回复
谢谢你的解答和建议,但还是不理解为什么它会这样,不知道有没理论上的解释
jeky_zhang2013 2011-04-05
  • 打赏
  • 举报
回复
getServletContext();这个方法在特定的环境中才有效的,好像是servletContext类的方法,建议将java代码和jsp分开,结构会更清晰。
changshacyrus 2011-04-05
  • 打赏
  • 举报
回复
自己先顶下
changshacyrus 2011-04-05
  • 打赏
  • 举报
回复
如果注释(一)处的代码换成注释后的ServletContext application=getServletContext(); 则编译不过去,请问这是为什么,而如果是行这样创建对象(Integer it=new Integer();)则可以编译过去,且在函数内可以使用该对象it。
烦请大家帮忙看看,不胜感激!!!!!!!!!!

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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