LoginValidate.java
package step01.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// http://localhost/step01_basic/playdata
@WebServlet("/playdata")
public class LoginValidate extends HttpServlet {
public LoginValidate() {
System.out.println("-------생성자는 한번만 생성-------");
}
// get 요청 방식만 처리하는 메소드
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("LoginValidate doGet()");
process(request, response);
}
// post 요청 방식만 처리하는 메소드
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("LoginValidate doPost()");
process(request, response);
}
// doGet doPost 공통 로직
/*
* id /pw 값 획들 -> 검증 -> 한글 데이터 화면에 출력
* 고려사항
* 1. 입력 데이터 한글 인코딩 무시 - request
* 2. 출력시에는 한글 인코딩 처리 고려 - response
*/
protected void process2(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// client 데이터 획득
// <input type="text" name="id" value="tester">
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// 출력 인코딩 설정
response.setContentType("text/html;charset=UTF-8");
// 2byte의 데이터를 브라우저에 출력
PrintWriter out = response.getWriter();
if (id != null && id.equals("tester")) {
out.println("안녕안녕");
} else {
out.println("무효한 id임");
}
}
// step02 - web page 이동 기술
/*
* id / pw 뽑아서 검증 -> 조건에 맞는 niew 전담 servlet 지정
*/
protected void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
String id = request.getParameter("id"); // tester
String pw = request.getParameter("pw");
if (id != null && id.equals("tester")) {
System.out.println("tester 맞음");
// forward 방식으로 success라는 url mapping된 servlet으로 web page 이동
// playdata url로 요청시 web server는 해당 client만을 위한 request객체와 response객체 생성
// doGet()doPost()호출하면서 parameter로 대입
// success의 doGet()/doPost() 호출시 request객체와 response객체 새로 생성이 아닌 공유
// success의 request.getParameter("id") 반환값은? tester
// 요청 객체에 새롭게 새로운 데이터 추가 저장도 가능
// 저장 구조 - 데이터 구분이 필수 따라서 key와 value 구조로 저장
// id가 tester인 사람 이름 김이름 추가
request.setAttribute("name", "김이름"); // request.getAttribute("name")
//http://ip:port/project명/playdata -> http://ip:port/project명/success
request.getRequestDispatcher("success").forward(request, response);
} else {
// redirect 방식으로 fail이라는 url mapping된 servlet으로 web page 이동
request.setAttribute("name", "김이름"); //의미 없음 fail 실행시 새로운 요청 객체 생성 및 활용되니까
//http://ip:port/step01_basic/fail 의미 및 실행
//client에게 fail 정보 제공하면서 응답으로 마무리
//client가 사용하는 브라우저가 url을 재구성해서 client가 인식 못하는 빠른 속도로 재요청
// 각각의 servlet이 요청, 응답 수행 따라서 fail은 새로운 요청이기 때문에 요청객체, 응답객체 새로 생성
response.sendRedirect("fail");
}
}
}'코드 > JDBC' 카테고리의 다른 글
| [TOMCAT] step01.view (0) | 2022.02.08 |
|---|---|
| [TOMCAT] step01/index.html &nd login.html (0) | 2022.02.08 |