2013년 8월 8일 목요일

[ORACLEJAVA커뮤니티,ORACLEJAVANEW.KR]사용자가 로그인 했는지를 확인하는 커스텀태그(cart.jsp에서 사용), 자바교육

사용자가 로그인 했는지를 확인하는 커스텀태그(cart.jsp에서 사용) 예제입니다. 참고하세요~~~~~


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  




 이번에는 장바구니와는 별개 이지만 cart.jsp에서 사용되었던... 사용자가 로그인을 했는지를 확인하는 사용자 정의 태그에 대한 소개 입니다.


cart.jsp의 상단에서 사용되었던 다음부분이죠^^..

음 ...

refer라는 속성은 로그인을 한 후 다시 돌아올 URL을 기술한겁니다.

<%@ taglib uri="/WEB-INF/login_tld/app.tld" prefix="loginChk" %>

<!-------------------------------------------------------->
<!-- 로그인이 되어 있는지 확인 (로그인 해야 볼수 있는 페이) -->
<!-------------------------------------------------------->
<loginChk:IsLogin refer="/yfarm/goods/cart.jsp"/>


1. taglib을 위한 tld 파일(app.tld)

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE taglib  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
  <tlibversion>1.0</tlibversion>
  <jspversion>1.1</jspversion>
  <shortname>Application Tag Library</shortname>
  <uri>http://jakarta.apache.org/taglibs/struts-example-1.0</uri>
  <info>
    Example Application.
  </info>
  <tag>
    <name>IsLogin</name>
    <tagclass>login.IsLogin</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
          로그인 체크를 위한 커스텀 태그 용 TLD 파일
    </info>
    <attribute>
      <name>name</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>page</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>     
    </attribute>
    <attribute>
      <name>refer</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>     
    </attribute>
  </tag>
</taglib>



2. 다음은 로그인을 했는지를 검사하는 IsLogin.java 입니다.

package login;

import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import yfarm.Constants;


public final class IsLogin extends TagSupport {
        private String name = yfarm.Constants.USER_KEY;
        private String page = "/index.jsp";
        private String refer = null;
       
        public String getRefer() {
            return refer;
        }
       
        public void setRefer(String refer) {
            this.refer = refer;
        }
       
        public String getName() {
                return (this.name);
        } 

        public void setName(String name) {
                this.name = name;
        }

        public String getPage() {
                return (this.page);
        }

        public void setPage(String page) {
                this.page = page;
        }

        public int doStartTag() throws JspException {
                return (SKIP_BODY);
        }

        public int doEndTag() throws JspException {
            // Is there a valid user logged on?
            boolean isLogin = false;
            HttpSession session = pageContext.getSession();
            if ((session != null) && (session.getAttribute(name) != null)) {
                isLogin = true;           
            }
 

            // Forward control based on the results
            if (isLogin)
                return (EVAL_PAGE);  //JSP 페이지의 다음을 수행
            else {
                try {
                    pageContext.getOut().println("<script>");
                    pageContext.getOut().println("alert('로그인을 하셔야 합니다.');");
                    pageContext.getOut().println("location.href='/yfarm/main/login.jsp?uri=" + refer + "'");
                    pageContext.getOut().println("</script>");
                   
                    session.invalidate();
                   
                    //pageContext.forward(page);
                } catch (Exception e) {
                    throw new JspException(e.toString());
                }
                return (SKIP_PAGE);  //JSP 페이지의 다음을 스킵
            }
        }

        /**
        * Release any acquired resources.
        */
        public void release() {
            super.release();
            this.name = Constants.USER_KEY;
            this.page = "/index.jsp";
        }
}

댓글 없음:

댓글 쓰기