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

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

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

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

servlet

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

Q&A

解決済

2回答

1833閲覧

すぐに閉じられているコンストラクタ?が何をしているのか分からない。

R.lawliet

総合スコア41

Java

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

servlet

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

0グッド

0クリップ

投稿2015/06/09 04:46

###前提・実現したいこと
サンプルソースを参考に学びながら類似の登録画面を作っています。

###疑問点
最初の方で登場する、
public PlanBean(){} がすぐに閉じられてしまっているのですが、
これが何の役割を果たしているのかが理解できません。

どうかよろしくお願いします。
###ソースコード

Bean

lang

1package bean; 2 3/* クライアントの入力情報を管理する */ 4public class PlanBean { 5 6 private String date_; // 日付 7 private String time_; // 開始時間-終了時間 8 private String contents_; // 内容 9 private String category_; // カテゴリ 10 11 public PlanBean(){}//★★★これ。 12 13 /** getter */ 14 public String getDate() { 15 return date_; 16 } 17 public String getTime() { 18 return time_; 19 } 20 public String getContents() { 21 return contents_; 22 } 23 public String getCategory() { 24 return category_; 25 } 26 27 /** setter */ 28 public void setDate(String date) { 29 this.date_ = date; 30 } 31 public void setTime(String time) { 32 this.time_ = time; 33 } 34 public void setContents(String contents) { 35 this.contents_ = contents; 36 } 37 public void setCategory(String category) { 38 this.category_ = category; 39 } 40} 41

Servlet

lang

1package servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5import java.util.List; 6import javax.servlet.ServletException; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10import javax.servlet.http.HttpSession; 11import bean.PlanBean; 12 13public class Controller extends HttpServlet { 14 private static final long serialVersionUID = 1L; 15 16 @SuppressWarnings("unchecked") 17 public void service(HttpServletRequest request, HttpServletResponse response) 18 throws ServletException, IOException { 19 20 try{ 21 //リクエストの文字コードをセットする。 22 request.setCharacterEncoding( "Shift_JIS" ); 23 24 /* クライアントから送信された入力情報を取得する */ 25 String sMonth = (String)request.getParameter("month"); 26 String sDay = (String)request.getParameter("day"); 27 String sStart = (String)request.getParameter("startTime"); 28 String sEnd = (String)request.getParameter("endTime"); 29 String sContents = (String)request.getParameter("contents"); 30 String sCategory = (String)request.getParameter("category"); 31 32 /* クライアントの入力情報を加工しPlanBeanにセットする */ 33 PlanBean pb = new PlanBean(); 34 pb.setDate( sMonth + "/" + sDay ); 35 pb.setTime( sStart + "-" + sEnd ); 36 pb.setContents( sContents ); 37 pb.setCategory( sCategory ); 38 /* requestスコープへクライアントの入力情報をセットする */ 39 request.setAttribute("PLANBEAN",pb); 40 41 /* クライアントの入力情報をsessionスコープへ追加する 42 * sessionスコープがnullであれば 43 * 初回リクエストと判断しインスタンスを生成する 44 */ 45 HttpSession session = request.getSession(); 46 List<PlanBean> list = 47 (ArrayList<PlanBean>)session.getAttribute("PLANBEAN_LIST"); 48 if( list==null ) list = new ArrayList<PlanBean>(); 49 list.add(pb); 50 51 /* sessionスコープへクライアントの入力情報履歴をセットする */ 52 session.setAttribute("PLANBEAN_LIST",list); 53 54 }finally{ 55 /* jspへ転送する */ 56 response.setContentType("text/html; charset=Shift_JIS"); 57 request.getRequestDispatcher("/jsp/output.jsp").forward(request, response); 58 } 59 } 60} 61

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

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

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

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

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

guest

回答2

0

Javaでは言語構文上、何もコンストラクタを用意しなくても、この例での空のコンストラクタ相当のものが自動生成されるので、書かなくても問題はありません(参考)。

ただし、JavaBeansとして使うには「引数なしのpublicコンストラクタ」が必須なので、それを明示する、あるいは「将来、引数ありのコンストラクタを増設した際に、引数なしのコンストラクタが自動生成されなくなるので、それに備える」というような理由で、書いておいても問題ありません。

投稿2015/06/09 04:55

maisumakun

総合スコア145183

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

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

R.lawliet

2015/06/09 05:10

どうやら今まで自動生成されるコンストラクタに助けられていた様で、 今日になって初めてこの疑問点に直面してしまった様です。 参考URLまでありがとうございます。 理解が深まりました。
guest

0

ベストアンサー

javaはあまり詳しくないのですが

servletで、「クライアントの入力情報を加工しPlanBeanにセットする」処理があるので、特に何もしてないと思います。
#コンストラクタの引数で渡してもいいとも思いますが・・・

投稿2015/06/09 04:54

編集2015/06/09 04:54
cateye

総合スコア6851

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

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

R.lawliet

2015/06/09 05:11

参考に頂いたURLがとてもわかりやすかったです。 ありがとうございます。 今日まで自動生成に知らずして頼っていた事を知りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問