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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

982閲覧

「Spring」java テキストエリア入力値取得

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2019/02/12 07:38

編集2019/02/12 08:44

現在Spring4系 java 10を使用してwebアプリを作成中です。 入力面での質問です。csvファイルから出力表示はできています。

そこで困っている点があります。(2画面構成でホーム画面と入力画面があります)
下記は期待する動作の参考画像になります。入力画面にて下記画像のように入力し、送信するとホーム画面(現在はローカルファイルに保存)に表示されるというものです。
イメージ説明
イメージ説明

JSPにて下記コードにてコード側からファイルに追加書き込みができるところまでは確認できました。
JSPに書き込まず別javaクラスでに記載して使用できればいいのですがうまくいきませんでした・・・。

<% File file = new File("C:\Users\test.csv"); FileWriter filewriter = new FileWriter(file, true); filewriter.write("確認"); filewriter.write("追記確認"); filewriter.close(); %>

またこちらのURLにてテキストエリアに入力した値を取得できたとあり、試してみたのですがどうもアノテーション?の部分がエラーがでて理由がまだわからない状態です。 
検索してみた結果バージョンが古い等が見られましたが確認してみた結果そんなことはなかったです。
アノテーションのエラーになるのは下記です

@WebServlet("/FormServlet")
import javax.servlet.annotation.WebServlet;

何故でしょう・・・・ エラーにWebServletクラスを作れ!のようにでてきたので作ったりしてエラーは改善されましたが処理としては改善しませんでした。

今わたしの解決方法案としてはformを使用してデータの受け渡しをしようとしています。難航中です(あっているかはわかりませんが・・・)

form検討中のコード(果たしてform中にjavascriptを入れれるのか・・・・)
現在は送信ボタンを押下するとhome画面へ遷移する動きをしています。ここをテキストエリアに入れた値を取得してホームに表示させたいです。

<form name="myform" onsubmit="return checkText()"> <input type="text" value="送信" onclick="checkText()"/> <script> function checkText() { document.myform.action = "/home"; } </script> </form>

アドバイス、参考URL等でも良いのでご教授ください。宜しくお願いします。

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

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

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

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

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

wwbQzhMkhhgEmhU

2019/02/12 19:48

多分根本的なアプローチが間違っているような気がします。 ブラウザから2つウィンドウを開いているのでしょうか? その開き方によっては2つのWindowはJavaScriptでやり取りが可能ではあります。 しかし、一方のウィンドウからサーバーを経由して別のウィンドウを書き換えるには、サーバー側からのプッシュ通知のようなものが必要になります。どちらもやや難しく、一般的でもないので、現状の迷走ぶりから推測すると、やめておいたほうがいいと思います。もっと簡単な単一ウィンドウのWebアプリケーションから始めましょう。最近のUIでは複数のウィンドウを使うものはあまりないですしね。 単一ウィンドウのWebアプリケーションにした場合、お使いのJSPなどを利用して毎回全画面を書き換える方法と、JavaScriptとAjaxをメインにした部分的に画面を書き換える方法の2択になります。恐らく、毎回全画面を書き換える方法の方が現状の仕組みに近いので、そちらがオススメです。
退会済みユーザー

退会済みユーザー

2019/02/13 00:44

ブラウザから1つのウィンドウを開きボタン押下によって1つのウィンドウで画面切り替えが行うようになっています。 毎回、全画面を書き換える方法を検索して考えてみようと思います。ありがとうございます! javaで作りたいと思っているので調べて動きを考えてみます。
退会済みユーザー

退会済みユーザー

2019/02/13 01:17

実現したいことは入力画面でテキストエリアに値を入力して送信を押下すると値がCSVファイルに追加書き込みされるということです。 これであってもいまの状態では実現は難しいでしょうか? 頭が迷走しております・・・。
wwbQzhMkhhgEmhU

2019/02/13 01:32

はい、正直に言って難しいと思います。まずは一旦やりたいことを諦めてください。 そして、Springを使うなら、その入門的なチュートリアルをこなしてください。 そうやって出来ることを少しずつ増やしていって、本当に実現できそうになってからトライしてみてはどうでしょう?まずはフォーム送信が出来るようになってからですね。 フォーム送信からやるのではなくて、そこまでの地道な作業を全てやってからです。
退会済みユーザー

退会済みユーザー

2019/02/13 01:40

承知しました。入門的チュートリアルをネットで探してみます。 ありがとうございました
guest

回答1

0

ベストアンサー

質問されている内容から察するに、Spring Frameworkは無関係で、サーブレットとJSPで実現できる内容です。

CSVファイルから読み込みの部分はできているとのことなので、あとはサーブレットで送信された内容を受けて、CSVに保存する処理を用意するだけです。

例えば送信側の画面(home.jsp)が、

html

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" isELIgnored="false"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>CSVへ保存する画面</title> 8</head> 9<body> 10<form action="FormServlet" method="POST"> 11 <input type="text" name="sampleText"> 12 <input type="submit" value="送信する"> 13</form> 14</body> 15</html>

だとした場合、このsampleTextを受け取るサーブレットは以下のようになるでしょう。

java

1import java.io.File; 2import java.io.FileWriter; 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11/** 12 * Servlet implementation class FormServlet 13 */ 14@WebServlet("/FormServlet") 15public class FormServlet extends HttpServlet { 16 17 /** 18 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 19 */ 20 protected void doPost(HttpServletRequest request, HttpServletResponse response) 21 throws ServletException, IOException { 22 23 String sampleText = request.getParameter("sampleText"); 24 25 writeText(sampleText); 26 27 request.getRequestDispatcher("home.jsp").forward(request, response); 28 } 29 30 private void writeText(String text) throws ServletException { 31 File file = new File("C:\Users\test.csv"); 32 33 try (FileWriter filewriter = new FileWriter(file, true)) { 34 filewriter.write(text); 35 filewriter.close(); 36 } catch (IOException e) { 37 throw new ServletException(e); 38 } 39 } 40}

CSVから読み込む処理に合わせて、保存処理の内容を適宜変えていただけばよいかと思います。

CSVから読み込んだ結果をJSPに表示する処理はまた別途用意されているようなので、これを合わせても良いでしょう。

投稿2019/02/14 09:51

A-pZ

総合スコア12011

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

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

退会済みユーザー

退会済みユーザー

2019/02/15 07:37

ありがとうございます。@WebServlet("/FormServlet") こちらのアノテーションがエラーで使用できないのですが思い当たる解決策はあるでしょうか?現在springレガシープロジェクトからspringMVCプロジェクトの順番でプロジェクトを作成しました。こちらではエラーで使用できない状態です。 googleで検索した結果、動的webプロジェクトであればエラーがでず使用することができました。 しかし現在は動的webプロジェクトに追加したいのではないのでエラーにて解決できません。 @WebServlet("/FormServlet") こちらのアノテーションのエラー改善、もしくは他の手段はないでしょうか? springMVCレガシープロジェクトから動的webプロジェクトへプロパティから変更を試みましたが改善が見られませんでした。(正しく動的webプロジェクトに変更されている確信はありませんが・・) 実行環境はSpring4.3系 java 10です。
A-pZ

2019/02/16 04:11

動的Webプロジェクトを指定したときのサーブレットバージョンが3.0以降ならば @WebServlet は利用できます。SpringMVCを利用しているのでしたら、むしろ @WebServletをつけたサーブレットを作る理由はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問