アプリ版:「スタンプのみでお礼する」機能のリリースについて

すっきりわかるサーブレット&JSPを参考にログイン画面を作ったのですが、値がnullですとエラーが出てしまいます。どうすればエラーを解消できるでしょう?
環境は、windows7でeclipseを使っています。

*画面設計
Login.java→User→LoginLogic→Login.jsp

*Login.java
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pass = request.getParameter("pass");

User user = new User(id, pass);

LoginLogic loginLogic = new LoginLogic();
boolean isLogin = loginLogic.execute(user);

if(isLogin){
HttpSession session = request.getSession();
session.setAttribute("loginLogic", user);
}
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Login.jsp");
dispatcher.forward(request, response);

*User
public String id;
public String pass;

public User(){}
public User(String id, String pass){
this.id = id;
this.pass = pass;
}

public String getId() {return id;}
public String getPass() {return pass;}

*LoginLogic
public boolean execute(User user){

if(user.getPass().equals("1234")){return true;}
return false;

*Login.jsp
<html>
<head>
<meta charset="UTF-8">
<title>ログイン画面</title>
</head>
<body>
<h1>名刺管理</h1>
<form action = "/example/Businessservlet"
method="get">
ログインID:<input type="text" name="id"><br>
<br>
パスワード:<input type="password" name="pass">
<br><br>
<input type="submit" value="ログイン"><br><br>
</form>
</body>
</html>



お願い致します。

質問者からの補足コメント

  • (補足)
    画面設計が間違っていた結果、idとpassをnullにしてしまいました。ご指摘ありがとうございました!

      補足日時:2015/11/16 16:31

A 回答 (1件)

これだけでは情報が少なすぎます。


せめてどこでエラーが出ているか書かないと誰も答えられません。

少しだけ見ましたが、
boolean isLogin = loginLogic.execute(user);

おそらくここから呼び出されている
executeの処理で起きているのでしょう。

if(user.getPass().equals("1234")){return true;}

ここでUser#passがnullのままだと起きますね。
サーブレットへリクエスト投げている際に
http://xxxx.xx/xxx.jsp?pass=abcd&id=user
のようなリクエストがちゃんと投げられてますか?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

エラー部分は
java.lang.NullPointerException
model.LoginLogic.execute(LoginLogic.java:5)
servlet.Login.doGet(Login.java:29)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Login.javaの
request.setCharacterEncoding("UTF-8");
にブレークポイントを置いて、F6を押すと
String id = request.getParameter("id");
String pass = request.getParameter("pass");

変数ビューに(id)と(pass)はnullですと表示されます。

request.setCharacterEncoding("UTF-8");←ブレークポイント
String id = request.getParameter("id");←null
String pass = request.getParameter("pass");←null

以上となります。情報が足らず申し訳ございませんでした。

>ここでUser#passがnullのままだと起きますね。
おっしゃる通りで、userとidがnullの状態です。

http://xxxx.xx/xxx.jsp?pass=abcd&id=user
のようなリクエストがちゃんと投げられてますか?
確認致します。

お礼日時:2015/11/16 15:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!