헬린코린이

[Servlet & JSP] JSP 본문

Programming/Servlet & JSP

[Servlet & JSP] JSP

HCD 2022. 12. 29. 10:31

JSP란 JavaServer Pages의 약자이며

HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

JSP가 실행되면 자바 서블릿(Servlet)으로 변환되며 웹 어플리케이션 서버에서 동장되면서 필요한 기능을 수행하고

그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

 

JSP 실행 순서

1. 클라이언트가 어떤 동작을 함으로써 hello.jsp를 요청하였다.

2. JSP 컨테이너가 JSP 파일을 읽는다.

3. JSP 컨테이너가 Generete(변환) 작업을 통해 Servlet( .java ) 파일을 생성한다.

4. java 파일은 다시 .class 파일로 컴파일된다.

5. Execute(실행)을 통해 HTML 파일을 생성하여 JSP 컨테이너에게 전달한다.

6. JSP는 HTTP 프로토콜을 통해 HTML 페이지를 클라이언트에게 전달한다.

 

코드를 보겠습니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <jsp:useBean id="cb" class="test.CalcBean2"/>
<jsp:setProperty property="*" name="cb" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>실습 내가 푼것</title>
</head>
<body>
<%
   if(request.getMethod().equals("POST")){ 
      cb.login();
   }
%>
   <form method="post">
      <input type="text" name="id">
      <input type="text" name="pw">
      <button type="submit">로그인</button>
   </form>
   <hr>
   확인: <%= cb.getRes() %>
</body>
</html>

우선 action으로 넘겨주지 않고 여기에서 처리를 했다.

버튼을 누르는 순간 위에 선언한 <jsp:useBean/> 과 <jsp:setProperty/>에 의해 클래스와

값을 바로 넘겨주어서 cb 즉 CalcBean2에 있는 멤버변수에 set시켜주고 cb 의 메서드 login(); 을 실행시킨다.

아래 cb코드를 첨부하였다.

서블릿하고 비교했을때 코드가 상당히 짧아진 것을 볼 수있다. 그리고 out.println();으로 일일이 태그를 

작성 안해줘도 되서 아주 편하다.

package test;

public class CalcBean2 {
   private String id;
   private String pw;
   private String res;
   public String getId() {
      return id;
   }
   public void setId(String id) {
      this.id = id;
   }
   public String getPw() {
      return pw;
   }
   public void setPw(String pw) {
      this.pw = pw;
   }
   public String getRes() {
      return res;
   }
   public void setRes(String res) {
      this.res = res;
   }

   public void login() {

      if(!this.id.equals("timo")){ // id가 timo가 아니라면
         res="없는 아이디!\n 다시 시도해보세요";
      }
      else if(!this.pw.equals("1234")){ // pw가 1234가 아니라면
         res="비번 오류!\n 다시 시도해보세요";
      }
      else{// id,pw가 timo 1234라면
         res="안녕하세요, 티모님";
      }
   }
   public CalcBean2(){
      this.res="";
   }
}

 

Comments