读书人

struts1 空指针异常比较简单! 有代

发布时间: 2012-12-28 10:29:04 作者: rapoo

struts1 空指针错误,比较简单! 有代码!
仅仅用了个struts1.2 做了个登录。 就出现空指针错误了。
很是悲催。一直找不到,很无辜啊!!

javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

java.lang.NullPointerException
com.yourcompany.login.LoginAction.execute(LoginAction.java:19)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


public class LoginAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

LoginForm loginForm=(LoginForm)form;
if(loginForm.getLoginname().equals("qwe")){

return mapping.findForward("LoginSuccess");

}else{

return mapping.findForward("LoginFail");
}
}

}
这个是LOGINACTION 第十九行 用红色标记出来了。

public class LoginForm extends ActionForm {
private String loginname=null;
private String password=null;
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}
LoginForm。java


<struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm" type="com.yourcompany.login.LoginForm"></form-bean>
</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings >
<action
path="/login" type="com.yourcompany.login.LoginAction" name="loginForm">
<forward name="LoginSuccess" path="/loginsuccess.jsp"></forward>
<forward name="LoginFail" path="/loginfail.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
struts-config.xml


 <servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>


<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

web.xml
[最优解释]
login的19行是哪句?
看配置文件LoginForm loginForm=(LoginForm)form;这行应该是没问题
问题应该出现在这句loginForm.getLoginname().equals("qwe");
loginForm.getLoginname()是空
你去你的提交页面上看看有没有提交loginname这个字段就行了呗,或者把你的页面代码贴出来
[其他解释]
关键的jsp代码没贴出来。
你的jsp里应该有form 对应的action为 /login.do
然后里面有name为loginname和password的表单元素。
[其他解释]
在提交时Action=login.do 你看仔细了,你的字段名字
loginname写的对不
[其他解释]
引用:
仅仅用了个struts1.2 做了个登录。 就出现空指针错误了。
很是悲催。一直找不到,很无辜啊!!
Java code
javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(Req……

 </head>

<body>
<form action="<%=request.getContextPath() %>/login.do" method="post">
Loginname:<input type="text" name="Loginname"><br>
Password:<input type="password" name="password"><br>
<input type="submit" value="login">
</form><br>
</body>

这个是JSP页面代码!~

另外我说的 19行 就是if(loginForm.getLoginname().equals("qwe")){ 这个!
[其他解释]
打断点,用debug模式启动跟一下就知道了
[其他解释]
已经解决了,,,谢谢了 !~~是JSP里面页面代码中的 name 属性 大小写 写错了!失误。谢谢大家了!
[其他解释]
引用:
已经解决了,,,谢谢了 !~~是JSP里面页面代码中的 name 属性 大小写 写错了!失误。谢谢大家了!

刚想说你L大写了,结贴吧楼主
[其他解释]
loginForm.getLoginname()
这个是null
------其他解决方案--------------------


楼主为啥不用html:text标签?
[其他解释]
JSP里用户名的首字母大写了

读书人网 >J2EE开发

热点推荐