[ EL이란? ]

:: 표현식, 액션태그를 대신해서 값을 표현하는 언어

:: 예를들면 <%= 값 %> -> ${ 값 }

:: 연산자를 ${} 내에 사용 가능


[ EL 연산자 ]


- 산술

:: +, -, *, /, %


- 관계형

:: --, !=, <, >, <=, >= 


- 조건

:: a? b:c


- 논리

:: &&, ||


[ 액션태그로 사용 ]


<jsp:getProperty name = "member"  property="name"/>

위의 태그를 EL 액션태그로 바꾸면

${member.name}


[ 내장 객체 ]

- pageScope
:: page객체를 참조하는 객체

- requestScope
:: request객체를 참조하는 객체

- sessionScope
:: session객체를 참조하는 객체

- applicationScope
:: application객체를 참조하는 객체

- param
:: 요청 파라미터를 참조하는 객체
:: ${param.id} or ${param["id"]} 두개의 사용법이 있음.

- paramValues
:: 요청 파라미터(배열)를 참조하는 객체

- initParam
:: 초기화 파라미터를 참조하는 객체
:: web.xml에 context-param으로 만든 초기화 파라미터를 참조할 수 있다.

- cookie
:: cookie객체를 참조하는 객체


 


'프로그래밍 > JSP' 카테고리의 다른 글

MVC패턴  (0) 2019.04.11
FrontController 패턴 & Command 패턴  (0) 2019.04.11
파일 업로드  (0) 2019.03.17
커넥션 풀  (0) 2019.03.13
DAO/DTO/PreparedStatement  (0) 2019.03.13

[ 라이브러리 설치 ]

:: 관련 라이브러리 jar파일을 다운로드 받아야함

1) http://www.servlets.com -> com.oreilly.servlet -> 맨 하단 cos-26Dec2008.zip 다운로드 

2) 압축풀기하면 cos.jar파일이 lib폴더에 존재

3) WEB-INF 폴더의 lib폴더 내부에 cos.jar파일을 붙여넣기한 후 build해줌


[ 파일 업로드 ]

:: form 태그에 enctype을 추가해주고 input type도 file로 지정.


<form action="file.jsp" method="post" enctype="multipart/form-data">
        파일: <input type="file" name="file" />
        <input type="submit" value="File Upload" />
    </form>




:: multipart/form-data를 받을 때에는 MultipartRequest객체로 받아야합니다.

:: 중복된 이름이 생기면 자동으로 이름이 변경되게 DefaultFileRenamePolicy()메서드를 호출

<%     String path = request.getRealPath("fileFolder");
    int size = 1024 * 1024 * 10// 10M
    String file="";
    String oriFile=""// 이름이 변경되기 전의 실제 파일 이름
    
    try {
            MultipartRequest multi = new MultipartRequest(request,path,size,"UTF-8"new DefaultFileRenamePolicy());
            Enumeration files = multi.getFileNames();
            String str = (String)files.nextElement();
            
            file = multi.getFilesystemName(str);
            oriFile = multi.getOriginalFileName(str);
        
    }catch(Exception e){
        e.printStackTrace();
        
    }
%>






[ 업로드 경로 ]

:: 이클립스에 따로 폴더를 생성해서 저장하게 함

:: 실제 저장되는 경로는 workspace -> .metadata -> .plugins -> org.eclipse.wst.server.core -> tmp0 -> wtpwebapps -> 프로젝트명 -> 폴더명에 저장됨



'프로그래밍 > JSP' 카테고리의 다른 글

FrontController 패턴 & Command 패턴  (0) 2019.04.11
EL(Expression Language)  (0) 2019.03.17
커넥션 풀  (0) 2019.03.13
DAO/DTO/PreparedStatement  (0) 2019.03.13
JDBC  (0) 2019.03.07

[ 커넥션 풀(DBCP) ]

:: 클라이언트에서 다수의 요청이 발생할 경우 데이터베이스에 부하가 발생하게 되기 위한 문제를 

  해결하기 위한 기법

:: 요청마다 커넥션을 생성하기 때문에 부하발생. 때문에 미리 커넥션을 만들어 놓고 사용하게 함

:: JNDI를 이용하여 커넥션 풀 기법을 이용.

:: commons-dbcp2-2.1.1.jar , commons-pool2-2.4.2.jar 추가 또는 tomcat 버전 6부터 

  설치경로의 lib폴더 내부에 tomcat-dbcp.jar파일을 build path해줌

:: DriverManager를 사용한 방법은 물리적으로 데이터베이스와 실질적인 연결을 제공하며 close를 해주어 커넥션을 끊어 데이터베이스와의 접속을 끊지만

  DataSource를 사용한 방법은 논리적으로 데이터베이스에 접속하는 방법으로 커넥션 풀에 있는 실질적인 데이터베이스 커넥션에 대응될 뿐이기에        Connection인스턴스를 close()하면 실질적인 접속이 끊기는게 아니라, Connection에 할당된 실질적인 커넥션과의 논리 연결이 해제가 된다는 의미로 두   가지 방법이 있다. 


< DBCP Api사용 - 전체 프로젝트에 적용되는 사용 방법 >

:: 웹 서버의 context.xml파일을 열어 아래 코드 추가


- Oracle

<Resource 
    name="jdbc_oracle" 
    auth="Container" 
    type="javax.sql.DataSource" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    loginTimeout="10" 
    maxWait="5000"  
    username="scott"  
    password="tiger"  
    testOnBorrow="true" 
    url="jdbc:oracle:thin:@localhost:1521:orcl" 
/>



- Mysql

<Resource 
    name="jdbc_mysql" 
    auth="Container" 
    type="javax.sql.DataSource"  
    driverClassName="com.mysql.jdbc.Driver" 
    loginTimeout="10"     
    maxWait="5000" 
    username="root" 
    password="123"  
    testOnBorrow="true" 
    url="jdbc:mysql://localhost:3306/test" 
/>



- MariaDb

<Resource 
    name="jdbc_maria" 
    auth="Container" 
    type="javax.sql.DataSource"  
    driverClassName="org.mariadb.jdbc.Driver" 
    loginTimeout="10" 
    maxWait="5000"  
    username="root" 
    password="123"  
    testOnBorrow="true" 
    url="jdbc:mysql://localhost:3306/test" 
/>




- DAO에서 접근


try{
    Context context = new InitailContext();
    dataSource = (DataSource)context.lookup("java:comp/env/jdbc/Oracle11g");
 
}catch(Exception e){
    e.printStackTrace();
}
 
// 메소드에서 커넥션 불러올 때
 
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
 
try{
    con = datasource.getConnection();
    stmt = con.createStatement;
    rs = stmt.executeQuery("select * from member");
 
}catch(Exception e){
    e.printStakTrace();
 
}




< 각 프로젝트에 적용 >

:: 각각의 프로젝트에 META-INF폴더에 context.xml 파일을 작성



< mariadb >


- context.xml 파일

<Context>
    <Resource 
        name = "jdbc_maria"
        auth = "Container"
        type = "javax.sql.DataSource"
        DriverClassName = "org.mariadb.jdbc.Driver"
        loginTimeout = "10"
        maxWait = "5000"
        username = "scott"
        password = "tiger"
        testOnBorrow ="true"
        maxActive = "500"
        maxIdle = "100"
        url = "jdbc:mysql://localhost:3306/text" />
 
</Context>



- DAO에서 접근


Datasource ds;
Connection conn;
public MemberDAO(){
    try{
            Context ct = new InitialContext();
            ds = (DataSource)ct.lookup("java:comp/env/jdbc_oracle");
            //Mysql의 경우 ds = (DataSource)ct.lookup("java:comp/env/jdbc_mysql");
            conn = ds.getConnection();
        
}catch(Exception e){
    e.printStakTrace();
}




< oracle >


- context.xml 파일

<Context path="/Dogpapa" docBase="www">
    <Resource
        name = "jdbc_oracle"
        auth = "Container"
        type = "javax.sql.DataSource"
        DriverClassName = "orcle.jdbc.driver.OracleDriver."
        loginTimeout="10"
        maxWait="5000"
        username="scott"
        password="tiger"
        testOnBorrow="true"
        url="jdbc:oracle:thin:@localhost:1521:xe"
        maxActive ="30"
        maxIdle="15"
         />
    <ResourceLink 
    type="javax.sql.data.DataSource"
    name="jdbc_oracle"
    global="jdbc_oracle"
    
    />
</Context>



- DAO에서 접근


Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc_oracle");
Connection conn = null;
conn = ds.getConnection();



'프로그래밍 > JSP' 카테고리의 다른 글

EL(Expression Language)  (0) 2019.03.17
파일 업로드  (0) 2019.03.17
DAO/DTO/PreparedStatement  (0) 2019.03.13
JDBC  (0) 2019.03.07
데이터베이스(1)  (0) 2019.03.07

[ DAO, DTO ]



< DAO >

:: Data Access Object

:: 데이터 베이스에 접속해서 데이터 추가, 삭제, 수정 등의 작업을 하는 클래스

:: JSP나 Servlet 페이지 내에 기술할 수 있지만 유지보수 및 코드 모듈화를 위해 별로도 DAO를 사용.


package com.javalec.ex;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
 
 
public class MemberDAO {
    private String url = "jdbc:oracle:thin:@localhost:1521:xe";
    private String uid = "dogpapa";
    private String upw = "123123";
    
    
    public MemberDAO() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            
            
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public ArrayList<MemberDTO> memberSelect(){
        
        ArrayList<MemberDTO> dtos = new ArrayList<MemberDTO>();
        
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        
        try {
            
            conn = DriverManager.getConnection(url, uid, upw);
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from member");
            
            while(rs.next()) {
                String name = rs.getString("name");
                System.out.println("name값:"+name);
                String id = rs.getString("id");
                String pw = rs.getString("pw");
                String phone1 = rs.getString("phone1");
                String phone2 = rs.getString("phone2");
                String phone3 = rs.getString("phone3");
                String gender = rs.getString("gender");
                
                MemberDTO dto = new MemberDTO(name, id, pw, phone1, phone2, phone3, gender);
                dtos.add(dto);
                System.out.println("dto값:"+ dto);
                
            }
            System.out.println("dtos값:"+ dtos.toString());
            
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if(rs != null)  rs.close();
                if(stmt != null)  stmt.close();
                if(conn != null) conn.close();
                
            }catch(Exception e) {
                e.printStackTrace();
                
            }
        }
        return dtos;
    }
}
 




< DTO >

:: Data Transfer Object

:: 데이터 베이스에서 데이터를 관리할 때 데이터를 일반적인 변수에 할당하여 작업 할 수 있지만, 해당 데이터의 클래스를 만들어 사용. 



package com.javalec.ex;
 
public class MemberDTO {
    private String name;
    private String id;
    private String pw;
    private String phone1;
    private String phone2;
    private String phone3;
    private String gender;
    
    
    public MemberDTO(String name, String id, String pw, String phone1, String phone2, String phone3, String gender){
        this.getName();
        this.getId();
        this.getPw();
        this.getPhone1();
        this.getPhone2();
        this.getPhone3();
        this.getGender();
        
    }
    
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    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 getPhone1() {
        return phone1;
    }
    public void setPhone1(String phone1) {
        this.phone1 = phone1;
    }
    public String getPhone2() {
        return phone2;
    }
    public void setPhone2(String phone2) {
        this.phone2 = phone2;
    }
    public String getPhone3() {
        return phone3;
    }
    public void setPhone3(String phone3) {
        this.phone3 = phone3;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    
    @Override
    public String toString() {
        return "MemberDTO [name=" + name + ", id=" + id + ", pw=" + pw + ", phone1=" + phone1 + ", phone2=" + phone2
                + ", phone3=" + phone3 + ", gender=" + gender + "]";
    }
    
    
 
}
 



< jsp페이지 >


<body>
 
    <%
        MemberDAO memberDAO = new MemberDAO();
        ArrayList<MemberDTO> dtos = memberDAO.memberSelect();
        
        
        for(int i = 0; i < dtos.size(); i++){
            MemberDTO dto = dtos.get(i);
            String name = dto.getName();
            String id = dto.getId();
            String pw = dto.getPw();
            String phone = dto.getPhone1() + "-" + dto.getPhone2() + "-" + dto.getPhone3();
            String gender = dto.getGender();
            
            out.println("이름:" + name + ",아이디:" + id + ",비밀번호:" + pw + ",연락처:" + phone + ",성별:"+ gender + "<br>");
        }
    %>
 
</body>




[ PreparedStatement ]

:: 중복 코드가 많아지는 Statement의 단점을 보완한 객체


Class.forName(driver);
conn = DriverManager.getConnection(url,uid,upw);
int n;
String query = "insert into member(id,pw,name,phone) values(?,?,?,?)";
preparedStatement = conn.prepareStatement(query);
`
preparedStatement.setString(1,"abc");
preparedStatement.setString(2,"123");
preparedStatement.setString(3,"홍길동");
preparedStatement.setString(4,"010-1234-5678");
= preparedStatement.executeUpdate();





'프로그래밍 > JSP' 카테고리의 다른 글

파일 업로드  (0) 2019.03.17
커넥션 풀  (0) 2019.03.13
JDBC  (0) 2019.03.07
데이터베이스(1)  (0) 2019.03.07
Bean(빈)  (0) 2019.03.07

[ JDBC ]

:: JAVA프로그램에서 SQL문을 실행하여 데이터를 관리하기 위한 JAVA API.

:: 다양한 데이터 베이스에 대해서 별도 프로그램을 만들 필요 없이, 해당 데이터 베이스의 JDBC를 이용하면 하나으 ㅣ프로그램으로 데이터 베이스를

  관리할 수 있음.

:: Oracle을 사용중이니 Oracle용 JDBC를 사용하며, Oracle을 설치할 때 자동으로 설치 되고, 이클립스에서 해당 클래스 파일을 복사하면 됨.


[ Oracle Driver를 사용하기 위한 ojdbc6.jar파일 복사 ]

:: oracle설치 경로에서 app\oracle\product\버전명\server\jdbc\lib 내부에 위치함

:: jre위치 찾기( windows -> preperences -> java -> Build Path -> Classpath variables에 JRE_LIB의 경로


< 직접 넣어주는 방법 >

:: jre설치 폴더 -> lib -> ext에 ojdbc6.jar파일을 복사


< 이클립스에서 넣는 방법 >

1. 프로젝트이름 마우스 우클릭

2. Build Path -> Configure Build Path

3. Libraries탭 -> JRE system Library -> edit

4. alternate JRE 부분에 알맞은 jre가 선택되어 있는지 본 후 installed JRES클릭

5. 목록에 있는 jre 클릭 -> edit 클릭

6. Add External JARs 클릭후 ojdbc6.jar파일이 있는 경로로 찾아가 등록


[ 데이터 베이스 연결 순서 ]

1. JDBC 드라이버 로드[DriverManager]

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

:: 메모리에 Oracle Driver가 로드됨


2. 데이터베이스 연결[Connection]

:: DriverManager.getConnection( JDBC URL, 계정아이디, 비밀번호 );

:: Connection객체 생성


3. SQL문 실행[Statement]

:: connection.createStatement();

:: statement객체를 동해 SQL문이 실행됨.


4. 데이터베이스 연결 해제[ResultSet]

:: statement.executeQuery(), statement.executeUpdate()

:: SQL문의 결과값을 ResultSet객체로 받음


< Statement 객체 >

:: 인터페이스


☞ executeQuery()

:: SQL문 실행 후 여러 개의 결과값이 생기는 경우 사용

:: select


- ResultSet

1. next()

:: 다음 레코드로 이동


2. previous()

:: 이전 레코드로 이동


3. first()

:: 처음으로 이동


4. last()

:: 마지막으로 이동


5. get메소드(getString, getInt)



☞ executeUpdate()

:: SQL문 실행 후 테이블의 내용만 변경되는 경우 사용

:: insert, delete, update


<%!
        Connection connection;
        Statement statement;
        ResultSet resultSet;
        
        String driver = "oracle.jdbc.driver.OracleDriver";
        String url = "jdbc:oracle:thin@localhost:1521:xe";
        String uid = "scott";
        String upw = "tiger";
        String query = "select * from member";
    %>




<%
        try{
            Class.forName(driver);
            connection = DriverManager.getConnection(url, uid, upw);
            statement = connection.createStatement();
            resultSet = statement.executeQuery(query);
            
            while(resultSet.next()){
                String id = resultSet.getString("id");
                String pw = resultSet.getString("pw");
                String name = resultSet.getString("name");
                String phone = resultSet.getString("phone");
                
                out.println("아이디: "+ id + ", 비밀번호 : "+ pw + ", 이름: "+ name + ", 전화번호: " + phone );
            }
            
        }catch(Exception e){
            e.printStackTrace();
            
        }finally{
            
            try{
                if(resultSet != null){
                    if(statement != null){
                        statement.close();
                    }
                    if(connection != null){
                        connection.close();
                    }
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    
    %>




'프로그래밍 > JSP' 카테고리의 다른 글

커넥션 풀  (0) 2019.03.13
DAO/DTO/PreparedStatement  (0) 2019.03.13
데이터베이스(1)  (0) 2019.03.07
Bean(빈)  (0) 2019.03.07
예외 페이지  (0) 2019.03.07

[ 데이터 베이스의 개요 ]

:: 많은 데이터를 관리하기 위한 수단

:: 데이터의 추가, 삭제, 검색, 이동 등의 기능이 쉽게 되어 있어 사용자로 하여금 원하는 

  데이터를 빠른 시간 내에 이용할 수 있게 함

:: 데이터 베이스를 관리하는 도구는 DBMS(DataBase Management System[데이터베이스 관리 시스템])

:: DBMS는 종류가 다양하지만 가장 많이 사용하는 것이 RDBMS(Relational DataBase Management System)으로 대표적으로 Oracle이 있음.

:: 응용프로그램 - DBMS -> DataBase


[ Oracle 설치 ]

1. http://www.oracle.com 접속 후 로그인

2. Download에 들어가면 Oracle Database가 있음

3. Oracle Database 11g Express Edition 다운(라이센스에 동의, 운영체제에 맞는 버전 다운)

4. 설치파일 setup.exe 실행

5. 비밀번호 설정(기본적으로 제공하는 sys, system계정의 비밀번호)


[ SQLPlus ]

:: 데이터 베이스를 관리하기 위한 무료 툴

:: cmd에서 실행


< 관리자 계정 로그인 >

:: sqlplus system/설정된 비밀번호


< scott계정 생성 및 권한 설정 (비밀번호:tiger)>

:: create user scott identified by tiger;

:: grant connect, resource to scott;


< 관리자 계정 빠져나오기 >

:: exit


[ 기본적인 SQL문 ]


< 테이블 생성 >

:: create table 테이블명(컬럼명 자료형);


※자료형

- number

:: 수치 데이터형


- char

:: 고정 문자열


- varchar2

:: 가변길이 문자열


< 테이블 검색 >

:: select * from tab 


< 레코드 추가 >

:: insert int 테이블명(컬럼명,컬럼명) values('값','값');

:: commit을 해주어야 적용


< 레코드 삭제 >

:: delete from 테이블명 조건


< 데이터 변경 >

:: update 테이블명 set 컬럼이름=값, 컬럼이름=값, .... 조건


< 테이블 삭제 >

:: drop table 테이블명



'프로그래밍 > JSP' 카테고리의 다른 글

DAO/DTO/PreparedStatement  (0) 2019.03.13
JDBC  (0) 2019.03.07
Bean(빈)  (0) 2019.03.07
예외 페이지  (0) 2019.03.07
Session  (0) 2019.03.07

[ Bean ]

:: 반복적인 작업을 효율적으로 하기 위해 사용

:: JAVA언어의 데이터(속성)과 기능(메소드)으로 이루어진 클래스

:: jsp페이지를 만들고, 액션태그를 이용하여 빈을 사용

:: 빈의 내부 데이터를 처리


[ Bean 생성 ]

:: java파일 생성 후 데이터의 속성을 선언 해주고 getter와 setter를 생성


[ Bean 관련 액션 태그 ]

:: 데이터를 업데이트 하고 얻어오는 역할.


< useBean >

<jsp:useBean id="student" class="com.javalec.ex.Student" scope = "page" />
(빈 이름) ( 클래스 이름 ) (스코프 범위)


※scope

- page

:: 생성된 페이지 내에서만 사용가능


- request

:: 요청된 페이지 내에서만 사용 가능


- session

:: 웹브라우저의 생명주기와 동일하게 사용 가능


- application

:: 웹 어플리케이션 생명주기와 동일하게 사용 가능




< setProperty >

:: 데이터 값을 설정할 때 사용

<jsp:setProperty name="student" property="name"    value="홍길동" />



< getProperty >

:: 데이터 값을 가져올 때 사용

<jsp:getProperty name="student" property="name" />



'프로그래밍 > JSP' 카테고리의 다른 글

JDBC  (0) 2019.03.07
데이터베이스(1)  (0) 2019.03.07
예외 페이지  (0) 2019.03.07
Session  (0) 2019.03.07
Cookie  (0) 2019.03.06

[ 예외 페이지 ]

:: 예외적인 상황이 발생했을 경우 웹컨테이너(톰캣)에서 제공되는 기본적인 예외 페이지가 아닌

   사용자에게 거부감이 들지 않는 페이지로 유도


[ page 지시자를 이용한 예외 처리 ]


(예외 발생)

<%@ page errorPage = "errorPage.jsp" %>
 
<% 
    int i = 40/0;
 
%>





(예외 페이지)
:: 예외페이지라는 것을 page지시자를 통해 명시해야함
:: status 200 을 주는 이유는 정상적으로 완료된 페이지를 나타내기 위함 간혹 500으로 설정이 되는 경우가 있어서 명시.
<%@ page isErrorPage = "true" %>

<% response.setStatus(200%>
<%= exception.getMessage() %>



[ web.xml을 이용한 예외 처리 ]

:: 지시자를 통한 <%@ page isErrorPage="true" %> 항목을 사용하지 않고 사용해야함.

<error-page>
      <error-code>404</error-code>
      <location>/error404.jsp</location>
  </error-page>
  <error-page>
      <error-code>500</error-code>
      <location>/error500.jsp</location>
  </error-page>




'프로그래밍 > JSP' 카테고리의 다른 글

데이터베이스(1)  (0) 2019.03.07
Bean(빈)  (0) 2019.03.07
Session  (0) 2019.03.07
Cookie  (0) 2019.03.06
액션태그(forward,include,param)  (0) 2019.03.06

[ Session ]

:: WAS서버에 객체로 저장함 존재함.

:: 보안에 강하며, 용량에 제한이 없음.

:: 브라우저 하나당 Session id가 생성되며 JSP컨테이너에서 자동으로 생성함.

:: 쿠키보다 세션을 주로 많이 사용함.



[ Session 문법 ]


<순서>


1. 클라이언트 요청(웹 브라우저)

2. session 자동 생성

3. Session 속성 설정

:: session 내부 객체 메소드 이용


< Session 관련 메소드 >


- setAttribute(key,value)

:: 세션에 데이터를 저장

.

- getAttribute(key)

:: 세션에서 데이터를 얻음

:: 반환 값이 무조건 object이기 때문에 object객체를 생성해서 받아야함.


- getAttributeNames()

:: 세션에서 데이터의 키값들을 불러옴



- getAttribute()

:: 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키 값)을 얻음


- getId()

:: 자동 생성된 세션의 유니크한 아이디를 얻음


- isNew()

:: 세션이 최초 생성되었는지, 이전에 생성된 세션인지 구분


- getMaxInactiveInterval()

:: 세션의 유효시간을 얻음. ( default는 30분)

:: 가장 최근 요청시점을 기준으로 카운트

:: apache-tomcat-7.0.5\apache-tomcat-7.0.57\conf\web.xml에서 session을 검색하면 default session configuration 참조


- removeAttribute()

:: 세션에서 특정 데이터를 제거


- Invalidate()

:: 세션의 모든 데이터를 삭제






'프로그래밍 > JSP' 카테고리의 다른 글

Bean(빈)  (0) 2019.03.07
예외 페이지  (0) 2019.03.07
Cookie  (0) 2019.03.06
액션태그(forward,include,param)  (0) 2019.03.06
Request 와 Response  (0) 2019.03.06

[ 쿠키 ]

:: 웹 브라우저에서 서버로 어떤 데이터를 요청하면 서버측에서 알맞은 로직을 수행한 후 데이터를 웹브라우저에 응답을 하고, 서버는

  웹 브라우저와의 관계를 종료하는데, 연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키를 사용함.

:: 서버에서 생성하여 클라이언트측에 특정 정보를 저장함.

:: 서버에 요청 할 때마다 쿠키의 속성값을 참조 또는 변경이 가능

:: 4kb로 용량이 제한적이며 데이터를 300개 가질 수 있음.

:: 데이터가 클라이언트의 local에 저장되기 때문에 보안성이 떨어짐.


※ http 프로토콜의 특징은 3way-handshaking을 통해 연결을 맺고 끊는 작업을 수행.


[ 쿠키 문법 ]


< 쿠키 생성 방법 >


1. 쿠키 생성

:: 쿠키 클래스를 이용


2. 속성 설정

:: setter를 이용


3. response객체에 쿠키 탑재

:: response.addCookie()를 이용



[cookieset.jsp]
<%
     Cookie cookie = new Cookie("cookieA""cookieB");
     cookie.setMaxAge(60*60);
     response.addCookie(cookie);
 %>
 <a href = "cookieget.jsp">cookie get</a>
 
 
[cookieget.jsp]
<%
        Cookie[] cookies = request.getCookies();
        
        for(int i = 0; i <cookies.length; i++){
            String str = cookies[i].getName();
            if(str.equals("cookieA")){
                out.println("cookies[" + i + "] name :" + cookies[i].getName() +"<br/>");
                out.println("cookies[" + i + "] value :" + cookies[i].getValue() +"<br/>");
                out.println("====================================<br/>");
            }
        }
    %>
    <a href ="cookiedel.jsp">cookie delete</a>
 
[cookiedel.jsp]
 
<%
    <%
        Cookie[] cookies = request.getCookies();
        for(int i=0; i < cookies.length; i++){
            String str = cookies[i].getName();
            if(str.equals("cookieA")){
                out.println("name: "+ cookies[i].getName() + "<br/>");
                cookies[i].setMaxAge(0);
                response.addCookie(cookies[i]);
            }
        }
%>
    <a href ="cookieset.jsp">쿠키 확인</a>


※ Cookie 객체 생성시 첫번째 매개변수는 쿠키의 이름 두번째 매개변수는 쿠키의 값


< 관련 메소드 >

- setMaxAge()

:: 쿠키의 유효기간 설정


- setPath()

:: 쿠키 사용의 유효 디렉토리 설정


- setValue()

:: 쿠키의 값을 설정


- setVersion()

:: 쿠키의 버전을 설정


- getMaxAge()

:: 쿠키 유효기간 정보를 얻음


- getName()

:: 쿠키의 이름을 얻음.


- getPath()

:: 쿠키사용의 유효 디렉토리 정보를 얻음


- getValue()

:: 쿠키의 값을 얻음


- getVersion()

:: 쿠키 버전을 얻음




'프로그래밍 > JSP' 카테고리의 다른 글

예외 페이지  (0) 2019.03.07
Session  (0) 2019.03.07
액션태그(forward,include,param)  (0) 2019.03.06
Request 와 Response  (0) 2019.03.06
스크립트릿/선언/표현식  (0) 2019.03.05

+ Recent posts