JSPとServletの連携で文字化け


【環境】

OS:Windows10
Eclipse:pleiades-4.8.0-java-win-32bit_20180923

【問題】

jspファイルをWebで見たときに文字化けしてしまう

対象ファイル

WelcomeServlet.java
package study.servlet;

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;

/*
 * クライアントから送信されるリクエストパラメーター"userName"と"password"を受信し、
 * 表示を行うServlet
 */
@WebServlet(name = "WelcomeServlet", urlPatterns = "/welcome")

public class WelcomeServlet extends HttpServlet {

    /**
     * GETメソッドを受信する
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //リクエストパラメータの文字エンコーディングを指定
        request.setCharacterEncoding("utf-8");

        //リクエストパラメータ"userName"の値を取得
        String userName = request.getParameter("userName");

        //userNameを"userName"という名前でrequestスコープに格納
        request.setAttribute("userName", userName);

        //welcome.jspへのforword処理
        RequestDispatcher rd = request.getRequestDispatcher("/welcome.jsp");
        rd.forward(request, response);
    }
}
input.jsp
<%@ page contentType = "text/html; charset = utf-8" %>

<!DOCTYPE html>
<html>
<head>
    <title>送信フォーム</title>
</head>
<body>
    <form action="${ pageContext.request.contextPath }/welcome " method="post">
        お名前は?<input type="text" name="userName" size="30"><br>
        <input type="submit" value="送信">
    </form>
</body>
</html>
welcome.jsp
<%@ page contentType = "text/html ; charser = utf-8" %>

<!DOCTYPE html>
<html>
<head>
    <title>ようこそ!</title>
</head>
<body>
    <h3>ようこそ!${ userName } さん!</h3>
</body>
</html>

【考えられる原因】

1.文字エンコーディングの設定をミスっている

【対処】

1.各jspファイルの定義部分の=前後にある半角スペースを削除

input.jsp
<%@ page contentType="text/html ; charset=utf-8" %>
welcome.jsp
<%@ page contentType="text/html ; charser=utf-8" %>

【原因と対策】

JSPファイルの定義文にはスペースをできる限り入れない。