質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

3回答

17178閲覧

javaでsnsを作っているのですが、 java.lang.NullPointerException が出てしまいます。

edoooooo

総合スコア476

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/04/11 12:06

編集2016/04/12 13:16

イメージ説明

Main.java(servlet)ではJSTLを使った時用のコードになっていて、main.jspではJSTLを使っていないコードだったため、mian.jspでもcoreタグライブラリを使用しました。
エラーも java.lang.NullPointerExceptionから変わッタノですが、属性名と属性の間にスペースを入れたところ治りました。ありがとうございました。

java

1HTTP Status 500 - /WEB-INF/jsp/main.jsp (line: 24, column: 44) The JSP specification requires that an attribute name is preceded by whitespace 2 3type Exception report 4 5message /WEB-INF/jsp/main.jsp (line: 24, column: 44) The JSP specification requires that an attribute name is preceded by whitespace 6 7description The server encountered an internal error that prevented it from fulfilling this request. 8 9exception 10 11org.apache.jasper.JasperException: /WEB-INF/jsp/main.jsp (line: 24, column: 44) The JSP specification requires that an attribute name is preceded by whitespace 12 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42) 13 org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443) 14 org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89) 15 org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:164) 16 org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:153) 17 org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1225) 18 org.apache.jasper.compiler.Parser.parseElements(Parser.java:1442) 19 org.apache.jasper.compiler.Parser.parse(Parser.java:138) 20 org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242) 21 org.apache.jasper.compiler.ParserController.parse(ParserController.java:102) 22 org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199) 23 org.apache.jasper.compiler.Compiler.compile(Compiler.java:374) 24 org.apache.jasper.compiler.Compiler.compile(Compiler.java:354) 25 org.apache.jasper.compiler.Compiler.compile(Compiler.java:341) 26 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662) 27 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364) 28 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) 29 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) 30 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 31 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 32 servlet.Main.doGet(Main.java:54) 33 javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 34 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 35 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 36note The full stack trace of the root cause is available in the Apache Tomcat/7.0.65 logs. 37 38Apache Tomcat/7.0.65

javaでsnsを作っているのですが、NullPointerExceptionが出てしまいます。原因がわかりません、アドバイスの方をどうぞよろしくお願いします。
//変更後→nullPointerではなくTTP Status 500 - /WEB-INF/jsp/main.jsp (line: 24, column: 44) The JSP specification requires that an attribute name is preceded by whitespaceこのようなエラーに変わりました。
このコードはSerlvlet の Main.javaです。→スペースを入れたところ治りました。

java

1package servlet; 2 3 4import java.util.List; 5import javax.servlet.RequestDispatcher; 6 7import java.io.IOException; 8import java.sql.DriverManager; 9 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15import javax.servlet.http.HttpSession; 16 17import com.mysql.jdbc.Connection; 18import com.mysql.jdbc.PreparedStatement; 19 20import model.GetMutterListLogic; 21import model.Mutter; 22import model.User; 23import model.PostMutterLogic; 24 25/** 26 * Servlet implementation class Main 27 */ 28@WebServlet("/Main") 29public class Main extends HttpServlet { 30 31 private static final long serialVersionUID = 1L; 32 33 /** 34 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 35 */ 36 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 37 38 //つぶやきリストを取得して、リクエストスコープに保存 39 GetMutterListLogic getMutterListLogic=new GetMutterListLogic(); 40 List<Mutter>mutterList=getMutterListLogic.execute(); 41 request.setAttribute("mutterList", mutterList); 42 43 44 45 //ログインしているか確認するため 46 //セッションスコープからユーザー情報を取得 47 HttpSession session=request.getSession(); 48 User loginUser=(User)session.getAttribute("loginUser"); 49 50 if(loginUser==null){//ログインしていない場合 51 //リダイレクト 52 response.sendRedirect("/docoTsubuu/"); 53 }else{//ログイン済みの場合 54 //フォワード 55 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 56 dispatcher.forward(request, response); 57 } 58 59 } 60 protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 61 //リクエストパラメータの取得 62 request.setCharacterEncoding("UTF-8"); 63 String text=request.getParameter("text"); 64 65 //入力値チェック 66 if(text!=null&&text.length()!=0){ 67 68 //セッションスコープに保存されたユーザー情報を取得 69 HttpSession session=request.getSession(); 70 User loginUser=(User)session.getAttribute("loginUser"); 71 72 //つぶやきをつぶやきリストに追加 73 Mutter mutter=new Mutter(loginUser.getName(),text); 74 PostMutterLogic postMutterLogic=new PostMutterLogic(); 75 postMutterLogic.execute(mutter); 76 77 //つぶやきリストを習得して、リクエストスコープに保存 78 GetMutterListLogic getMutterListLogic=new GetMutterListLogic(); 79 List<Mutter> mutterList=getMutterListLogic.execute(); 80 request.setAttribute("mutterList", mutterList); 81 82 83 }else{ 84 //エラーメッセージをリクエストスコープに保存 85 86 request.setAttribute("errorMsg", "つぶやきが入力されていません"); 87 } 88 //メイン画面にフォワード 89 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/main.jsp"); 90 dispatcher.forward(request, response); 91 92 // TODO Auto-generated method stub 93 response.getWriter().append("Served at: ").append(request.getContextPath()); 94 } 95 96} 97

このコードは main.jspです。main.jspもJSTLを使ったコードに変更しました。

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8<title>どこつぶ</title> 9</head> 10<body> 11<h1>どこ粒メイン</h1> 12<p> 13<c:out value="${loginUser.name}"/>さん、ログイン中 14<a href="/docoTsubuu/Logout">ログアウト</a> 15</p> 16<p><a href="/docoTsubuu/Main">更新</a></p> 17<form action="/docoTsubuu/Main"method="post"> 18<input type="text"name="text"> 19<input type="submit" value="つぶやく"> 20</form> 21<c:if test="${not empty errorMsg}"> 22<p>${errorMsg}</p> 23</c:if> 24<c:forEach var="mutter"items="${mutterList}"> 25<p><c:out value="${mutter.userName}"/>: 26<c:out value="${mutter.text}"/></p> 27</c:forEach> 28</body> 29</html> 30

皆さんどうぞよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkturbo

2016/04/11 12:09

まず「servlet.Main.doGet(Main.java:51)」の前後のソースplz
abs123

2016/04/12 02:41

main.jspファイルは存在するでしょうか? 簡潔にファイル構成を追記お願いします。
edoooooo

2016/04/12 09:34

皆さんありがとうございます。main.jspも存在します。どうぞよろしくお願いします
edoooooo

2016/04/12 13:23

返信欄に結果などを書くべきだったと思いました。ありがとうございました。
guest

回答3

0

ベストアンサー

servlet.Main.doGet(Main.java:51)

Mainクラスの51行目で問題が発生しているようです。nullオブジェクトに対して操作しようとしていませんか?

いずれにせよコードもなしに原因を議論することは出来ません。

投稿2016/04/11 12:48

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2016/04/12 09:25

コードを乗せずに失礼いたしました。 お教え頂けだらどうぞよろしくお願いします。
v1w

2016/04/12 10:35 編集

すみません。 誤った欄に「自分の回答」を書いてしまいました。
edoooooo

2016/04/12 13:26

Serlvetとjspのmutterlistの指しているものが違いました。jspをJSTLに変えて、修正しました。ありがとうございました。
guest

0

関連質問で解決済みとなっている項目が参考になると思います。
java.lang.NullPointerExceptionが出ます。どうぞよろしくお願いします。

また、この書籍のWebページも確認したほうがよさそうですね。
http://book.impress.co.jp/books/1112101008_3

投稿2016/04/12 10:33

v1w

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2016/04/12 13:24

デバッガを使用できるようにしたいと思います。ありがとうございました。
guest

0

何ヶ所かNullPointerExceptionが出そうな候補はありますが・・
やりかたとして、main.jspをgitや別名で保存して戻れるようにしたら、<% %>で書いてある部分を全部削除またはコメントアウトして、上からひとつひとつ追加して動作を見ながら足していってみてはいかがでしょうか。

投稿2016/04/12 10:29

thesecret11

総合スコア234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2016/04/12 13:25

一番上の<% %>をコメントアウトしたところ、いきなり、エラーが変わりました。 そうしたところ、エラーの原因に気づきました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問