JSP와 Servlet의 협력으로 깨짐

【환경】



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

【문제】



jsp 파일을 웹에서 볼 때 깨질 수 있습니다.


대상 파일



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 파일의 정의문에는 공간을 가능한 한 넣지 않는다.

좋은 웹페이지 즐겨찾기