struts初学报错

成一粒 2011-09-26 10:32:04
LoginAction.java:

package wu.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

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.getName().equals("itcast")){

return mapping.findForward("loginSuccess");

}
else{

return mapping.findForward("loginFailure");
}


}

}

LoginForm.java:

package wu.struts;

import org.apache.struts.action.ActionForm;

public class LoginForm extends ActionForm {


private static final long serialVersionUID = 1L;

private String name=null;

private String password=null;

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}

struts-config.xml:
<struts-config>
<form-beans>
<form-bean name="loginForm" type="wu.struts.LoginForm"/>
</form-beans>
<action-mappings>
<action path="/login" type="wu.struts.LoginAction" name="loginForm">
<forward name="loginSuccess" path="/LoginSuccess.jsp"></forward>
<forward name="loginFailure" path="/LoginFailure.jsp"></forward>
</action>
</action-mappings>

</struts-config>


web.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>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</servlet>


Login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<body>

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

</form>
</body>
</html>

LoginSuccess.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<body>
LoginSuccess <br>
</body>
</html>

LoginFailure.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<html>
<body>
LoginFailure <br>
</body>
</html>

错误信息:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

java.lang.NullPointerException
wu.struts.LoginAction.execute(LoginAction.java:23)
org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.

...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hllfl 2011-09-27
  • 打赏
  • 举报
回复
java.lang.NullPointerException
空指针异常
(LoginAction.java:23)
23行值没得到
struts1木用过
coolbamboo2008 2011-09-27
  • 打赏
  • 举报
回复
5楼正解,form和前台页面的field必须一致
bijanen19861113 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yexiongmybh 的回复:]
你在LoginForm里面定义的是name,而你在Login.jsp里面写的input属性name是username,这两个属性必须是一样的,后台的LoginForm才能取到值。

应该这么写:

Java code

//LoginForm
private String username="";
private String password="";



jsp页面
……
[/Quote]

对头,页面中传递的name的名称必须与actionform中 的属性的一致,不然,它木有办法进行填充..导致的结果是在action中取不到actionform,就报了空指针了。
成一粒 2011-09-27
  • 打赏
  • 举报
回复
嗯,谢谢楼上正解
yexiongMYBH 2011-09-27
  • 打赏
  • 举报
回复
你在LoginForm里面定义的是name,而你在Login.jsp里面写的input属性name是username,这两个属性必须是一样的,后台的LoginForm才能取到值。

应该这么写:

//LoginForm
private String username="";
private String password="";


jsp页面

<form action="..." method="POST">
<input type="text" name="username"/>
<input type="password" name="password"/>
<input type="submit" value="提交"/>
</form>
一天zijie一夜 2011-09-27
  • 打赏
  • 举报
回复
jsp页面的变量是否跟formbean中的name名一致,其他倒是没看出来错误
完美灬缺陷 2011-09-27
  • 打赏
  • 举报
回复
java.lang.NullPointerException
wu.struts.LoginAction.execute(LoginAction.java:23)

估计是你loginForm.getName()这个值为空吧。
yuanyu113 2011-09-26
  • 打赏
  • 举报
回复
拿分的

67,512

社区成员

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

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