2016-12-24 7 views
3

私はjavaを初めて使っています。最初のJava Springプロジェクトを作成し、次のコードを追加しましたが、エラーがあるようです。implementsクラスのJavaヌルポイント例外?

これは私が試みたものです。

MyController.java

package org.jpanel.controller; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.jpanel.service.User; 

//import javax.servlet.http.HttpServletRequest; 
//import javax.servlet.http.HttpServletResponse; 
//import org.jpanel.service.*; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class MyController { 

    public User user; 

    @RequestMapping(value="/login",method=RequestMethod.GET) 
    public ModelAndView login() { 

     String message = "Username"; 
     return new ModelAndView("login", "message", message); 
    } 

    @RequestMapping(value="/login",method=RequestMethod.POST) 
    public ModelAndView postLogin(HttpServletRequest request, HttpServletResponse response) { 
     String username = request.getParameter("log"); 
     String password = request.getParameter("pwd"); 

     boolean UserExists; 

     if(username != "" || password != "") { 
      UserExists = user.isValidUser(username, password); 
     } else { 
      UserExists = false; 
     } 

     if(UserExists != false) { 
      return new ModelAndView("login", "message", "Posted"); 
     } else { 
      return new ModelAndView("login", "message", "<div class = 'notification jp-login-failed'>Username or Password Incorrect</div>"); 
     } 
    } 
} 

User.java

package org.jpanel.service; 

public interface User { 

    public boolean isValidUser(String username, String password); 

    public int createUser(String username, String password); 

} 

UserActions.java

package org.jpanel.service.impl; 

import org.jpanel.service.User; 
import org.springframework.stereotype.Repository; 

@Repository 
public class UserActions implements User { 

    @Override 
    public boolean isValidUser(String username, String password) { 
     System.out.println(username); 
     if(username != "" || password != "") { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    @Override 
    public int createUser(String username, String password) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

} 

Iをコードを実行すると、ログインはうまくいくように見えますが、フォームを嫌うとエラーが発生します。

java.lang.NullPointerException 
org.jpanel.controller.MyController.postLogin(MyController.java:37) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:498) 
org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180) 
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440) 
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

私はライン37の前usernamepasswordをprintlnをするときには、コンソールに表示されているように見えます。

UserExists = user.isValidUser(username, password);行にエラーが発生しているようです。私はどこが間違っていたのか分かりませんが、これをデバッグすることはできません。誰も助けることができますか?前もって感謝します。

答えて

2

あなたはどんなUserオブジェクトも作成しないので、Nullpointerexceptionを取得しています。

は次のようにユーザーインスタンス変数を初期化:

まあ
user = new UserActions(); 
user.isValidUser(log, pwd); 
.... 
6

、明らかにnullがuserから来ています。

私はあなたがあなたが欠場すると、ユーザーのフィールド宣言

+0

こんにちは上@Autowired注釈、あなたの答えに感謝であると思われるので、春には、あなたのためuserを初期化したいと仮定します。 '@ Autowired'はどこに追加しますか?ユーザーを宣言していますか?ここに - 'パブリックユーザのユーザ;'? –

+0

@スラブン - はい –