본문 바로가기

JSP(Java Server Page)

cos.jar 이용하여 파일 업로드 (미완 여러 파일 업로드) 파일 업로드에는 cos.jsr 라는 라이브러리가 필요하다. 해당 라이브러리를 lib폴더에 넣은 후에 작업 jsp에서는 form태그의 속성에 enctype="multipart/form-data" 이라고 설정해 준다 enctype을 설정하면 HttpServletRequest객체로 받질 못한다. cos.jar에서 제공해주는 MultipartRequest 객체를 이용하여 받도록하자. MultipartRequest multi = new MultipartRequest(req, uploadDir, 5 * 1024 * 1024, "utf-8", new DefaultFileRenamePolicy());//MultipartRequest(request객체, 업로드할 절대경로, 파일크기, 인코딩방식, 보안관련) 위와 같이 객.. 더보기
Statement 와 PreparedStatement의 차이 prepared statements를 파라메터와 함께 사용하면 미리 만들어진 접근 계획을 재사용하므로서 데이터 베이스에 대한 로드를 줄여 준다.이 cache는 데이터 베이스가 확장된 것이어서 여러분의 모든 애플리케이션이 유사한 파라메터화된 sql을 사용하면 하나의 애플리케이션이 다른 애플리케이션에 의해 사용된 prepared statements를 이용하므로 캐시 스키마의 효율성을 증대 시킬 수 있다.이것은 application server 사용의 이점이다. 왜냐하면 데이터 베이스에 접근하는 로직은 데이터 접근 계층에 집중화 되어야하기 때문이다.또다른 이점은 prepared statements의 올바른 사용은 여러분이 애플리 케이션 내부의 prepared statements cache를 잘 이용할 수 있게.. 더보기
DB 데이터 갯수 읽어오기, 레코드 갯수 JDBC를 이용하여 다음과 같이 DB의 데이터를 읽어올 때 ResultSet으로 결과값으로 가져오는 경우 레코드의 갯수 구하기 pstmt = conn.prepareStatement(sql문 , ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);rs = pstmt.executeQuery();//총 레코드 수구하기rs.last();int totalRecord = rs.getRow();//end rs.beforeFirst(); //커서를 다시 원상태로 복귀해서 자료를 읽을 준비를 해줌 더보기
jsp에서 자바스크립트 안먹을 때 확인할 사항 여러가지 이유가 있을 수 있겠지만 이러한 경우 때문에 발생 할 수 있으니 주의. 다음의 예제를 보자 예제를 보고 실행을 유추해본다면 alert창이 뜨고 login.jsp로 이동할 것이라 생각할 수도 있다. 하지만 실제로는 alert은 무시되고 login.jsp로 이동하게된다. 아마 1. servlet이 컴파일 되어져 실행되고 (서버 사이드 스크립트) 2. html이 렌더링 된 후 3. javascirpt(클라이언트 사이드 스크립트) 실행 순서로 실행되기 때문일 것이다. 이와 같은 흐름으로 위의 예제를 다시 본다면 login.jsp(서버사이드스크립트)로 먼저 이동하기 때문에 alert(클라이언트사이드스크립트)을 만날수 없다는 것을 알 수 있다. 더보기
MVC1 패턴을 이용한 간단한 게시판 구현 //테이블 설계 //게시판 테이블create table tb_board1(board_no number primary key,board_title varchar2(50) not null,board_write varchar2(50) not null,board_content varchar2(1000) not null,board_regdate date,group_no number) //시퀀스CREATE SEQUENCE board_seq INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE; //댓글 테이블create table tb_comment(comment_no number primary key,comment_wirter varchar2(50),comment_co.. 더보기
redirect와 forward 사용을 구분하는 법 //list.jsp로 이동(Insert 작업을 수행한 이후에는 redirect로 이동) -> 데이터처리작업(request 데이터를 저장시켰을 경우) 이후에는 redirect 해준다.response.sendRedirect("list.jsp"); // forward 하지 말아야하는 이유 : // forward로 넘겨주면 서버에서 서버로 응답을 요청하기때문에 데이터를 계속 가지고 있다. // 그러므로 list.jsp에서 browser를 refresh 시켜주면 전에 요청한 DB처리요청이 재실행된다. delete했다면 delete가 다시 실행된다. // redirect하게 되면 이러한 데이터정보를 reset해버리기 때문에 데이터처리 요청이 중복실행되지 않게 방지 해준다. 더보기
jsp:Bean 태그 사용하기(데이터 다루기) ** 사원 목록(beans + db pooling 사용)**사번이름부서명직급성별//GET방식으로 넘김 ================================================================================================================================ 고객번호고객이름고객전화성별 ================================================================================================================================ package pack; import java.sql.Connection;import java.sql.PreparedSta.. 더보기
dbcp객체를 server환경설정으로 다루기(싱글톤아님) server.xml resource 태그안에 다음을 추가해준다 maxIdle="30" maxActive="100" context.xml 안에 다음을 추가해준다. 자바에서 처리 try {//dbcp - apach 제공' Context context = new InitialContext();ds = (DataSource)context.lookup("java:comp/env/jdbc/Oracle");} catch (Exception e) {System.out.println("db 연결 실패 : " + e);} 여기서 주의해야할 점은 context.xml의 resource안의 name은 임의로 적어준다. java에서 context.lookup(java:comp/env/name)의 매개변수를 맞춰줘야한다. 즉 j.. 더보기