很简单的jsp 中一个莫名其妙的错误,可能还是 == 和 equals 的问题。

yalvin 2003-02-18 11:09:48
jsp 文件中的代码:
String userid = (String)session.getAttribute("userid");

// out.println(password);
if (userid==null && userid.equals("")) //怀疑有问题的地方
{%>
<jsp:forward page="signin.jsp"/>
<%}%>

tomcat 中的异常:
org.apache.jasper.JasperException

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)

at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:575)

at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:498)

at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:820)

at org.apache.jsp.submit_jsp._jspService(submit_jsp.java:53)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:204)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)

at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)

at java.lang.Thread.run(Thread.java:536)


请教各位高人如何解决,多谢了。
...全文
27 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yalvin 2003-03-05
  • 打赏
  • 举报
回复
解决方法是:改回去了......
zxhong 2003-02-18
  • 打赏
  • 举报
回复

删除jsp编译后的文件
(如果是tomcat,就删除tomcat\work下的东东)
重新启动服务器
yalvin 2003-02-18
  • 打赏
  • 举报
回复
TO study_body(珍惜每一天)
我上面贴出的是全部jsp 文件,没有 out。
yalvin 2003-02-18
  • 打赏
  • 举报
回复
To jcq(疯子弟)

正常显示,没问题。其它jsp 文件也是正常的。

原来用的是 username 没有这个问题,都已经打包成war 了,后来仅仅用 userid 替换了 username ,其它的语法一点没变,就出问题了。Faint。
careerful 2003-02-18
  • 打赏
  • 举报
回复
写错了,应该是这样写:
String userid = (String)session.getAttribute("userid");
if(userid==null) userid="";
if(userid.equals("")){
...
}
study_body 2003-02-18
  • 打赏
  • 举报
回复
<jsp:forward page="signin.jsp"/>
前面不要有任何
out.print()或者out.println()语句。
careerful 2003-02-18
  • 打赏
  • 举报
回复
写错了,应该是这样写:
String userid = (String)session.getAttribute("userid");
if(userid = null) userid="";
if(userid.equals("")){
...
}
jcq 2003-02-18
  • 打赏
  • 举报
回复
这个应该是跟你的环境有关系吧。你把文件改成
<%="adsfsa"%>
这样,使用最简单的看看是不是也出错呢。
yalvin 2003-02-18
  • 打赏
  • 举报
回复
Sorry,呵呵。感谢各位关注。
不过之前用的就是"||",编译时同样通不过。
各位再帮忙想一想??
sikuan 2003-02-18
  • 打赏
  • 举报
回复
我靠,前面两位好快,佩服
xiyangbo 2003-02-18
  • 打赏
  • 举报
回复
对就是这句有问题if (userid==null && userid.equals(""))
想想看,如果userid为null,判断第二个条件userid.equals(""),而userid为null,没有相应的实例,所以equals方法不存在,所以出错.
sikuan 2003-02-18
  • 打赏
  • 举报
回复
if (userid==null && userid.equals("")) {}
这个条件可能为真吗
改成
if(userid==null||userid.equals("")) 看看
jcq 2003-02-18
  • 打赏
  • 举报
回复
应该不是那里的问题,不过你的&&应该改成||才对吧。
Patrick_DK 2003-02-18
  • 打赏
  • 举报
回复
if (userid==null && userid.equals("")) //怀疑有问题的地方


你这句逻辑上有问题吧

userid怎么可能同时是Null又同时是""呢

把&&改为|

先改了再看看的说
houyuming 2003-02-18
  • 打赏
  • 举报
回复
考虑先将uerID这个String对象进行trim()后,然后你的IF条件句事不是可以少写一个条件呀,将符合条件改为单一的条件,估计凭借你的能力可以解决的。
yalvin 2003-02-18
  • 打赏
  • 举报
回复
To zxhong(红透半边天)
谢谢,但不起作用。
terry17 2003-02-18
  • 打赏
  • 举报
回复
会不会是你signin.jsp里有问题呢??或者有的地方没把username 换成userid呢?

81,092

社区成员

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

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