728x90

BoardDAO.java

  • BoardDelete(int bidx){} 메서드를 만들었다.
  • DB table에서 데이터를 실제로 삭제하지는 않고 delyn 열의 값을 'y'로 바꿔주는 update 구문을 사용했다.
  • 글 목록을 가져올 때 where 조건에 delyn = 'n'값을 주어서 그렇다.

BoardController.java

  • 가상주소 boardDelete.do와 boardDeleteAction.do로 접속할 때 상황을 구현했다.
  • boardDelete.do

    - confirm을 이용해 확인창이 뜨고 누르면 삭제되는 방법이 있는데 구현하는 것을 늦게 알아서

    일단 boardDelete.jsp 파일을 만들어서 이쪽으로 이동하게 했다.

  • boardDeleteAction.do

    - boardDelete.jsp 페이지에서 삭제하기 확인을 누르면 작동

    - BoardDAO의 BoardDelete() 메서드를 이용한다.

    - 성공적으로 삭제된 경우 글 리스트 페이지로 이동, 아닐 경우 다시 글 내용 페이지로 이동한다.

728x90

'노트' 카테고리의 다른 글

5월 6일 JSP  (0) 2022.05.07
5월 3일 JSP 게시판 페이징 학습  (0) 2022.05.03
4월 27일 JSP 게시판 글 수정하기  (0) 2022.04.27
4월 26일 자바스크립트 객체 개념  (0) 2022.04.26
4월 25일 jsp 게시판 글 목록 보이기  (0) 2022.04.25
728x90

BoardDAO.java

public int BoardModify(String subject, String content, String writer, int bidx){}
  • BoardModify 메서드 추가

    - 해당 메서드의 매개변수로 DB를 수정한다. UPDATE 구문을 사용하고 bidx를 조건절로 준다.

BoardController.java

  • boardModify.do, boardModifyAction.do 두 개의 가상 주소에 맞는 컨트롤을 추가한다.
  • boardModify.do

    - request.getParameter("")를 사용해 bidx를 받아온다.

    - 서버의 데이터를 담는 BoardVO 클래스의 객체를 생성하고 메서드와 받아온 bidx를 이용해 데이터를 담는다.

    - 담은 데이터를 boardModify.jsp에 뿌려준다.

  • boardModifyAction.do

    - 수정하기 페이지에서 수정 버튼을 누르면 작동하는 동작이다.

    - 수정하기 페이지에서 subject, content, writer, bidx를 파라미터로 받아오고

    boardDAO 클래스의 BoardModify() 메서드를 사용해 서버 DB를 업데이트한다.

boardModify.jsp

  • boardContent.jsp 파일과 형식은 비슷하지만 값을 입력받기 위해 input 태그를 사용한다.
  • 수정하기 버튼을 눌렀을 때 글 번호도 같이 보내주기 위해서 input태그의 hidden 타입을 사용해 bidx값을 보내준다.
728x90
728x90

객체

  • 객체의 고유한 속성을 프로퍼티(property)라고 부르며 객체는 여러 프로퍼티와 값의 쌍으로 표현된다.
  • 한 객체는 여러 함수를 가질 수 있는데 이를 메서드(method)라고 부른다.
  • 브라우저는 많은 자바스크립트 객체들을 만들어 제공하므로 주로 이들을 사용한다.
  • 3가지 유형으로 나눌 수 있다. 

    - 코어 객체

    - HTML DOM 객체

    - 브라우저 관련 객체(BOM)

 

코어 객체

  • 기본 객체로서 Array, Date, String, Math 타입 등이 있으며, 웹 페이지나 웹 서버 응용프로그램 어디서나 사용할 수 있다.

HTML DOM

  • HTML 페이지에 작성 된 HTML 태그들을 브라우저가 하나씩 객체화한 것들로 HTML 페이지의 내용과 모양을 제어하기 위해 사용되는 객체들이다.

브라우저 관련 객체(BOM)

  • Browser Object Model이라고도 부른다.
  • 브라우저의 종류나 스크린의 크기 정보를 제공하거나 새 윈도우를 생성하는 등 브라우저와 관련된 객체들이다.
728x90
728x90

index.jsp

  • a태그의 href를 통해서 게시판 목록의 가상 주소를 서버에 보낸다.

BoardController.java

  • BoardDAO 클래스의 boardSelectAll() 메서드를 이용해 ArrayList <BoardVO> alist 객체를 생성한다.
  • RequestDispatcher 클래스의 rd 객체를 생성하고 forward 방식으로 보낸다.

BoardVO.java

  • oracle sql의 데이터를 담을 때 사용할 클래스
  • private 멤버변수와 setter, getter 메서드만 존재한다.

BoardDAO.java

  • 여러 쿼리 실행 함수를 만들어 둔 클래스
  • oracle 데이터베이스의 a_board 테이블에서 쿼리문으로 데이터를 가져와 BoardVO 객체에 담고, 이를 ArrayList 객체에 담아서 반환하는 함수를 생성했다.

boardList.jsp

  • for 문을 사용해 ArrayList<BoardVO> alist의 값을 표로 출력한다.
728x90

'노트' 카테고리의 다른 글

4월 27일 JSP 게시판 글 수정하기  (0) 2022.04.27
4월 26일 자바스크립트 객체 개념  (0) 2022.04.26
4월 21일 web.xml, 컬렉션 프레임워크  (0) 2022.04.21
4월 20일 JSP Servlet 학습  (0) 2022.04.20
4월 18일  (0) 2022.04.18
728x90

Web.xml

  • 자바 웹 애플리케이션은 배포 설명자 파일을 사용하여 URL이 서블릿에 매핑되는 방법, 인증이 필요한 URL, 기타 정보를 확인하는데 이 파일의 이름이 Web.xml이다.
  • 이클립스의 WEB-INF 디렉터리에 위치하고 있다.
  • 애플리케이션의 클래스, 리솟, 구성을 기술하고, 웹 서버가 이를 사용해서 웹 요청을 처리하는 방법을 기술한다.
  • 웹 서버가 애플리케이션에 대한 요청을 수신하면 배포 설명자를 사용해서 해당 요청을 처리해야 하는 코드로 요청의 URL을 매핑한다.

모든 URL 경로(/*.do)를 서블릿 클래스 jspstudy.controller.FrontController에 매핑한다.

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>FrontController</servlet-name>
        <servlet-class>jspstudy.controller.FrontController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FrontController</servlet-name>
        <url-pattern>/*.do</url-pattern>
    </servlet-mapping>
</web-app>

 

 

JAVA 컬렉션 프레임워크(Collection framework)

  • 자바에서는 필요한 자료구조를 미리 구현하여 java.util 패키지에서 제공하는데 이를 컬렉션 프레임워크라고 한다.
  • 자바 컬렉션 프레임워크에는 여러 인터페이스가 정의되어 있고 그 인터페이스를 구현한 클래스가 있다.
  • 전체 구조는 Collection 인터페이스와 Map 인터페이스 기반으로 이루어져 있다
  • Collection인터페이스는 하나의 자료를 모아서 관리하는 데 필요한 기능을 제공
  • Map 인터페이스는 쌍으로 된 자료들을 관리하는데 유용한 기능을 제공한다. (key값과 value)

Collection 인터페이스

  • 하위에 List 인터페이스와 Set 인터페이스를 가지고 있다.
  • List의 경우 순차적인 자료를 관리하는데 사용하고 Set은 중복되지 않은 객체를 다루는 데 사용한다.
  • 자주 사용하는 메서드

- boolean add(E e) 객체를 추가한다.

- void clear() 모든 객체를 제거한다.

- boolean remove(Object o)  매개변수에 해당하는 인스턴스가 존재하면 제거한다.

- Iterator <E> iterator 순환할 반복자(iterator)를 반환한다.

- int size() 요소의 개수를 반환한다. 

 

Map 인터페이스

  • Key - Value 쌍이라고 표현하는 자료들을 관리하는 메서드들이 선언되어 있다.
  • 키값은 중복될 수 없다.
  • 기본적으로 검색용 자료구조이다. 주로 key값을 알고 있을 때 value값을 찾기 위해 사용한다.
  • 자주 사용하는 메서드

- V put(K key, V value) key에 해당하는 value값을 map에 넣는다.

- V get(K key) key에 해당하는 value값을 반환

- boolean isEmpty() map이 비어있는지 여부를 반환

- boolean containsKey(Object key) map에 해당 key가 있는지 여부를 반환

- boolean containsValue(Object value) map에 해당 value가 있는지 여부를 반환

- Set keyset() key집합을 Set으로 반환

- Collection values() value를 Collection으로 반환

- V remove(key) key가 있는 경우 삭제

- boolean remove(Object key, Object value) key가 있는 경우 key에 해당하는 value가 매개변수와 일치할 때 삭제

728x90

'노트' 카테고리의 다른 글

4월 26일 자바스크립트 객체 개념  (0) 2022.04.26
4월 25일 jsp 게시판 글 목록 보이기  (0) 2022.04.25
4월 20일 JSP Servlet 학습  (0) 2022.04.20
4월 18일  (0) 2022.04.18
4월 15일 JSP  (0) 2022.04.15
728x90

Servlet

  • 자바로 만든 웹페이지, 클래스이지만 실행 시 웹페이지로 출력된다.
  • HttpServlet 클래스를 상속받았기 때문에 그렇다.
  • 메서드

- 입력받은 값을 get방식으로 넘기느냐 post방식으로 넘기느냐의 차이

- doGet()

    - URL값으로 정보가 전송되어 보안에 취약

- doPost()

  • 자바코드 안에 HTML 코드 작성 가능
// PrintWriter 클래스를 사용한다.
// ex)
PrintWriter out = response.getWriter();
out.println("<HTML>"
	+"<HEAD>"
            +"<Title> servlet </Title>"
            +"</HEAD>"
            +"<BODY>"
            +"<h1>하이</h1>"
            +"</BODY>"
            +"</HTML>");

 

request (HttpServletRequest request)

http://127.0.0.1:8080/contextpath/servlcetpath/index.jsp
  • . getRequestURI()

 - 요청 URL 중 포트번호 와 쿼리 사이의 부분을 얻어온다.

/contextpath/servlcetpath/index.jsp
  • . getContextPath()

 - 콘텍스트 경로를 가져온다.

/contextpath
  • . getRequestDispatcher()

 - RequestDispatcher 객체를 생성해주는 메서드

  • . setAttribute()

 - Servlet에서 JSP로 객체를 보낼 때 사용한다.

 - Servlet에서는 request.setAttribute("이름", 객체)로 전달하고 JSP에서 

    변수를 할당해 = request.getAttribute("이름")으로 받는다. 

response (HttpServletResponse response)

  • . sendRedirect()

 - 특정 url로 재요청

RequestDispatcher

 

  • . forward()

 - 페이지 전환

728x90

'노트' 카테고리의 다른 글

4월 25일 jsp 게시판 글 목록 보이기  (0) 2022.04.25
4월 21일 web.xml, 컬렉션 프레임워크  (0) 2022.04.21
4월 18일  (0) 2022.04.18
4월 15일 JSP  (0) 2022.04.15
4월 12일 oracle SQL, JAVA  (0) 2022.04.12
728x90

JSP

<%@ include file = "" %>

현재의 JSP파일에 다른 JSP, HTML 파일을 포함시켜 사용한다.

"" 안에 파일의 경로를 넣는다.

 

InetAddress 클래스

자바에서 IP주소를 표현할 때 사용하는 클래스

메서드

  • getByName(String host) 

- 매개변수 host에 대응되는 InetAddress 객체를 반환

  •  getLocalHost()

- 로컬 호스트의 InetAddress 객체를 반환

 

  • getAddress()

- 객체의 IP주소를 반환 byte[]타입으로 반환한다

  • getHostAddress()

- IP주소를 String 타입으로 반환한다.

  • getHostName()

- 호스트 이름을 문자열로 반환한다.

//ex) 로컬 호스트의 IP 주소값을 String 타입으로 반환
String ip = InetAddress.getLocalHost().getHostAddress();

 

try catch 구문

실행할 코드블럭을 표시하고 예외가 발생할 경우의 응답을 지정한다.

//문법
try{
	try_statements;
}catch(exception_var){
	catch_statements;
}finally{
	finally_statements;
}

try_statements

- 실행될 선언들

exception_var

- catch 블록과 관련된 예외 객체를 담기 위한 식별자

catch_statements

- try 블록에서 예외가 발생했을 때 실행될 선언들

finally_statements

- try 선언이 완료된 이후 실행될 선언들, 이선언들은 예외 발생 여부와 상관없이 실행된다.

- finally 생략가능

728x90

'노트' 카테고리의 다른 글

4월 21일 web.xml, 컬렉션 프레임워크  (0) 2022.04.21
4월 20일 JSP Servlet 학습  (0) 2022.04.20
4월 15일 JSP  (0) 2022.04.15
4월 12일 oracle SQL, JAVA  (0) 2022.04.12
4월 11일 oracle SQL, JAVA  (0) 2022.04.11
728x90

JSP

//import 하는법 상단에 작성하기
<%@ page import = " " %>

Class.forName()

  • 자바 리플렉션의 일부

자바 리플렉션이란 구체적인 타입을 알지 못해도 클래스의 변수 및 메서드 등에 접근하게 해 준다.

  • Class.forName()을 통해 클래스의 정보를 가져오고 활용할 수 있다.
//ex)
Class.forName("oracle.jdbc.driver.OracleDriver");

 

Connetion

  • 자바에서 DB와 연결하기 위해 사용하는 클래스
  • DriverManager.getConnection() 메서드를 통해 파라미터를 입력할 수 있다.
  • 메서드( createStatement(), preparedStatement(String SQL), prepareCall(String SQL), close())

createStatement()

- SQL문을 DB에 전달하기 위한 statement 객체를 생성한다.

 

preparedStatement(String SQL)

- 파라미터가 포함된 SQL문을 DB에 전달하기 위한 preparedStatement 객체를 생성한다.

 

prepareCall(String SQL)

- DB의 stored procedure를 호출하기 위해 CallableStatement 객체를 생성한다.

-- stored procedure(SP)는 DB 내부에 저장된 일련의 SQL 명령문들을 하나의 함수처럼 실행하기 위한 쿼리의 집합

 

close()

- 현재 커넥션 객체에 할당된 시스템 리소스를 즉시 반환한다.

 

Statement

데이터 베이스의 연결로부터 SQL문을 실행할 수 있도록 해주는 클래스

  • 메서드( Execute(), ExecuteQuery(), ExecuteUpdate() )

Execute()

- 수행 결과로 boolean 타입의 값을 반환

- 모든 구문 수행가능

 

ExecuteQuery()

- 수행 결과로 ResultSet 객체의 값을 반환

- SELECT 구문을 수행할 때 사용

 

ExecuteUpdate()

- 수행결과로 int 타입의 값을 반환

- SELECT 구문을 제외한 다른 구문을 수행할 때 사용

- INSERT, DELETE, UPDATE 관련 구문에서는 반영된 레코드의 건수를 반환

- CREATE, DROP 관련 구문에서는 -1을 반환

728x90

'노트' 카테고리의 다른 글

4월 21일 web.xml, 컬렉션 프레임워크  (0) 2022.04.21
4월 20일 JSP Servlet 학습  (0) 2022.04.20
4월 18일  (0) 2022.04.18
4월 12일 oracle SQL, JAVA  (0) 2022.04.12
4월 11일 oracle SQL, JAVA  (0) 2022.04.11
728x90

oracle SQL

답변형 게시판 만들기

- 답변형 게시판을 만들기 위해서 인덱스 비교를 위한 컬럼을 추가하고

인덱스 비교하는 컬럼에 정렬을 적용시키면 된다.

- 정렬을 어떻게 시키느냐에 따라 답변의 순서가 바뀐다.

- 글로 작성하니 직관적이지 못한데 답변형 게시판을 만드는 것에 특별한 예약어라든지 

기술이 필요하지 않아서 그런듯하다.

중요한 것은 게시글 인덱스와 비교인덱스 컬럼을 잘 활용하는 것과 정렬의 방법이다. 

 


JAVA

추상클래스

  • 항상 추상 메서드를 포함한다.
  • 선언하는 예약어는 abstract
  • 추상 메서드는 몸체를 쓰지 않고 선언할 수 있다.
  • ex)
abstract int add(int x, int y);
  • 추상클래스에서 추상메서드를 생성해두는 이유는 공통된 이름의 메서드지만 하위 클래스마다 다르게 구현하기 이해서이다.
  • 추상클래스의 경우 new 예약어로 인스턴스를 생성할 수 없다.

 

템플릿메서드

  • 역할은 메서드 실행 순서와 시나리오를 정의 
  • final 예약어를 사용해 선언한다.

- 로직 흐름을 정의한 메서드이며 메서드 내부에서 일반 메서드와 구현되지 않은 추상 메서드를 호출한다. 흐름이 변하지 않도록 하위 클래스에서 재정하지 못하게 final로 선언한다.

728x90

'노트' 카테고리의 다른 글

4월 21일 web.xml, 컬렉션 프레임워크  (0) 2022.04.21
4월 20일 JSP Servlet 학습  (0) 2022.04.20
4월 18일  (0) 2022.04.18
4월 15일 JSP  (0) 2022.04.15
4월 11일 oracle SQL, JAVA  (0) 2022.04.11
728x90

oracle SQL

CONCAT() 함수

-- 문법
CONCAT('합칠 문자열','합칠 문자열')

TO_CHAR() 함수로 소수점 표현하기

TO_CHAR(소수점 숫자열, 'FM9990.0')
-- ex) TO_CHAR(123.4444,'FM990.0) -> 123.4로 표시
-- FM 뒤의 9는 숫자가 있을경우 숫자를 표시하고 없으면 표시하지 않는다.
-- 0은 없을 경우 0을 출력한다.

SEQUENCE 만들기

-- 시퀀스는 숫자를 사용할때마다 자동으로 일정 숫자를 더해준다.
-- 회원번호와 같이 중복없이 숫자가 하나씩 커지는 컬럼에 이용하면 편리하다.

-- 문법
CREATE SEQUENCE 시퀀스 이름 INCREMENT BY 증가시킬 수 START WITH 시작숫자
EX)
-- CREATE SEQUENCE MIDX_SEQ INCREMENT BY 1 START WITH 1;

-- DROP SEQUENCE 시퀀스 이름 (시퀀스 삭제)

 


JAVA

자바의 특징 

  • 객체지향
  • 상속
  • 다형성
  • 추상화
  • 캡슐화(데이터 은닉)

다운캐스팅(down casting)

- 상위 클래스로 형 변환되었던 하위 클래스를 다시 원래 자료형으로 형 변환하는 것을 다운캐스팅이라 한다.

- 다운캐스팅을 하기 전에 상위 클래스로 형 변환된 인스턴스의 원래 자료형을 확인해야 변환할 때 오류를

막을 수 있다. 이때 사용하는 예약어가 'instancof'이다.

// 사용법 ex)
Animal hAnimal = new Human();
if(hAnimal instanceof Human){
	Human hunam = (Human)hAnimal;
    }

instanceof 왼쪽에 있는 변수의 원래 인스턴스형이 오른쪽 클래스 자료형인가 확인한다.

728x90

'노트' 카테고리의 다른 글

4월 21일 web.xml, 컬렉션 프레임워크  (0) 2022.04.21
4월 20일 JSP Servlet 학습  (0) 2022.04.20
4월 18일  (0) 2022.04.18
4월 15일 JSP  (0) 2022.04.15
4월 12일 oracle SQL, JAVA  (0) 2022.04.12

+ Recent posts