[JSP] 서블릿 기초 문법

mingsso·2024년 4월 12일

JSP

목록 보기
5/5
post-thumbnail

1️⃣ 서블릿의 주요 클래스

HttpServlet

서블릿을 만들기 위해 반드시 상속해야 할 필수 클래스

상속 구조
Servlet (인터페이스) - GenericServlet (추상클래스) - HttpServlet

  • void init()

    • 서블릿의 객체가 생성될 때 호출되는 메소드
  • void destroy()

    • 서블릿의 객체가 메모리에서 사라질 때 호출되는 메소드
  • void service(request, response)
    • 서블릿의 요청이 있을 때 호출되는 메소드
  • void doGet(request, response)
    • html에서 form의 메소드가 Get일 때 호출되는 메소드
  • void doPost(request, response)
    • html에서 form의 메소드가 Post일 때 호출되는 메소드

HttpServletRequest

클라이언트가 데이터를 입력하거나, 클라이언트의 정보에 대한 요청 값을 가지고 있는 클래스

  • String getParameter(name)

    • name에 할당된 값을 반환하며, 지정된 파라미터 값이 없으면 null 값을 반환함
  • String[] getParameterValues(name)

    • name의 모든 값을 String 배열로 반환함
  • Enumeration getParameterNames()
    • 요청에 사용된 모든 파라미터 이름을 java.util.Enumeration 타입으로 변환함
  • void setCharacterEncoding(env)
    • Post 방식으로 요청된 문자열의 character encoding을 설정함

HttpServletResponse

클라이언트가 요청한 정보를 처리한 응답 내용을 담고 있는 클래스

  • void setHeader(name, value)

    • 응답에 포함될 Header를 설정함
  • void setContentType(type)

    • 출력되는 페이지의 contentType을 설정함
  • String getCharacterEncoding()
    • 응답 페이지의 문자 인코딩 타입을 반환함
  • void sendRedirect(url)
    • 지정된 URL로 요청을 재전송함

HttpSession

클라이언트가 세션 정보를 저장하고 세션 기능을 유지하기 위해서 제공되는 클래스

  • String getId()

    • 해당 세션의 세션 ID를 반환함
  • long getCreationTime()

    • 세션의 생성된 시간을 반환함
  • long getLastAccessedTime()
    • 클라이언트 요청이 마지막으로 시도된 시간을 반환함
  • void setMaxInactiveInterval(time)
    • 세션을 유지할 시간을 초단위로 설정함
  • int getMAxInactiveInterval()
    • setMaxInactiveInterval(time)로 지정된 값을 반환함 (기본값은 30분)
  • boolean isNew()
    • 클라이언트 세션 ID를 할당하지 않은 경우 true 값을 반환함
  • void invalidate()
    • 해당 세션을 종료시킴



2️⃣ 서블릿의 라이프 사이클

  • init() : 서블릿이 처음으로 요청이 되어 객체가 생성될 때 호출되는 메소드
  • service() : 클라이언트의 요청이 있을 때마다 호출되는 메소드
  • destroy() : 서블릿 서비스의 종료 및 재시작, 서블릿 코드가 수정될 때 호출되는 메소드
  • doGet() : 클라이언트의 Get 요청이 있을 때마다 호출되는 메소드
  • doPost() : 클라이언트의 Post 요청이 있을 때마다 호출되는 메소드

@WebServlet("/ch08/exampleServlet02")
public class ExampleServlet02 extends HttpServlet {
	
    @Override
    public void init(ServletConfig config) throws ServletException { ... }
    
    @Override
    public void destory() { ... }
    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... }



3️⃣ 서블릿의 요청 방식

Get 방식

// getJsp.jsp
<form method="get" action="getServlet">
	msg : <input name="msg">
    <input type="submit" value="전송>
</form>
@WebServlet("/ch08/getServlet")
public class GetServlet extends HttpServlet {
	
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	// getJsp.jsp에서 입력한 msg값의 문자열을 리턴함
    	String msg = request.getParameter("msg");
        
        // 답하는 페이지의 ContentType과 charset을 설정함
        response.setContentType("text/html; charset=EUC-KR");	
        
        // 응답하는 페이지의 out 스트림을 만듦
        PrintWriter out = response.getWriter();
        
        // msg 값이 화면에 출력됨
        out.println("<h2>msg : "+ msg + "</h2>");
    }
}     

Post 방식

// postJsp.jsp
<form method="post" action="postServlet">
	id : <input name="id"><br/>
    pwd : <input type="password" name="pwd"><br/>
    <input type="submit" value="가입">
</form>
@WebServlet("/ch08/postServlet")
public class PostServlet extends HttpServlet {
	
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	// getJsp.jsp에서 입력한 문자열을 리턴함
    	String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        
        if (id != null && pwd != null) {
        	// 요청 객체에서 세션 리턴
        	HttpSession session = request.getSession();
            
            // 세션에 idKey라는 값으로 id값을 저장함
            session.setAttribute("idKey", id);
        }
        
        // 응답페이지는 login.jsp로 설정함 
        response.sendRedirect("login.jsp");
    }
}     
profile
🐥👩‍💻💰

0개의 댓글