JSP 기본 동작  하이브리드 웹개발  

 

1. JSP (Java Server Page )

: *.jsp 로 작성
: 동적 웹 컴포넌트 ( 프로그램으로 실행됨 ==> html로 결과가 나옴 )
: html과 동일한 위치에 저장하고, html과 동일하게 요청한다.
  예> http://localhost:8090/31Day/Hello.jsp
: 구성요소


 - html 태그
 - jsp 태그
 - JSTL 태그
 - EL 태그

 

2. JSP 태그

일반 JSP 태그 4가지에 대해서 알아보자!

1) directive tag ( 저시자 태그 )
=> JSP에게 특정 정보를 지시할 때 사용.
표기 방법 <%@ ~~~ %>

 : 종류 3가지

 - <%@ page     %>   : page directive tag
 => 추가속성
   <%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>  --servlet의 response.setContentType("")과 동일
 
   <%@ page import="java.util.ArrayList" %>  --servlet의 import문과 동일 
   <%@ page import="java.util.Vector" %>

  => JSP 실행시 반드시 발생되는 예외를 처리하는 방법
   <%@ page errorPage="error.jsp"%>
   <%@ isErrorpage="true"%> : isErrorpage 기본값은 false 이다.

 

2) declaration tag (선언 태그)
 : <%!     %>
 : 서블릿에서 인스턴스 변수 및 doGet,doPost 제외한 메소드를 사용하는 경우와 동일

 예>
    public class MyServlet extends Httpservlet{
 
 String name;
 public String getName(){ return name }; ㅇ

 public vod doGet(HttpServletRequest request,
         HTtpServletResponse response){
 }
    }

    JSP 표현
    <%! String name;
 public String getname(){ return name; } %>

==> *.java(서블릿)으로 변경될 때 서블릿의 인스턴스 변수와 create method로 변경된다.
    따라서 사용하는 위치와 무관하다.

 

3) scriptlet tag(스크립트릿 태그)
 
  --> <%        %>
  --> 서블릿의 doGet|doPost에서 했던 작업을 지정한다.

 

4) expression tag (표현 태그)
  --> 결과를 클라이언트로 응답
       out.print()와  동일한 기능.
 
  --> <%= 변수 &>
       out.print(변수명);

  

 

3. 내장객체 (내장변수 : implicit object, implicit variable)
 sciptlet 태그내에서 자동으로 선언되는 변수  따라서 jsp에서는 그냥 사용하면 된다.
 

 - reqeust
 --> 서블릿의 HttpServletRequest
 - response
 --> 서블릿의 HttpServletResponse
 - conflg
 --> 서블릿의 ServletConfig
 - application

 --> 서블릿의 ServletContext
 - session
 --> 서블릿의 HttpSession
 - exception
 --> 서블릿의 Throwable(Exception)
 --> <%@ page isErrorPage="true" %> 인 경우에 exception내장객체 생성된다.
 - pageContext
 - out
 --> 서블릿의 PrintWriter

 

4. JSP에서의 포워드

 

가. redirect

==> response.sendRedirect();

나. forward
==> RequestDispatcher dis = request.getRequestDispatcher();
      dis.forward(request, response)

 

5. MVC ( Model, view , Controller ) 패턴

 

가. Model 1 Architecture
 => 클라이언트 요청을 JSP 가 처리한다.

브라우저 ------------> JSP <--> DAO
            <-----------

=> 개발속도 빠르다. 소규모의 웹 어플리케이션 개발시 적합. 화면구성코드와 로직코드가 같이
   혼합된 형태이기 떄문에 빠르게 구현가능하지만, 나중에 유지보수가 어렵다.
=> 이전에 많이 사용하던 개발방법이다. 현재는 사용안한다.

 

나. Model 2 Architecture (MVC 패턴이라고도 한다. )
==> 기능별로 모듈화 시키는 방법.

=> 처음에는 개발이 어렵다. 하지만 나중에 유지보수는 쉽다.
=> 현재 서비스되는 대부분의 웹스아트 개발시 적용.


                    서블릿에 요청
웹브라우저   -----------------> 서블릿 --> DAO,DTO

                 <----------------    JSP
                         JSP 응답
 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,


 SQL 종류, Select 문, 계정생성 및 권한부여 
 


SQL - ( Structured Query Language )

구조화 질의어라고 하며 데이터 정의어(DDL)와 데이터 조작어(DML)를 포함한 데이터베이스용 질의언어(query language)의 일종이다.

특정한 데이터베이스 시스템에 한정되지 않아 널리 사용된다.

 

1) DML ( Data Manipulation Language )
- insert (데이터 삽입)
- delete (데이터 삭제)
- updata (데이터 수정)
- merge  (데이터 병합)
==> 트랜잭션 (transaction) 고려해야 된다.

2) DDL ( Data Definition Language )
- create (객체 생성)
- alter  (객체 수정)
- drop   (객체 제거)

 

3) TCL ( Transaction Control Language )
=> 트랜잭션 관련 명령어
- commit
- rollback

라. 권한할당 / 권한취소
- grant (권한 할당)
- revoke (권한 취소)

마. qurey
- select ( 데이터 조회 )

 

관계형 데이터베이스
- 데이터를 테이블 형태로 관리하며, 테이블간에 관계를 맺으면서 데이터를 관리하는 방법

- 용어를 잘 이해하고 있어야 한다.

 

열(컬럼)
  이름     나이    주소     ==> 컬럼헤딩
 -----------------------
 박보영     24     증평     ==> 행(레코드 : 자바의 인스턴스)
 김상진     25              ==> 비어있는 컬럼 ( null 값을 갖는다고 표현 )
 다비치     25     경기

 

<제약조건 5가지> => 테이블의 올바른 데이터 설정하기 위해서.

 

가. primary key 제약조건 (PK)
=> 레코드를 식별하기 위해서 특정 컬럼에 지정. (유일하기 때문에)
=> 지정된 컬럼은 반드시 유일한 값을 갖는다.
   또한 null값을 갖지 못한다.
=> 중복데이터 저장을 방지할 수 있다.
=> 예> 주민번호, 사원번호, 학번

나. unique 제약조건 (UK)
=> 컬럼에 유일한 값을 저장하기 위한 제약조건.
   null값 허용.

다. not null 제약조건 (NN) (개체 무결성)
==> 컬럼에 null 값을 허용 안함.

라. check 제약조건 ( CK )
=> 컬럼에 저장할 데이터의 조건체크해서 저장여부 결정

 예> age > 20

마. foreign key 제약조건 ( FK ) (참조 무결성)
=> 다른 테이블의 PK값을 갖거나 또는 null 값을 가질수 있는 제약조건

 

<select 문>

query 문으로 질의를 던져 원하는 데이터를 조회할 목적으로 사용되는 SQL 문

 

사용방법에 대해 알아보자.

 

select (컬럼명)

from (테이블명)

where (조건명);

 

* 참고사항 : 데이터베이스에서 ' * ' 모두를 의미한다.

 

기본 구조는 위와 같으며 여러가지 옵션이 존재한다. 지금부터 어떠한 옵션이 있는지 알아보자.

 

1) 논리연산자 : AND ,OR, NOT

2) 범위 연산자 : BETWEEN

ex) where salary between 5000 AND 7000;       -- 5000 ~ 7000 사이의 셀러리 값을 갖는것

 

3) IN 연산자 : 일치하는 값만 검색

ex) where salary IN(2000,4000,6000);               -- 셀러리 값이 2000,4000,6000, 인것을 찾는것

 

4) LIKE 연산자 : 부분적으로 일치하는 값을 검색

%  : 없거나 여러문자 대치
_   : 한문자 대치

 

ex)  이름이 a로 시작하는 사람 검색
      where name LIKE a%';

      이름이 a로 끝나는 사람 검색
      where name LIKE '%a;

      이름에 a문자를 갖는 사람 검색
      where name LIKE '%a%';

      이름이 5글자이고 s끝나는 사람 검색
      where name LIKE '____s';

 
 
5) IS NULL 연산자와 IS NOT NULL 연산자

where Student_num IS NULL;         -- 학번 값이 NULL 인것을 검색

where Student_num IS NOT NULL;    --  학번 값이 NULL 이 아닌 것을 검색

 

6) 오름차순과 내림차순 연산자

오름차순 : asc, ASC
==> order by 컬럼명 ASC;
내림차순 : desc, DESC
==> order by 컬럼명 DESC;

 

<DDL - Data Definition Language> 데이터를 정의 하는 언어!
- create
- alter
- drop

스키마 ( schema )
: 특정 사용자가 접속해서 생성한 객체들의 대표이름.
: 사용자 개정명과 동일하다.
  스키마라고 하면 계정을 의미한다.

: 스키마는 반드시 소유자가 있다.
  다른 스키마는 접속 불가. ( 권한 없기 때문에 )

==> 스키마.테이블명;

예> select * from hr.employee;  -- hr 스키마의 employees 테이블 접근

 

< 계정 생성 및 권한 부여>

 

먼저 계정생성은 관리자만 가능하다!

생성 하는 방법은 아래와 같다.

 

create user 계정명
identified by 비번;

 

create user man

          identified by 123;

 

이렇게 계정을 생성했으면 권한을 부여를해야한다.

접속권한(connect),객체생성권한(resource)를 부여하는 방법을 예를 들어보자.

               

                grant 권한, 권한2
                    to 계정;

          

          grant connect,resource    -- 접속권한과 객체생선권한을

          to man;                           -- man 계정에게 준다

 

롤( role )?
==> 권한들의 묶음을 의미.
==> 권한부여 및 취소를 편리하게 하기 위해서 사용한다.
예> connect, resource

 

 

직장을 다니면서 투잡(알바/부업)으로 월급 많큼 수익을 얻고 싶으시다면  

아래 접속하셔서 상담받아 보실 수 있습니다. (믿음의 재택부업회사)

(회원가입을 하시면 편리한 시간에 자세히 설명해드립니다)

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 테이블이 존재 여부 확인하는 소스.  DB 관련 함수

 

<?
$link = mysql_connect("localhost", "root", "apmsetup");


$a = mysql_list_tables("hello");

$num = mysql_num_rows($a);

echo $num ;

for ($i = 0; $i < $num; $i++){
 $s = mysql_tablename($a,$i);
 if($s == "user_tbl"){
  echo "exists";
  exit;
 }
 
 
 
}
echo "end";
?>

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 테이블 이름 불러오는 함수 mysql_tablename ()  DB 관련 함수

 

테이블 이름을 불러오는 함수로 mysql_table(인자1,인자2)가 있다.

 

인자1에 쿼리문 2에 변수를 넣는다.

 

사용법 :

 

<?php
mysql_connect("localhost", "root", "apmsetup");
$result = mysql_list_tables("hello");
$num_rows = mysql_num_rows($result);
for ($i = 0; $i < $num_rows; $i++) {
    echo "Table: ", mysql_tablename($result, $i), "\n";
}

mysql_free_result($result);
?>

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 현재 서버의 상태를 보는 함수 mysql_stat()  DB 관련 함수

 

현재 서버의 상태를 알려주는 함수로 mysql_stat() 가 있다.

 

사용법 :

 

<?
$link = mysql_connect("localhost", "root", "apmsetup");
mysql_select_db("hello");

$a = mysql_stat($link);

echo $a ;


 ?>

 

 

결과

 

Uptime: 18203 Threads: 2 Questions: 590 Slow queries: 0 Opens: 21 Flush tables: 1 Open tables: 0 Queries per second avg: 0.32

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 테이블 리스트 보기 show tables from dbname  DB 관련 함수


다음은 특정 DB의 테이블 목록을 보는 소스이다.

 

<?
$link = mysql_connect("localhost", "root", "apmsetup");
mysql_select_db("hello");

$db_name = "hello"; // hello 대신 db이름을 적는다.

$sql = "show tables from $db_name";
$result = mysql_query($sql);

while ($row = mysql_fetch_row($result)){
echo "$row[0] <br />";
}

mysql_free_result($result);

 ?>

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 데이터베이스 목록 불러오기 mysql_list_dbs()  DB 관련 함수

 

데이터 베이스 목록을 불러 오기 위한 함수 mysql_list_dbs()를 사용하면 된다.

 

사용법 :

 

 <?
$link = mysql_connect("localhost", "root", "apmsetup");
mysql_select_db("hello");

$db_list = mysql_list_dbs($link);

echo "$db_list";

while ($row = mysql_fetch_object($db_list)){
echo "$row->Database <br />";
}


 ?>

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 필드의 이름을 불러오는 함수 mysql_field_name  DB 관련 함수

 

필드의 이름을 불러오는 함수는

 

mysql_field_name()

 

이다.

 

mysql_field_name (쿼리변수,필드순서);

 

 

사용법 :

 

<?
mysql_connect("localhost", "root", "apmsetup");
mysql_select_db("hello");

$result = mysql_query("SELECT * FROM user_tbl WHERE userid = 'david'");


$res = mysql_query('select * from user_tbl');

echo mysql_field_name($res, 0)
 ?>

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 필드의 바이트 값을 구하는 함수 mysql_field_len()  DB 관련 함수


필드의 바이트 값을 구하는 함수는 mysql_field_len()이다.

 

사용법은

 

 <?
mysql_connect("localhost", "root", "apmsetup");
mysql_select_db("hello");

$result = mysql_query("SELECT * FROM user_tbl WHERE userid = 'david'");


$length = mysql_field_len($result, 5);
echo $length;


 ?>

 

결과 

 

11

---------------------------------------------

 

 

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

MySQL 행과 일치하는 값의 레코드 불러오기 mysql_fetch_row()  DB 관련 함수


<?
mysql_connect("localhost", "root", "apmsetup");
mysql_select_db("hello");

$result = mysql_query("select *from user_tbl where userid = 'david'");
if(!$result){
 echo mysql_error();
 exit;
}
$row = mysql_fetch_row($result);

$sql = mysql_query("select *from user_tbl");
$num_fields = mysql_num_fields($sql);

 

for($a = 0; $a < $num_fields;$a++){
 echo "$a :  $row[$a] <br />";
}
 ?>

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,