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

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

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

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

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

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

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

Q&A

解決済

1回答

257閲覧

MVCクラス内の例外処理を実行したい

meguuuu

総合スコア7

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

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

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

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

0グッド

0クリップ

投稿2025/02/26 13:24

編集2025/02/27 03:51

実現したいこと

Main.javaクラス内のdoPostメソッドで、if(text!=null&&text.length()!=){処理内容}
else{ request.setAttribute("errorMsg","つぶやきが入力されていません");}

最初のif文ではフォームを入力された時、入力された文字列をint型にしてフォワードしてJSPファイルに送るという処理を

else文ではそのフォームが入力されなかった時の処理を書いています
そしてリクエストスコープに保存したものをJspファイルのほうでerrorMsgとして出力

発生している問題・分からないこと

画面の表示やフォーム入力すると入力が格納されたりとほかの処理は機能しているが、空のフォームを送っても上記のような例外が出力されず表示がリセットされる

エラーメッセージ

error

1エラーメッセージはなし

該当のソースコード

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="model.User ,model.Mutter,java.util.List"%> <% User loginUser = (User) session.getAttribute("loginUser"); List<Mutter> mutterList=(List<Mutter>)application.getAttribute("mutterList"); String errorMsg=(String)request.getAttribute("errorMsg"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>どこつぶ</title> </head> <body> <h1>どこつぶメイン</h1> <p> <%=loginUser.getName() %>さん ログイン中 <a href="Logout">ログアウト</a> </p> <p><a href="Main">更新</a></p> <form action="Main"method="post"> <input type="text" name="text"> <input type="submit" value="つぶやく"> </form> <% if(errorMsg !=null) {%> <p><%= errorMsg %></p> <%} %> <%for (Mutter mutter:mutterList){%> <p><%=mutter.getUserName() %>:<%=mutter.getText() %></p> <%} %> </body> </html>

Main.java

1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6 7import jakarta.servlet.RequestDispatcher; 8import jakarta.servlet.ServletContext; 9import jakarta.servlet.ServletException; 10import jakarta.servlet.annotation.WebServlet; 11import jakarta.servlet.http.HttpServlet; 12import jakarta.servlet.http.HttpServletRequest; 13import jakarta.servlet.http.HttpServletResponse; 14import jakarta.servlet.http.HttpSession; 15 16import model.Mutter; 17import model.PostMutterLogic; 18import model.User; 19 20/** 21 * Servlet implementation class Main 22 */ 23@WebServlet("/Main")//つぶやきリクエストのコントローラ 24public class Main extends HttpServlet { 25 private static final long serialVersionUID = 1L; 26 27 /** 28 * @see HttpServlet#HttpServlet() 29 */ 30 public Main() { 31 super(); 32 // TODO Auto-generated constructor stub 33 } 34 35 /** 36 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 37 */ 38 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 39 40 41 ServletContext application =this.getServletContext(); 42 43 44 45 46 47 List<Mutter>mutterList= 48 (List<Mutter>)application.getAttribute("mutterList"); 49 50 if(mutterList==null) { 51 52 mutterList=new ArrayList<>(); 53 54 application.setAttribute("mutterList",mutterList); 55 56 57 } 58 59 HttpSession session=request.getSession(); 60 61 User loginUser=(User)session.getAttribute("loginUser");//sessionスコープからloginUserインスタンスを取得 62 63 if(loginUser==null) { 64 65 response.sendRedirect("index.jsp"); //Beansのインスタンス(loginUser)が入っていないと、入力画面(index.jsp)に戻る 66 67 }else { 68 69 70 RequestDispatcher dispatcher= 71 request.getRequestDispatcher("WEB-INF/main.jsp"); //Beansのインスタンス(loginUser)が入ってると、main画面(main.jsp)に飛ぶ 72 73 dispatcher.forward(request,response); 74 } 75 76 77 } 78 79 /** 80 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 81 */ 82 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 83 84 request.setCharacterEncoding("UTF-8"); 85 86 String text=request.getParameter("text"); 87 88 if(text!=null&&text.length()!=0) 89 { 90 91 ServletContext application=this.getServletContext();//requsstServletContextではない 92 93 List<Mutter> mutterList= 94 95 (List<Mutter>)application.getAttribute("mutterList"); 96 97 HttpSession session=request.getSession(); 98 User loginUser=(User)session.getAttribute("loginUser"); 99 100 Mutter mutter =new Mutter(loginUser.getName(),text); 101 102 103 104 PostMutterLogic postMutterLogic=new PostMutterLogic(); 105 106 postMutterLogic.execute(mutter,mutterList); 107 108 109 application.setAttribute("mutterList", mutterList); 110 111 }else { 112 113 //エラーメッセージをリクエストスコープに保存 114 115 request.setAttribute("errorMsg", 116 117 "つぶやきが入力されていません"); 118 119 } 120 121 122 RequestDispatcher dispatcher= 123 request.getRequestDispatcher("WEB-INF/main.jsp"); 124 125 dispatcher.forward(request,response); 126 127 } 128 129 130 131 } 132 133 134

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

jspファイルにてerrorMsgをif文の外で記入してみたがnullが出力された

補足

環境>
エクリプス
Version: 2024-12 (4.34.0)
Build id: 20241128-0757

java version "23.0.2" 2025-01-21
Java(TM) SE Runtime Environment (build 23.0.2+7-58)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.2+7-58, mixed mode, sharing)

TomCat10 java21

イメージ説明

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

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

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

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

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

TakaiY

2025/02/27 01:18

> 空のフォームを送っても > if(text!=null&&text.length()!=0) 空のフォームを送ったときにtextに何が入っているか確認していますか?
meguuuu

2025/02/27 03:54

すいませんまだまだ駆け出しエンジニアでeclipseのでバックモードはあまり使ったことがなくて、起動してみましたがこれで大丈夫でしょうか フォームに空文字を入力するとtextには""が入っているように見えます
meguuuu

2025/02/27 03:54

スクリーンショットを追加しました
guest

回答1

0

ベストアンサー

空のフォームを送ったときにtextに何が入っているか

textには""が入っている

ということであれば、textはnullではないので、以下のif文でそれを検出することができません。

java

1if(text!=null&&text.length()!=0)

空のフォームでtextが ""になる動作が想定どおりであれば、この判定文が text が "" であるときにtrueになるようにすればいいでしょうし、想定通りでないのであれば、textがnullになるようにそちらを変更すればいいでしょう。

投稿2025/02/27 04:35

TakaiY

総合スコア14199

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

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

meguuuu

2025/02/27 09:07

回答ありがとうございます。ベストアンサーに選ばせていただきました。 試したところ問題が解決しました 参考書と書かれている内容が違う事になってしまいましたが if(text!=""&&text.length()!=0) とする事で上手くいきました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.32%

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

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

質問する

関連した質問