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

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

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

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

Java

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

0回答

1458閲覧

Java フォワード先のJSPファイルで文字化け

k_rt

総合スコア0

JSP

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

Java

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

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2020/05/04 08:39

前提・実現したいこと

Javaで身長、体重を入力してBMIを計算するWEBアプリを作っています。
フォワード先のjspファイルで文字化けが発生しました。

(ツール)
IDE:eclips
サーブレットコンテナ:tomcat

発生している問題・エラーメッセージ

フォワード先のHelthCheckResult.jspで文字化けが発生しました。
エンコードの問題かと思いますが、どうしても分かりません。

helthCheck.jspでformから身長、体重を入力し、
サーブレットであるHelthCheck.javaに値をpostしています。
イメージ説明
HelthCheck.javaの役割
・パラメータ取得
・BMIの計算
・体型の判定
・リクエストスコープにインスタンスを保存(Helth.java)
・フォワード先の指定(helthCheckResult.jsp)

helthCheckResult.jspでリクストスコープからインスタンスを取得し、表示。
下のように文字が化ける
イメージ説明

該当のソースコード

]

ソースコード (helthCheck.jsp) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>健康診断</title> </head> <body> <h1>健康診断</h1> <form action="./HelthCheck" method="post" > 身長:<input type="text" name="height" size="40">(cm)<br> 体重:<input type="text" name="weight" size="40">(kg)<br> <input type="submit" value="実行"><br> </form> </body> </html>
(helthCheckResult.jsp) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%//JSPファイルでimport %> <%@ page import="model.Helth" %> <% //リクエストスコープからインスタンスを取得 Helth helth = (Helth)request.getAttribute("helth"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>健康診断結果</title> </head> <body> <h1>健康診断結果</h1> <p>身長: <%=helth.getHeight()%></p> <p>体重: <%=helth.getWeight()%></p> <p>BMI: <%=helth.getBMI()%></p> <p>体型: <%=helth.getFigure() %></p> <a href="http://localhost:8080/example/helthCheck.jsp">戻る</a> </body> </html>
(HelthCheck.java) protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); //リクエストパラメータの文字コードを指定 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html charset=UTF-8"); //リクエストパラメータを取得 //パラメータは文字列じゃないと受け取れない String height = request.getParameter("height"); String weight = request.getParameter("weight"); //リクエストスコープに保存するインスタンスを生成 Helth helth = new Helth(); //double型に変換し、インスタンスフィールドにセット helth.setHeight(Double.parseDouble(height)); helth.setWeight(Double.parseDouble(weight)); //HelthCheckLogicインスタンスを生成 HelthCheckLogic helthCheckLogic = new HelthCheckLogic(); //HelthCheckLogicからBMICalculation()メソッドを取得 //BMIの計算 helthCheckLogic.BMICalculation(helth); //HelthCheckLogicからfigureJudge()メソッドを取得 //体型の判定 helthCheckLogic.figureJudge(helth); //リクエストスコープにインスタンスを保存 //request.setAttribute("属性名", "インスタンス"); request.setAttribute("helth", helth); //フォワード先を指定 RequestDispatcher dispatcher = request.getRequestDispatcher("./helthCheckResult.jsp"); dispatcher.forward(request,response); } }
(Helth.java) package model; //java-beansを読み込み import java.io.Serializable; public class Helth implements Serializable{ //JavaBeansルール //フィールドはカプセル化を行う private double height, weight, BMI; private String figure; public double getWeight() {return weight;} public void setWeight(double weight) {this.weight = weight;} public double getHeight() {return height;} public void setHeight(double height) {this.height = height;} public double getBMI() {return BMI;} public void setBMI(double BMI) {this.BMI = BMI;} public String getFigure() {return figure;} public void setFigure(String figure) {this.figure = figure;} }

試したこと

doPostメソッドに追加
request.setCharacterEncoding("UTF-8");

サーバーの再起動

補足情報(FW/ツールのバージョンなど)

tomcat9.0.34.0
初学者で言葉が足らぬ点や分かりにくい部分があるかと思います。
申し訳ありませんがよろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/05/04 09:11 編集

jsp に以下を追加 <%@page pageEncoding="cp932" %> でやるとか
KoichiSugiyama

2020/05/09 11:47

まさかと思いますが、念のためにEclipseでJSPファイルを表示させた際に、右下にある文字コード表示がどうなっているか確認してください。ちゃんと「UTF-8」になっていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問