카테고리 없음

부트스트랩 그리드, 오라클 계정생성

logloglog 2021. 1. 6. 12:53

부트스트랩

 

레이아웃을 잡는 방법

 

Grid layout  < 화면 분할 (모눈종이처럼)

<div class = "row">

이 안에있는 녀석들은 한 라------인안에

</div>

 

12분할을 한다.

<div class = "col-sm-6>

 

 

row 가 한 행임

        <div class="row"> 
		 		
 		<div class="col-sm-4">
			<div class="card card-success">
              <div class="card-header">
                <h3 class="card-title">Collapsable</h3>

                <div class="card-tools">
                  <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i>
                  </button>
                </div>
                <!-- /.card-tools -->
              </div>
              <!-- /.card-header -->
              <div class="card-body">
                The body of the card
              </div>
              <!-- /.card-body -->
            </div>
 
        <!-- /.row -->
      </div><!-- /.container-fluid -->
 			
 		<div class="col-sm-4">       
			<div class="card card-primary">
              <div class="card-header">
                <h3 class="card-title">Collapsable</h3>

                <div class="card-tools">
                  <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i>
                  </button>
                </div>
                <!-- /.card-tools -->
              </div>
              <!-- /.card-header -->
              <div class="card-body">
                The body of the card
              </div>
              <!-- /.card-body -->
            </div>
          </div>
 		<div class="col-sm-4">      
			<div class="card card-danger">
              <div class="card-header">
                <h3 class="card-title">Collapsable</h3>

                <div class="card-tools">
                  <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i>
                  </button>
                </div>
                <!-- /.card-tools -->
              </div>
              <!-- /.card-header -->
              <div class="card-body">
                The body of the card
              </div>
              <!-- /.card-body -->
            </div>
		</div> 
	</div>
	
	
<!-- 	다음줄 -->
	<div class="row">
		<div class="col-sm-8">
			<div class="card card-danger">
              <div class="card-header">
                <h3 class="card-title">Collapsable</h3>

                <div class="card-tools">
                  <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i>
                  </button>
                </div>
                <!-- /.card-tools -->
              </div>
              <!-- /.card-header -->
              <div class="card-body">
                The body of the card
              </div>
              <!-- /.card-body -->
            </div>
		</div>
		<div class="col-sm-4">
			<div class="card card-primary">
              <div class="card-header">
                <h3 class="card-title">Collapsable</h3>

                <div class="card-tools">
                  <button type="button" class="btn btn-tool" data-card-widget="collapse"><i class="fas fa-minus"></i>
                  </button>
                </div>
                <!-- /.card-tools -->
              </div>
              <!-- /.card-header -->
              <div class="card-body">
                The body of the card
              </div>
              <!-- /.card-body -->
            </div>
		</div>
	
	</div>
    <!-- /.content -->

 

 


ibatis 디비연동

 

일단 계정은 하나 만들어서 임포트할거임

 

오라클 계정 생성

CREATE USER JSP
IDENTIFIED BY java;

GRANT connect, resource, dba TO jsp;

ALTER USER JSP DEFAULT TABLESPACE USERS;

ALTER ~ 는 테이블 만들면 저장되는 공간임

 

 

 


 

 

 

 

 

 

 

java.zip
0.15MB

 

 

 

문서는 좌측 바로가기로 바로 들어가면 안되고 user에서 문서로 차근차근들어가기

 

cmd 관리자권한으로 열고

 

 

 

더 넣어야함

jsp.zip
0.32MB

 

 


menu 테이블의 .do를 .html로 바꾸기

실제로 폴더에 저 html 문서들 만들어야함

메뉴를 테이블로 관리를 해야하는 이유 > 몇개안되면 상관없지만

이런거는 안됨

메뉴구조도 만들떄 이것들이 결정됨

유알엘과 deps를 어떻게 할건지.. 3deps까지만 하기 그 이상은 사용자의 접근도가 떨어진다

대부분은 2까지.. 3는 버튼떄문에

게시판 -> 왼쪽에 자유게시판 뭔게시판...  그 화면에 등록버튼이 잇을거임

여기서 게시판이 1 자유게시판 뭔게시판이 2, 등록버튼이 3인거임

 

사용자관리 - 사용자 목록 - 리스트나오고 등록버튼 - 새창띄워서 중복아이디확인이 4depts임

 

메뉴코드는 대분류(DD) -중분류(DD)- 소분류 (DD)

대분류는 게시판 3개

upcode : 서브메뉴는 이걸 기준으로 가져옴

 

레벨에서 home이 0번임.. 주메뉴는 upcode가 000000이거나 레벨이 0인거 가져오던지

 

 

 


원래 db는 일단 접근하려면 커넥션이 먼저이므로 커넥션을 먼저 만들어야함

자바커넥션만들어야하는데 JDBC 가 그 역할을 한다.

제이디비씨는 데이타소스 이용해서 rdbms에게 접근한다

커넥션풀을 만들어서 커넥션을 미리 rdbms에서 커넥션할수있는 토큰들을 땡겨옴

풀은 뭔가를 모아서 한곳에 둔거임

그 모아놓은걸 갖다쓴다.. (JDBC는 이런걸 못하므로 이 둘을 연계해주는게 DBCP임)

 

DBCP : 아파치에서 만든 jar파일? 1버전 2버전이 있는데 jdk7이상이면 2버전

얘는 datasource 안쓰고 basic datasourse씀.. 마이바티스도 이거씀

 

ibatis에 내장되어있는 DBCP..

sqlsessionfactory에는 2가지가 필요한데

config랑 맵퍼가 필요함

 

ibatis는 1버전이라 커넥션이 불안정할수잇음

ibatis는 2번에서 끝. 더이상 개발 x 우리가 앞으로 쓸건  mybatis 임 (## > #{}로 바뀐게 다르다)

 

sqlsessionfactory는 왜 팩토리 ? 우리에게 세션을 주기떄문임

config , mapper는 주문서의 역할을 하기떄문에 이둘이 정확하지않으면 안된다

config를 통해 빌드를 해서 팩토리를 만드는거기떄문에

 

jdbc의 데이터소스는

-driver (오라클이야? 마이sql이야? 묻는용도)

-url : 어디에있는 오라클인데?

-username

-password

이런 것들은 자바의 데이터소스떄문에 생성되는거임

여기까진 풀 없는 데이터소스에서 쓴거고

풀쓰기 시작하면서 풀에대한 개념추가됨

- 풀의 갯수..등

풀에 대한 설정은 안주면 default로 된다.

맵퍼에 대한 경로도  config에 들어가있음

 

맵퍼엔 뭐가: 어떤쿼리문에 어떤 파라미터를 받고어떤 결과물을 내보낼지에 대한

타입파라미터, 리절트타입에 대한 규정

맵도 여기에있다, 동적으로 달라지는 쿼리문도 여기에있다.

 

 


실제로 구현해보자

 

sqlsessionfactory 을 먼저 만들어야함

composition 관계 : 뒤부터 만들어야함 즉 컨트롤러 서블릿이 서비스를 가지고있으므로 서비스를 먼저 만들어야... 한다는말임

서비스는 dao가지고잇으므로 dao이씅야 서비스 구현가능.. dao는 세션없이 할수없음 그러니까 sql sessionfactory

ssf 는 config를 가지고잇으므로 config먼저 만들어야함 이런 관게를 composition관계라고 함

 

config부터 만들자

 

 

<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

 

 

 

 

sqlConfig.xml
0.00MB

 

 

 

풀에 관한 설정이 이부분임

활동하는거 10개 잠재되어잇는거 5개

 

e gov에 마이바티스 내장되어잇기떄문에 이렇게 열어야 오류가 안난다

 

 

db.properties

driverClassName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:XE
username=JSP
password=java

 

이부분떄문에 프로퍼티스 적어준거임


menu vo만들어야함

 

MenuVO.java
0.00MB

 

 

 


메퍼만들거임

 

일단 여기 수정

 

 

 

 

뒤가 0000으로 끝나는 (m코드) 혹은 레벨이 1인 녀석들

 

셀렉트 서브메뉴 : 서브메뉴 가져오는 애들

 

 

해당 메뉴정보

 

Menu-Mapper.xml
0.00MB

 

 

 

 

이제 클래스구현을 해야함

일단 lib에 jar 넣고

ibatis-2.3.4.726.jar
0.37MB
ojdbc6.jar
2.05MB

 

 

 

factory는 core 에 있으므로 이것도 추가

 

ibatis-core-3.0.jar
0.56MB

 

 

 

 

 

랩핑하는거임

ssf 를 임플해서 메서드를 그대로 호출하면 래핑이 된다.

클래스 래핑에 대한 개념..을 배우려고 의도적으로 하는거임

 

아이바티스 세션은 기본 커밋을 안함

그래서 opensession이 아니라 그냥 opensession을 해도 (true)값ㅇ ㅣ달리게 할거임

이렇게 하면 그냥 열어도 커밋이고 true열어도 커밋 그냥 무조건 커밋이 되는거임

이렇게 입맛대로 바꿀수있따.  >> 이게 wrapping 하는거임

 

package com.jquery.mybatis;

import java.sql.Connection;

import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.TransactionIsolationLevel;

import com.ibatis.sqlmap.client.SqlMapSession;

public class OracleIBatisSqlSessionFactory implements SqlSessionFactory{

	//wrapping 할거임
	private static SqlSessionFactory sqlSessionFactory;//얘를 쓰는게 랩핑

	@Override
	public Configuration getConfiguration() {
		return sqlSessionFactory.getConfiguration();
	}

	@Override
	public SqlSession openSession() {
		return sqlSessionFactory.openSession(true);//자동커밋되게. 이게 랩핑하는거임
	}

	@Override
	public SqlSession openSession(boolean arg0) {
		return sqlSessionFactory.openSession(arg0);//파라미터 받은거 그대로 넘김
	}

	@Override
	public SqlSession openSession(Connection arg0) {
		return sqlSessionFactory.openSession(arg0);
	}

	@Override
	public SqlSession openSession(TransactionIsolationLevel arg0) {
		return sqlSessionFactory.openSession(arg0);
	}

	@Override
	public SqlSession openSession(ExecutorType arg0) {
		return sqlSessionFactory.openSession(arg0);
	}

	@Override
	public SqlSession openSession(ExecutorType arg0, boolean arg1) {
		return sqlSessionFactory.openSession(arg0,arg1);
	}

	@Override
	public SqlSession openSession(ExecutorType arg0, TransactionIsolationLevel arg1) {
		return sqlSessionFactory.openSession(arg0,arg1);
	}

	@Override
	public SqlSession openSession(ExecutorType arg0, Connection arg1) {
		return sqlSessionFactory.openSession(arg0,arg1);
	}
	
	
}