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

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

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

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

Q&A

1回答

1098閲覧

Javaサーブレットにおける画像の表示

betelgeuse931

総合スコア0

Java

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

0グッド

0クリップ

投稿2021/06/28 08:31

Javaのサーブレットを活用してJSP①で<input type="file">から取得してきた画像をJSP②で表示したいのですが、うまくできません。

ちなみに画像はWebContent直下にあります。

edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.List"%> <%@ page import="model.entity.AreaBean" %> <%@ page import="model.entity.MemberBean"%> <% MemberBean member = (MemberBean) request.getAttribute("member"); %> <% List<AreaBean> areaList = (List<AreaBean>) request.getAttribute("areaList"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>編集画面</title> </head> <body> <h1>編集</h1> <form action="EditCheck" method="post" enctype="multipart/form-data"> <p> 名 前 <br> <input type="text" size = "5" name="name"> <p> 髪 型 <br> <input type="radio" name="hairstyle_id" value="0" checked>0.ロング <input type="radio" name="hairstyle_id" value="1">1.セミロング <input type="radio" name="hairstyle_id" value="2">2.ミディアム <input type="radio" name="hairstyle_id" value="3">3.ショート <input type="radio" name="hairstyle_id" value="4">4.ベリーショート </p> <br> <p> 年 齢 <br> <input type="text" size="3" name="age" pattern="[1-9][0-9]*"> </p> <br> <p> 体 型 <br> <input type="radio" name="shape" value="0" checked>スレンダー <input type="radio" name="shape" value="1">0.スリム <input type="radio" name="shape" value="2">1.ノーマル <input type="radio" name="shape" value="3">2.ぽっちゃり <input type="radio" name="shape" value="4">3.マッチョ <input type="radio" name="shape" value="5">4.デブ </p> <br> <p> 地 域 <br> <select name="areaId"> <% for (AreaBean area : areaList) { %> <option value=<%=area.getAreaId()%>><%=area.getArea()%></option> <% } %> </select> </p> <br> <p> 趣 味 <br> <input type="text" size="10" name="hobby"> </p> <br> <p> 写 真 <br> <input type="file" id="photo" name="photo" accept="image/jpeg, image/png"> <button type="reset">すべてリセット</button> <button type="submit">完了</button> </form> </body> </html>

EditCheck.java

package servlet; import java.io.IOException; import java.nio.file.Paths; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import model.dao.AreaDAO; import model.dao.MemberDAO; import model.entity.AreaBean; import model.entity.MemberBean; /** * Servlet implementation class EditCheck */ @WebServlet("/EditCheck") @MultipartConfig public class EditCheck extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public EditCheck() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub request.setCharacterEncoding("UTF-8"); String url = "edit-check.jsp"; //DAOのインスタンス化 MemberDAO memberdao = new MemberDAO(); AreaDAO areadao = new AreaDAO(); //Beanのインスタンス化 MemberBean member = new MemberBean(); List<AreaBean> areaList = new ArrayList<>(); String name = request.getParameter("name"); int hairstyleId = Integer.parseInt(request.getParameter("hairstyle_id")); String age = request.getParameter("age"); String shape = request.getParameter("shape"); String hobby = request.getParameter("hobby"); int areaId = Integer.parseInt(request.getParameter("areaId")); String areaName = ""; int iage = Integer.parseInt(age); //送信したファイルを受け取る Part part = request.getPart("photo"); //ファイル名を取得 String filename = Paths.get(part.getSubmittedFileName()).getFileName().toString(); //アップロードするフォルダー String path = getServletContext().getRealPath("/img"); System.out.print(path); //書き込み part.write(path + filename); request.setAttribute("photo", filename); try{ areaList = areadao.selectArea(); request.setAttribute("areaName", areaName); areaName = areadao.selectArea(areaId); }catch (SQLException | ClassNotFoundException e) { e.getStackTrace(); } //ビーンにセット member.setName(name); member.setHairStyleId(hairstyleId); member.setAge(iage); member.setShape(shape); member.setHobby(hobby); member.setArea(areaName); request.setAttribute("member", member); RequestDispatcher rd = request.getRequestDispatcher(url); rd.forward(request, response); //doGet(request, response); } }

edit-check.jsp

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="java.util.List"%> 4<%@ page import="model.entity.MemberBean"%> 5 6<!DOCTYPE html> 7<html> 8<% 9 MemberBean member = (MemberBean) request.getAttribute("member"); 10 String filename=(String)request.getAttribute("photo"); 11%> 12 13 14<head> 15<meta charset="UTF-8"> 16<title>確認画面</title> 17</head> 18<body> 19 20<h4>以下の内容で変更します。</h4> 21 22<table> 23<tr> 24<td>名前</td> 25<td> 26<%= member.getName() %> 27</td> 28</tr> 29 30 31<tr> 32<td>髪型</td> 33<td> 34<%= member.getHairStyleId() %> 35</td> 36</tr> 37 38<tr> 39<td>年齢</td> 40<td> 41<%= member.getAge() %> 42</td> 43</tr> 44 45<tr> 46<td>体型</td> 47<td> 48<%= member.getShape() %> 49</td> 50</tr> 51 52<tr> 53<td>地域</td> 54<td> 55 56 57<%= member.getArea() %> 58 59</td> 60</tr> 61 62<tr> 63<td>趣味</td> 64<td> 65<%= member.getHobby() %> 66</td> 67</tr> 68</table> 69 70写真 71<img src="img/<%=filename %>"> 72 73 74</body> 75</html>

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

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

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

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

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

guest

回答1

0

相対パスになってるからでは。
パスを取得する場合はrequest.getContextPath()を使って構成してください。

ちなみに画像はWebContent直下にあります。

直下なのかimg配下なのかでは違うので、確実に。

投稿2021/06/28 11:23

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問