简体   繁体   English

JSP页面的Tomcat 500错误-唯一的JSP内容是if / else

[英]Tomcat 500 error with JSP page - the only JSP contents is if/else

i hope everyone is well. 我希望每个人都很好。

I come from a PHP background and recently I have had to do some work on a project based on Java - I then found out about JSP pages which was quite similar to PHP. 我来自PHP背景,最近我不得不在基于Java的项目上做一些工作-然后我发现了与PHP非常相似的JSP页面。 I have tried to make a page which has a "String" variable declared, which is called account. 我试图制作一个页面,该页面具有声明的“字符串”变量,称为帐户。 I then check if the account is an administrator, if so they can see the admin menus. 然后,我检查该帐户是否为管理员,如果可以的话,他们可以看到管理菜单。 However, it works fine for me in firefox and chrome, but customers using the same browser are seeing a 500 error. 但是,它在firefox和chrome中对我来说工作正常,但是使用同一浏览器的客户看到500错误。 Please see details below from the logs, i have no idea what it means but i do know a simple if statement shouldn't cause it (stupid language). 请从日志中查看下面的详细信息,我不知道这意味着什么,但是我知道一个简单的if语句不应该引起它(愚蠢的语言)。


Mar 06, 2014 8:51:59 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/test] threw exception [An exception occurred processing JSP page /test.jsp at line 126

123:                </ul>       
124:            </li>
125: <% 
126: if (account.equals("sysadmin")) { %>
127:            <li>
128:                <a href="#" target="_gts">AssetTrack</a>
129:                <ul>


Stacktrace:] with root cause
java.lang.NullPointerException
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:203)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:409)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1044)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)

Any ideas let me know, before i go insane! 在我发疯之前,任何想法都让我知道! Thanks, 谢谢,

Paul 保罗

Try this , 尝试这个 ,

if ((null!=account) && (account.equals("sysadmin")))

because it says , you have null pointer exception . 因为它说,您null pointer exception so you should check whether account is not null 所以你应该检查account是否不为null

Hope it helps ! 希望能帮助到你 !

使用此方法可以避免空指针欺骗:

if(account!=null && !account.toString().equalsIgnoreCase(""))

When ever you get a NullPointerException as in this case, you must be calling some function on a null. 在这种情况下,无论何时获得NullPointerException,都必须在null上调用某些函数。 In your code 在你的代码中

if (account.equals("sysadmin")) { 如果(account.equals(“ sysadmin”)){

NullPointerException has occured because account may be null. 由于帐户可能为空,所以发生了NullPointerException。

so before using this line 所以在使用这条线之前

if (account.equals("sysadmin")) { 如果(account.equals(“ sysadmin”)){

You should check if account is not null Like below 您应该检查帐户是否不为空,如下所示

if(account!=null) { if (account.equals("sysadmin")) { if(account!= null){if(account.equals(“ sysadmin”)){

Means you should call equals function only after confirming account is not null. 意味着仅在确认帐户不为空之后才应调用equals函数。

Hope it helps! 希望能帮助到你!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM