요청에 대한 응답을 브라우저로 보내주는 역할
HTML 의 <a>, 자바스크립트의 location과 비슷하다.
뭔가를 다시 클라이언트한테 보여줄 때, 뷰를 다시 보여줄 때.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Response</title>
</head>
<body>
<h2> 1. 로그인 폼</h2>
<%
String loginErr = request.getParameter("loginErr");
if(loginErr != null){
out.println("로그인 실패");
}
%>
<form action="./Responselogin.jsp" method="post">
아이디 : <input type="text" name="user_id"/><br/>
패스워드 : <input type="text" name="user_pwd"/><br/>
<input type="submit" value="로그인"/>
</form>
</body>
</html>
//Responselogin
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Responselogin</title>
</head>
<body>
<%
String id = request.getParameter("user_id");
String pwd = request.getParameter("user_pwd");
if(id.equalsIgnoreCase("must") && pwd.equals("1234")){
response.sendRedirect("ResponseWelcome.jsp");
}else {
request.getRequestDispatcher("ResponseMain.jsp?loginErr=1").forward(request, response);
}
%>
</body>
</html>
//ResponseWelcome
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>ResponseWelcome</title>
</head>
<body>
<h2>로그인 성공! </h2>
</body>
</html>
로그인 실패시

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Response</title>
</head>
<body>
<h2> 1. 로그인 폼</h2>
<%
String loginErr = request.getParameter("loginErr");
if(loginErr != null){
out.println("로그인 실패");
}
%>
<form action="./Responselogin.jsp" method="post">
아이디 : <input type="text" name="user_id"/><br/>
패스워드 : <input type="text" name="user_pwd"/><br/>
<input type="submit" value="로그인"/>
</form>
<h2>http 응답 헤더 추가하기</h2>
<form action = "./ResponseHeader.jsp" method="get">
날짜 형식 : <input type="text" name="add_date" value ="2021-10-25 09:00"><br/>
숫자 형식 : <input type="text" name="add_int" value ="8282"><br/>
문자 형식 : <input type="text" name="add_str" value ="홍길동"><br/>
<input type="submit" value ="응답 헤더 설정& 출력"><br/>
</form>
</body>
</html>
//responseHeader
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.util.Collection" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<%
//응답 헤더에 추가할 값 준비
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm");
long add_date = sd.parse(request.getParameter("add_date")).getTime();
int add_int = Integer.parseInt(request.getParameter("add_int"));
String add_str = request.getParameter("add_str");
// 응답 헤더에 값 추가
response.addDateHeader("myBirthday", add_date);
response.addIntHeader("myNumber", add_int);
response.addIntHeader("myNumber", 1004);//추가
response.addHeader("myName", add_str);
response.setHeader("myName", "안중근");//수정
%>
<head>
<title>ResponseHeader</title>
</head>
<body>
<h2>응답 헤더 정보 출력하기</h2>
<%
Collection<String> headerNames = response.getHeaderNames();
for (String hName : headerNames){
String hValue = response.getHeader(hName);
%>
<li><%= hName %> : <%= hValue %></li>
<%
}
%>
<%--끊어서 닫아도... ? 나온다 --%>
<h2>myNumber만 출력하기</h2>
<%
Collection<String> myNumber = response.getHeaders("myNumber");
for(String myNum : myNumber){
%>
<li> myNumber : <%= myNum %></li>
<%
}
%>
</body>
</html>


설정에서 매번 나오는 거 안나오도록 설정할 수 있다.
웹 앱 설계의 기본 화면 설계서 작성 참고하자
https://brunch.co.kr/@cysstory/153
플로우차트 등 중요하다
권한관리 등도 하면 좋다