質問編集履歴

1 ソースの追加・誤字修正

shafi_bo

shafi_bo score 20

2017/05/18 15:27  投稿

JSPがsubmit送信したデータをservletで取得する方法
###前提・実現したいこと
JSPがsubmit送信したデータをservletで取得。
取得するデータは参照型クラスです。
###発生している問題・エラーメッセージ
### ソースコード  
JSP  
```  
<%@ page language="java" contentType="text/html; charset=UTF-8"  
   pageEncoding="UTF-8"%>  
<%@ page import="javax.servlet.ServletContext"%>  
<%@ page import="category.CategoryList"%>  
<%@ page import="category.Category"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Insert title here</title>  
</head>  
<body>  
   <div align="left">  
       <h1>ブログ作成</h1>  
   </div>  
   <hr>  
   <div align="center">  
 
       <form action="Master" method="post">  
 
           <div align="left">  
               <input type="text" placeholder="タイトル" name="title" size="80">  
 
               <p />  
               <%  
                   ServletContext context = this.getServletContext();  
                   CategoryList categoryList = (CategoryList) context.getAttribute("CategoryList");  
               %>  
               <div align="right">  
                   カテゴリー: <select name="category">  
                       <%  
                           for (Category category : categoryList.getList()) {  
                       %>  
                       <option value=<%=category%>><%=category.getCategoryName()%></option>  
                       <%  
                           }  
                       %>  
                   </select>  
               </div>  
 
               <textarea name="body" cols="60" rows="20"></textarea>  
           </div>  
           <div align="right">  
               <button type="submit" name="Action" value="create">作成</button>  
           </div>  
       </form>  
 
   </div>  
</body>  
</html>  
```  
JavaServlet  
```  
package controller;  
 
import java.io.IOException;  
 
import javax.servlet.RequestDispatcher;  
import javax.servlet.ServletException;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import javax.servlet.http.HttpSession;  
 
import model.User;  
 
/**  
* Servlet implementation class MasterController  
*/  
@WebServlet("/Master")  
public class MasterController extends HttpServlet {  
   private static final long serialVersionUID = 1L;  
 
   /**  
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)  
    */  
   protected void doGet(HttpServletRequest request, HttpServletResponse response)  
           throws ServletException, IOException {  
 
       // 直接起動防止  
       RequestDispatcher rd = request.getRequestDispatcher("top.jsp");  
       rd.forward(request, response);  
 
   }  
 
   /**  
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)  
    */  
   protected void doPost(HttpServletRequest request, HttpServletResponse response)  
           throws ServletException, IOException {  
 
       // エンコード  
       request.setCharacterEncoding("UTF-8");  
       response.setCharacterEncoding("UTF-8");  
 
       // 処理行動種別  
       String action = null;  
 
       // セッション取得  
       HttpSession session = request.getSession();  
 
               // 事前ログインユーザ定義  
       if (session.getAttribute("User") == null) {  
           User user = new User("admin", "suzukitarou", "suzukin");  
           session.setAttribute("User", user);  
       }  
 
       action = request.getParameter("Action"); // form送信  
       String url = null;  
 
       if (action == null) {  
           action = "null";  
       }  
 
       // 行動別処理  
       switch (action) {  
 
           /*執筆系*/  
 
           case "write":  
 
               if (session.getAttribute("User") != null) {  
                   url = "write.jsp";  
               } else {  
                   url = "login.jsp";  
               }  
               break;  
 
           //           case "login":   // ログイン処理  
           //               url = "Login";   // ログインコントローラ  
           //               String userId = request.getParameter("userid");   // ID取得  
           //               String password = request.getParameter("password");   // パスワード取得  
           //               request.setAttribute("USERID", userId);   // ID送信  
           //               request.setAttribute("PASSWORD", password);   // パスワード送信  
           //               request.setAttribute("ACTION","login");   // 行動送信  
           //               break;  
 
           //           case "agree":   // ログイン完了処理  
           //               url = "successlogin.jsp";  
           //               break;  
 
           //           case "incongruous":   // ログイン失敗処理  
 
           //               request.setAttribute("REASON", "incongruous");  
           //  
           //               url = "failurelogin.jsp";  
           //               break;  
 
           //           case "prev": // 戻る  
           //               url = "top.jsp";  
           //               break;  
           //           case "goLogin":   // ログイン画面に移動  
           //               url = "login.jsp";  
           //               break;  
 
           case "create":  
// タイトル取得  
               String title = request.getParameter("title");  
// 本文取得  
               String body = request.getParameter("body");  
// カテゴリー取得  
           //   Category category = request.getParameterValues("Category");  
               //Category category = (Category)request.getAttribute("category");  
 
// データの送信準備  
               request.setAttribute("Title", title);  
               request.setAttribute("Body", body);  
               request.setAttribute("Category", category);  
               url = "valuetest.jsp";  
               break;  
 
           default: // 予想とした処理と違うものが入ってきた場合  
               url = "top.jsp";  
               break;  
       }  
 
       // 画面遷移  
       RequestDispatcher rd = request.getRequestDispatcher(url);  
       rd.forward(request, response);  
 
   }  
 
}  
```  
 
###試したこと
getParameter()では文字列型しか取れず、
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
参照型クラスのデータを取得するにはどうすればよいでしょうか?
  • Java

    21917 questions

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

  • JSP

    1502 questions

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

  • servlet

    763 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る