본문 바로가기
개발참고

[JSP&Servlet] JSP 내장객체, 액션, 컴포넌트

by 라인 :D 2020. 5. 19.

[JSP&Servlet] JSP 내장객체, 액션, 컴포넌트 


> pageContext 관련 메서드

getPage()

이 페이지에 대한 서블릿인스턴스, page 내장 객체를 반환한다

getRequest()

request 내장 객체를 반환한다

getResponse()

response 내장 객체를 반환한다

getOut()

Out 내장 객체를 반환한다

getSession()

Session 내장 객체를 반환한다

getServletConfig()

ServletConfig 내장 객체를 반환한다

getServletContext()

ServletContext내장 객체를 반환한다

getException()

Exception 내장 객체를 반환한다

forward(path)

상대 URL 패스에 해당하는 자원으로 요청을 forward 한다.

Include(path)

상대 URL 패스에 해당하는 자원을 수행시키고 그 결과를 include 한다.

 

> JSP태그

1.     스트립트

<%     %>

<%=   %>       내장객체

=====================

<%!    %>

<%@  %>

 

2.     XML

·        표준 액션 태그 :  표준, 기본 XML태그

·        커스텀 태그 : 개발자가 만드는 태그

 

> Include액션

항목

 include 지시자        

 include 액션

구문

<%@ include file=.%>

<jsp:include page=../>

경로

현재 jsp 파일 상대 경로

현재 jsp 페이지 상대 경로

대상

정적

정적 또는 동적

설명

대상이 컨테이너에 의해 파싱

대상이 컨테이너에 의해 파싱되지 않음, 수행결과가 포함됨

수행

변환시점

요청처리 시점

 

 

 

> HttpSession  로그인/로그아웃 처리과정

1.    ID PW를 입력 받음

2.    Parameter 추출

3.    유효성 체크  ==> fail ==> 입력페이지로 돌려보냄

4.    DB data와 비교 ==>  fail ==> 입력페이지로 돌려보냄

5.    로그인 상태 여부 판단 ==> 로그인중 ==> 로그인상태 메시지 출력

6.    로그인 처리

·        HttpSession data 등록

o   setAttribute(name,value)

7.    로그인상태 여부 판단 ==> 로그아웃중 ==> 로그인되어 있지 않음 메세지출력

8.    로그아웃 처리

·        HttpSession data 삭제

o   removeAttribute(name)

·        HttpSession 삭제

o   invalidate()

 

> 사용자 인증 /인증해제 예제

// 파일명 : MemberAuthServlet.java

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.sql.*;

 

public class MemberAuthServlet extends HttpServlet {

   public void doPost (HttpServletRequest req, HttpServletResponse res)

        throws ServletException, IOException {

        Connection conn = null;

        res.setContentType("text/html; charset=euc-kr");

        PrintWriter out = res.getWriter();

        String id =req.getParameter("id");

        String passwd = req.getParameter("passwd");

        try {

                Class.forName("oracle.jdbc.driver.OracleDriver");

                conn = DriverManager.getConnection

                ("jdbc:oracle:thin:@70.12.220.31:1521:ora9","ora01","ora01");

                Statement stmt = conn.createStatement();

                String selectquery = "select id, passwd from member where id = '"+id+"'";

                ResultSet rs = stmt.executeQuery(selectquery);

         if(rs.next()) {

            if(rs.getString(2).trim().equals(passwd)) {

               if(session_set(req,res,id))

                  out.print("<H4>회원 인증이  완료되었습니다 !!</H4>");

                     else

                  out.print("<H4>이미 회원 인증을 하셨군요!!</H4>");            

                   } else

               out.print("<H4>패스워드가 틀립니다.!!<BR>"+

                                          "회원 인증 절차를 다시 수행하여 주십시오.....</H4>");

         } else {

                  out.print("<H4>입력하신 계정이 존재하지 않습니다!!</H4>");

         }

            } catch (ClassNotFoundException e1) {

               out.print("<H4>시스템 장애로 처리가 불가능합니다.</H4>");              

               System.out.println("드라이버 로딩 오류 발생 : " + e1);           

            } catch (SQLException e2) {

               out.print("<H4>시스템 장애로 처리가 불가능합니다.</H4>");              

               System.out.println("DB 연동 오류 발생 : " + e2);

            } finally {

               out.close();

               try {

            if (conn != null)

               conn.close();

         } catch (Exception e) {

            System.out.println("DB 접속 해제 오류 발생 :"+e);

         }           

      }

   }

   public boolean session_set(HttpServletRequest req,  HttpServletResponse

                           res, String id) throws ServletException, IOException {

HttpSession session = req.getSession(true);

 

            if (session.isNew() || session.getAttribute("memberid") ==null){

                    session.setAttribute("memberid",id);

       return true;

            } else {

                return false;

             }

   }

 

   public void doGet (HttpServletRequest req, HttpServletResponse res)

                throws ServletException, IOException {

             res.setContentType("text/html; charset=EUC-KR");

      PrintWriter out= res.getWriter();

              HttpSession session = req.getSession(false);

            if (session !=null && session.getAttribute("memberid") !=null ) {

                   session.removeAttribute("memberid");

         out.print("<H4>인증 상태가 해제되었습니다!!</H4>");

      } else {

         out.print("<H4>인증을 수행하지 않으셨네요!!</H4>");

      }

      out.close();

   }

}

 

<!-- 파일명 : authmain.html -->

<HTML>

<HEAD>

<TITLE>회원 인증 처리</TITLE>

</HEAD>

<FRAMESET cols="30%,70%" >

<FRAME src=authmenu.html>

<FRAME name=right src=about:blank>

</FRAMESET>

</HTML>

<!-- 파일명 : authinsert.html -->

<HTML>

<HEAD>

<TITLE>회원 인증</TITLE>

</HEAD>

<BODY>

<H1 style="background-color:yellow"> 회원 인증 </H1><HR>

<P style="border-style:double;border-color:green">

계정과  패스워드를 입력하여 주십시오 </p>

<FORM action=/edu/servlet/MemberAuthServlet method=post>

    : <INPUT type=text name=id> <br>

패스워드 : <INPUT type=password name=passwd> <br>

<INPUT type=submit value=인증>

<INPUT type=reset value=재작성>

</FORM>

</BODY>

</HTML>

<!-- 파일명 : authmenu.html -->

<HTML>

<HEAD>

<TITLE>회원 인증 처리</TITLE>

</HEAD>

<BODY>

<style type="text/css">

a {

           cursor:crosshair;

}

</style>

<A href=authinsert.html target=right>회원 인증</A><BR>

<A href=/edu/servlet/MemberAuthServlet target=right>인증 해제</A><BR>

</BODY>

</HTML>

 

 

 

<결과>



<인증완료>



<인증해제> - 정상적인 인증해제



<인증해제 - 인증하지 않은경우>


<비밀번호오류>


<계정없음>