struts登陆中出现的问题

zhangbolang888 2009-04-22 04:32:54
MyEclipse提示:
java.lang.NullPointerException
这个到底是什么问题呀,高手们帮帮忙,我是初学者,向大家学习。
...全文
99 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengqinglangzi 2009-04-22
  • 打赏
  • 举报
回复
空指针异常,这个在WEB开发中一个经常遇到的错误
real518 2009-04-22
  • 打赏
  • 举报
回复
空指针异常,可能传的类中没有值。
micg2233 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xnjnmn 的回复:]
空指针
你的对象为空
看api帮助文档
public class NullPointerExceptionextends RuntimeException当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:

调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的…
[/Quote]
帮顶下
zhangbolang888 2009-04-22
  • 打赏
  • 举报
回复
是一样的。我的再研究研究了
chenleicom 2009-04-22
  • 打赏
  • 举报
回复
去确认下 页面传值时候 那些属性是否跟实体类里面的属性一样
zhangbolang888 2009-04-22
  • 打赏
  • 举报
回复
// 只包含setter和getter方法的类

package org.lxh.vo ;

import java.util.* ;
public class PersonVo
{
// 表中所有字段
private String name ;
private String password ;
// 此属性用于保存全部错误信息
private List errors ;

public boolean invalidate()
{
boolean flag = true ;
// 验证ID
if(this.name==null||"".equals(this.name))
{
flag = false ;
errors.add("name不能为空!") ;
}
else
{
// 进行长度验证:3~10位
if(this.name.length()<3||this.name.length()>10)
{
flag = false ;
errors.add("name的长度应为3~10位!") ;
}
}
// 验证密码
if(this.password==null||"".equals(this.password))
{
flag = false ;
errors.add("密码不能为空!") ;
}
else
{
// 进行长度验证:3~10位
if(this.password.length()<3||this.password.length()>10)
{
flag = false ;
errors.add("密码的长度应为3~10位!") ;
}
}
return flag ;
}

public void setErrors(List errors)
{
this.errors = errors ;
}
public List getErrors()
{
return this.errors ;
}

// 生成getter和setter方法
public void setName(String name)
{
this.name = name ;
}
public void setPassword(String password)
{
this.password = password ;
}
public String getName()
{
return this.name ;
}
public String getPassword()
{
return this.password ;
}
}

// 本接口定义本项目中所操作person表的全部方法

package org.lxh.dao ;

// 使用PersonVo类
import org.lxh.vo.* ;

public interface PersonDAO
{
// 需要一个登陆验证的方法
public boolean isLogin(PersonVo pv) ;
}

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.mldn.lxh.struts.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;

/**
* MyEclipse Struts
* Creation date: 04-18-2009
*
* XDoclet definition:
* @struts.form name="loginForm"
*/
public class LoginForm extends ActionForm {
/*
* Generated fields
*/

/** password property */
private String password;

/** name property */
private String name;

/*
* Generated Methods
*/

/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
ActionErrors errors = new ActionErrors();
if(this.name==null||"".equals(this.name))
{
errors.add("name",new ActionMessage("name.null")) ;
}
if(this.password==null||"".equals(this.password))
{
errors.add("password",new ActionMessage("password.null")) ;
}
return errors;
}

/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}

/**
* Returns the password.
* @return String
*/
public String getPassword() {
return password;
}

/**
* Set the password.
* @param password The password to set
*/
public void setPassword(String password) {
this.password = password;
}

/**
* Returns the name.
* @return String
*/
public String getName() {
return name;
}

/**
* Set the name.
* @param name The name to set
*/
public void setName(String name) {
this.name = name;
}
}

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.mldn.lxh.struts.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 org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.lxh.vo.PersonVo;

import cn.mldn.lxh.struts.form.LoginForm;
import org.lxh.factory.*;
/**
* MyEclipse Struts
* Creation date: 04-18-2009
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/form/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
String name = loginForm.getName();
String password = loginForm.getPassword();
PersonVo per = new PersonVo();
per.setName(name);
per.setPassword(password);
if(DAOFactory.getPersonDAOInstance().isLogin(per))
{
request.setAttribute("person",per);
}
else
{
ActionMessages errors = new ActionMessages();
errors.add("error",new ActionMessage("error.login"));
super.saveErrors(request, errors);
return mapping.getInputForward();
}
return mapping.findForward("suc");
}
}
// 具体实现DAO接口的类

package org.lxh.daoimpl ;

// 需要连接数据库
// 需要对VO的内容进行具体的验证

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.lxh.dao.*;
import org.lxh.dbc.*;
import org.lxh.vo.*;

public class PersonDAOImpl implements PersonDAO {

public boolean isLogin(PersonVo pv) {
// TODO Auto-generated method stub
boolean flag = false;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
DataBaseConnection dbc = null ;
try {
// 2.建立连接
dbc = new DataBaseConnection() ;
String sql = "select name from admin where name=? and password=?";
ps = conn.prepareStatement(sql);
ps.setString(1, pv.getName());
ps.setString(2, pv.getPassword());
rs = ps.executeQuery() ;
// 判断是否有记录
if(rs.next())
{
// 如果有记录,则执行此段代码
// 用户是合法的,可以登陆
flag = true ;
pv.setName(rs.getString(1)) ;
}
// 依次关闭
rs.close() ;
ps.close() ;
}
catch(Exception e)
{
System.out.println(e) ;
}
finally
{
// 最后一定要保证数据库已被关闭
dbc.close(rs, ps, conn) ;
}
return flag;
}

}
javajoy 2009-04-22
  • 打赏
  • 举报
回复
我遇到过这个问题,是因为我的jsp页面传值的时候出错了,你再看看是不是
cjg520jie 2009-04-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhangbolang888 的回复:]
也就是说,我的jsp页面除了问题,对吗,是不是他没有传值进去,对吗?
[/Quote]

不一定

空指针异常是很常见的,你把整个log贴出来看下,猜知道哪里出的问题啊
zhangbolang888 2009-04-22
  • 打赏
  • 举报
回复
也就是说我的jsp页面出问题了,对吗?他没有把值传进去对吗
zhangbolang888 2009-04-22
  • 打赏
  • 举报
回复
也就是说,我的jsp页面除了问题,对吗,是不是他没有传值进去,对吗?
great1681 2009-04-22
  • 打赏
  • 举报
回复
这是典型的空指针异常,是由于传入了null对象导致的~~
zhangbolang888 2009-04-22
  • 打赏
  • 举报
回复
这个东西我很难处理掉,那位高手能帮我处理一下,能不能说一下struts的工作原理呀
xnjnmn 2009-04-22
  • 打赏
  • 举报
回复
空指针
你的对象为空
看api帮助文档
public class NullPointerExceptionextends RuntimeException当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:

调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。
应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。

81,092

社区成员

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

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