package edu.kh.jsp.controller;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;@WebServlet("/login")
// web.xml에 작성하던 servlet, servlet-mapping tag 대체 annotationpublic class LoginServlet extends HttpServlet {
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //post 방식 요청 데이터 문자 인코딩 처리 req.setCharacterEncoding("UTF-8"); // parameter == inputId, inputPw String id = req.getParameter("inputId"); String pw = req.getParameter("inputPw"); System.out.println(id); System.out.println(pw); String result = null; if ( id.equals("user01") && pw.equals("pass01!")) { result = "로그인 성공"; }else { result = "로그인 실패 "; } // resq.setContentType("text/html; charset=UTF-8"); // PrintWriter 이제 안씀 // ** JSP로 접근하기 ** // // Dispactcher : 발송자, 핑료한 정보를 제공하는 자 // RequestDispatcher == 요청을 위임하는 역항릐 객체 // >> 정확히는 요청에 대한 응답화면을 만들어 // 클라이언트에게 출력하는 역할 // req.getRequestDispatcher("JSP 경로") // - HttpServletRequest 객체가 생성될 때 // 내부에 요청을 위임하느 ㄴ객체를 생성하는 방법을 포함하고 있다. // -webapp 폴더를 기준으로 파일 경로 작성 // forward : 보내다 전달하다 전송하다. // - forward : 페이지 이동이 아닌 .jsp에게 req와 resp를 전송함. // -> JSP 응답을 대신하는 것 뿐. // 결론 : 페이지이동이 아니기 때문에 주소창의 요청주소도 변하지않음 RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/loginResult.jsp/"); //req와 resp를 loginResult.jsp로 보내준다. dispatcher.forward(req, resp); }}
*JSP용 주석 : HTML요소 + JSP 전용 태그
<%@ %> : 지시자 ( 알려주거나 지시하는 속성을 기입 ) chartset = UTF-8 : 현재 문서를 해석할 때 UTF-8 인코딩을 이용해서 해석 ( 해석 방법 안내 ) pageEncoding = "UTF-8" : 현재 문서가 UTF-8 인코딩으로 작성되어 있음. ( 문서가 작성된 형식 안내 ) <% %> = 스크립틀릿(Scriptlet) : JSP에서 자바 코드를 작성할 수 있는 영역 -> JSTL 라이브러리 이용해 태그 형식 변경할거임 -> ex) JSTL <%= %> = 표현식(Expression) : JAVA코드의 값을 HTML 형식으로 출력 -> EL ( Expression Language, 표현영어)로 변경 -> ex) ${EL}