代码如下:
登陆界面(index.jsp)
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Login Form</title>
  </head> 
  <body>
   <form name="loginForm" action="login.do"  method="post" >
<table width="351" height="274" style="width: 392px; height: 274px;">
<tr>用户名:<input name="userName" type=text >
密码:<input name="password" type=password ></tr>
<br><input value="提交" type="submit" > &nbsp;
<input value="重置" type="reset" > 
</table>
  </form>
  </body>
</html>loginaction.java
package com.web.action;
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;import com.dao.LoginDao;
import com.web.form.LoginForm;public class LoginAction extends Action {
    public ActionForward execute(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception{
            LoginForm loginForm = (LoginForm) form;--这一步的时候,loginForm 为 null,然后就报空指针错误了
LoginDao loginDao = new LoginDao();
if (loginDao.isLogin(loginForm)){
return mapping.findForward("sucess");
}
else{
return mapping.findForward("fail");
}
}
}
loginform.java
package com.web.form;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
public class LoginForm extends ActionForm { private String password; private String userName; public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
ActionErrors errors = new ActionErrors() ;
if(this.userName==null||"".equals(this.userName))
{
errors.add("userName",new ActionMessage("userName.null")) ;
}
if(this.password==null||"".equals(this.password))
{
errors.add("password",new ActionMessage("password.null")) ;
}
return errors;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {

}
public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
}
}struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config> 
<form-beans> 
<form-bean   name="loginForm" 
type="com.web.form.loginForm"/> 
</form-beans> 

<action-mappings> 
    <action   path="/login"
     attribute="loginForm"
               name="loginForm"
               scope="request"
               type="com.web.action.LoginAction">
<forward name="success" path="/jsp/sucess.jsp"/> 
<forward name="fail" path="/jsp/failed.jsp"/> 
</action> 
</action-mappings> </struts-config>
现在的问题就是执行到loginaction的时候,LoginForm loginForm = (LoginForm) form;执行之后,loginForm为空。一直找不到原因
String userName=request.getParameter("userName");
我加了一个这个,userName可以获取到值。
谢谢大家了,帮忙看看怎么回事,我是找了很久都没有找出来原因

解决方案 »

  1.   

    Form名:public class LoginForm extends ActionForm 
    配置Form时写错了 type="com.web.form.loginForm"应该是 type="com.web.form.LoginForm"
      

  2.   

    楼上正解,应该是 type="com.web.form.LoginForm".
    借助Myeclipse创建form,action.配置文件就不会那么容易出错
      

  3.   

     return    mapping.findForward("sucess");
    <forward name="success" path="/jsp/sucess.jsp"/> 不匹配哦<form-bean  name="loginForm"    type="com.web.form.loginForm"/> 楼上的