package com.util;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public class AlertMsg
{
public static void alert(HttpServletResponse response,String errorMessage)
{
try
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.println("<script>alert('"+errorMessage+"');</script>");
pw.flush();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
alert는 떳는데 전부 ??? 로 뜨는 현상이 발생했다.
페이지가 load 되기전에 alert 메소드를 통해 스크립트를 그리다 보니
<%@ page contentType="text/html; charset=UTF-8"%>
이 부분보다 먼저 스크립트가 생성되어 그런거같다.
response.setContentType("text/html;charset=UTF-8");
이 구문을 통해 charset을 utf-8로 지정해주었다. 결과가 잘 나온다.
이런식으로 alert창을 변경할 수 있게 만든 사람이 있다그래서 이대로 바꿔보기로 했다.
참고 : https://sweetalert2.github.io/
나와있는대로 사용했지만 위의 문제와 같이 페이지가 로딩되기 전에 호출되서 jquery가 적용되지 않았다.
해서
package com.util;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public class AlertMsg
{
public static void alert(HttpServletResponse response,String errorMessage)
{
try
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter pw = response.getWriter();
pw.println("<script src=\"https://cdn.jsdelivr.net/npm/sweetalert2@10\"></script>");
pw.println("<script type=\"text/javascript\" src=\"http://code.jquery.com/jquery.min.js\"></script>");
//pw.println("<script>alert('"+errorMessage+"');</script>");
pw.println("<script>");
pw.println("$(document).ready(function(){");
pw.println("Swal.fire({");
pw.println("icon: 'success',");
pw.println("title: '"+errorMessage+"',");
//pw.println("text: '회원가입 됬다고',");
pw.println("}); });");
pw.println("</script>");
pw.flush();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
해서 jquery.min.js까지 넣어주었다.
그리고
이렇게 성공했다. 확실히 좀 이쁜듯? 이제 이걸 회원가입 진행후 메인페이지로 돌려보낼때, 컨트롤러에서 세션이 없을때 호출하게 만들겠다.
Request processing failed; nested exception is java.lang.IllegalStateException: 응답이 이미 커밋된 후에는, sendRedirect()를 호출할 수 없습니다.]을(를) 발생시켰습니다. 와 같은 에러가 발생했다.
에러 참고
알림을 띄울 jsp페이지를 따로 만들고 컨트롤러에서 result가 될 페이지 url을 매개변수로 넘겨 알림을 띄우고 다음페이지를 띄울수 있게 변경할 예정