首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

ssh2 登陆提交表单出现空指针错误

2012-08-19 
ssh2 登陆提交表单出现空指针异常null2010-1-28 14:15:25 org.apache.catalina.core.StandardWrapperValve

ssh2 登陆提交表单出现空指针异常
null
2010-1-28 14:15:25 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.test.action.LoginAction.execute(LoginAction.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)

下面是LoginAction
public class LoginAction extends ActionSupport {
private Users user;
private UsersService userService;
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
public UsersService getUserService() {
return userService;
}
public void setUserService(UsersService userService) {
this.userService = userService;
}
@SuppressWarnings("unchecked")
@Override
public String execute() throws Exception {
System.out.println(user);
this.userService.login(user);
return SUCCESS; 
}



[解决办法]

探讨
login.jsp

<body>
     <s:form action="login" >
  <s:textfield name="userName" label="用户名" />
  <s:password name="password" label="密码" />
  <s:submit value="登录" />
  </s:form>
   </body>

[解决办法]
user是一个实例化的对象
你打印的是一个类,它打印出这个来应该是对的

System.out.println(user.userName); (如果这种写法不对的话换成System.out.println(user.getUserName()); )

这样应该就可以正确显示你的userName的值了
[解决办法]
探讨
userSericeImpl:
 public boolean login(Users user) {
 this.usersDAO.findByExample(user);//你这个方法返回的是一个集合,你判断了吗?
 return true;//一直return true吗?那这个方法就没意义了
 }

 userDAOImpl:
 public List findByExample(Users user) {
 try {
 List results =this.getHibernateTemplate().findByExample(user);
 return results;
 } catch (RuntimeException re) {
 throw re;
 }
 }

[解决办法]
是不是Spring配置文件中DAO没有实例化或者连库链接类没有注入进去?
[解决办法]
<bean id="saveUsersActiom" class="com.test.action.SaveUsersAction">
<property name="usersService" ref="usersService"> </property>
</bean> 
=====================================
错了,这一个先不要改,保持原样
[解决办法]
不是代码有错误,是你的逻辑有错误,
登陆之前,你先要到数据库中去除出user列表,然后 list.get(i)方法遍历,遍历出来的你进行封装,封装成User对象,进行判断:
String username = request.getParameter("username");
String password = request.getParameter("password");
 if(username.equals( user.getUserName()) && password .equals(user.getPassword() ) )
如果这些相等,则再进行登陆成功挑战


[解决办法]
还有一个方法,重新设置你的Class , 让你的LoginAction继承一个基类 (BaseAction), 那个基类BaseAction再继承ActionSupport,实现ServletRequestAware,SessionAware,ServletResponseAware,这样比较好
在 BaseActionz中封装 一些属性 public HttpServletRequest request; public HttpServletResponse response;


public static Logger logger = Logger.getLogger(BaseAction.class);//做日志等等。

热点排行
Bad Request.