●장시간 접속하지 않고 다시 접속하면 500에러가 나오고 새로고침 한번 하면 다시 제대로 나오는 오류

->mysql서버에 일정시간 접속하지 않으면 mysql서버 연결이 끊긴다. 그래서 일정시간 마다 한번씩 mysql에 접속을 해주는 속성을 넣어줘야 한다. spring+ibatis의 경우 root-context.xml에 validationQuery를 넣는다.


ex)

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://ip:3306/nm"/>

<property name="username" value="id"/>

<property name="password" value="pw"/>

<property name="validationQuery" value="select 1"/>

</bean>



Posted by -현's-

댓글을 달아 주세요


●poi hssf로 대량의 데이터를 다운로드 했을때 나타난 에러

java.lang.OutOfMemoryError: GC overhead limit exceeded




●hssf와 xssf는 메모리에 데이터를 한번에 담아서 처리하기 때문에 데이터 양이 많으면 메모리 부족 현상이 나타난다.

그래서 아파치에서는 자동으로 메모리에 일정량의 데이터가 차면 비워주는 sxssf를 제공한다.



http://poi.apache.org/spreadsheet/how-to.html#sxssf





Posted by -현's-

댓글을 달아 주세요

●예제



<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

    <%@ page import="java.util.*,

java.io.*,

java.util.List,

java.util.HashMap,

org.apache.poi.xssf.usermodel.XSSFCellStyle,

org.apache.poi.xssf.usermodel.XSSFFont,

org.apache.poi.xssf.usermodel.XSSFCell,

org.apache.poi.xssf.usermodel.XSSFRow,

org.apache.poi.xssf.usermodel.XSSFSheet,

org.apache.poi.xssf.usermodel.XSSFWorkbook,

org.apache.poi.xssf.usermodel.XSSFColor,

org.apache.poi.ss.util.CellRangeAddress,

org.apache.poi.ss.usermodel.Font,

org.apache.poi.ss.usermodel.IndexedColors,

com.kait.mms.common.util.*,

com.kait.ims.inven.inven.vo.InvenVo,

com.kait.ims.srch.vo.SrchVo" %>


 

<%




String sFileName = "tem.xlsx";

//String sFileName = "ItemList" + "(" + StrUtil.gfGetCurDateTime() + ")" + ".xls";

sFileName = new String ( sFileName.getBytes("KSC5601"), "8859_1");


out.clear();

out = pageContext.pushBody();

response.reset(); // 이 문장이 없으면 excel 등의 파일에서 한글이 깨지는 문제 발생.


String strClient = request.getHeader("User-Agent");


String fileName = sFileName;


if (strClient.indexOf("MSIE 5.5") > -1) {

//response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "filename=" + fileName + ";");

} else {

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");

}


OutputStream fileOut = null;


//워크북 생성

XSSFWorkbook objWorkBook = new XSSFWorkbook();

//워크시트 생성

XSSFSheet objSheet = objWorkBook.createSheet();

//시트 이름

objWorkBook.setSheetName(0 , "시트명" );

//행생성

XSSFRow objRow = objSheet.createRow((short)0);

//셀 생성

XSSFCell objCell = null;

//------------------------



objRow = objSheet.createRow((short)0);



objCell = objRow.createCell((short)0);


objCell.setCellValue("aa");




objCell = objRow.createCell((short)1);


objCell.setCellValue("bb");


objCell = objRow.createCell((short)2);


objCell.setCellValue("cc");


objCell = objRow.createCell((short)3);


objCell.setCellValue("dd");


objCell = objRow.createCell((short)4);


objCell.setCellValue("ee");


objCell = objRow.createCell((short)5);


objCell.setCellValue("ff");


objCell = objRow.createCell((short)6);


objCell.setCellValue("gg");


objCell = objRow.createCell((short)7);


objCell.setCellValue("hh");









//----------------------------------------------------------------------------------------

//길이 설정

objSheet.setColumnWidth((short)0,(short)3000);

objSheet.setColumnWidth((short)1,(short)3000);

objSheet.setColumnWidth((short)2,(short)3000);

objSheet.setColumnWidth((short)3,(short)3000);

objSheet.setColumnWidth((short)4,(short)3000);

objSheet.setColumnWidth((short)5,(short)8000);

objSheet.setColumnWidth((short)6,(short)3000);

objSheet.setColumnWidth((short)7,(short)5000);


//--------------------------------------------------------------------------------------



fileOut = response.getOutputStream(); 

objWorkBook.write(fileOut);

fileOut.close();

%>                           








Posted by -현's-

댓글을 달아 주세요

●index.html


<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>엑셀 다운</title>

</head>

<body>




<a href="testxls.jsp">엑셀 다운</a>





</body>

</html>










●testxls.jsp



<%@ page language="java" contentType="text/html; charset=EUC-KR"    

pageEncoding="EUC-KR"%>

     <%@ page import="java.util.*,com.sun.org.apache.xalan.internal.xsltc.compiler.Parser,

java.io.*,

java.util.List,

java.util.HashMap,

org.apache.poi.hssf.usermodel.*,

org.apache.poi.hssf.*,

org.apache.poi.hssf.util.HSSFColor,

org.apache.poi.hssf.util.Region" %>




<%

/* jsp 로직 Start*/




String sFileName = "엑셀파일" + ".xls";

sFileName = new String ( sFileName.getBytes("KSC5601"), "8859_1");


out.clear();

out = pageContext.pushBody();

response.reset(); // 이 문장이 없으면 excel 등의 파일에서 한글이 깨지는 문제 발생.


String strClient = request.getHeader("User-Agent");


String fileName = sFileName;


if (strClient.indexOf("MSIE 5.5") > -1) {

//response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "filename=" + fileName + ";");

} else {

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");

}


OutputStream fileOut = null;


//워크북 생성

HSSFWorkbook objWorkBook = new HSSFWorkbook();

//워크시트 생성

HSSFSheet objSheet = objWorkBook.createSheet();

//시트 이름

objWorkBook.setSheetName(0 , "1번시트" , HSSFWorkbook.ENCODING_UTF_16 );

//행생성

HSSFRow objRow = objSheet.createRow((short)0);

//셀 생성

HSSFCell objCell = null;



//------------------------------------------------------------------------------------


//병합


//제목

objSheet.addMergedRegion(new Region(0,(short)0,0,(short)7));  //제목


//상단

objSheet.addMergedRegion(new Region(1,(short)0,3,(short)0));    //구분

objSheet.addMergedRegion(new Region(1,(short)1,3,(short)1));    //2012년 폐기수량

objSheet.addMergedRegion(new Region(1,(short)2,3,(short)2)); //2013년 폐기수량

objSheet.addMergedRegion(new Region(1,(short)3,1,(short)7)); //평가전

objSheet.addMergedRegion(new Region(2,(short)3,3,(short)3)); //2013년 평가대상

objSheet.addMergedRegion(new Region(2,(short)4,2,(short)7)); //보존기간

objSheet.addMergedRegion(new Region(3,(short)4,3,(short)4)); //10년

objSheet.addMergedRegion(new Region(3,(short)5,3,(short)5)); //5년

objSheet.addMergedRegion(new Region(3,(short)6,3,(short)6)); //3년

objSheet.addMergedRegion(new Region(3,(short)7,3,(short)7)); //1년




//-----------------------------------------------------------------

//스타일 설정



//스타일 객체 생성 

HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일

HSSFCellStyle styleSub = objWorkBook.createCellStyle();   //상단 스타일

HSSFCellStyle styleCon = objWorkBook.createCellStyle();   //내용 스타일

HSSFCellStyle styleBody = objWorkBook.createCellStyle();   //왼쪽 스타일

HSSFCellStyle stylesum = objWorkBook.createCellStyle();   //소계 스타일




//제목 폰트

HSSFFont font = objWorkBook.createFont();

font.setFontHeightInPoints((short)15);

font.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//제목 스타일에 폰트 적용, 정렬

styleHd.setFont(font);

styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);

styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);





//상단 폰트

HSSFFont font2 = objWorkBook.createFont();

font2.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//상단 스타일 설정

styleSub.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleSub.setBottomBorderColor(HSSFColor.BLACK.index);

styleSub.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleSub.setLeftBorderColor(HSSFColor.BLACK.index);

styleSub.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleSub.setRightBorderColor(HSSFColor.BLACK.index);

styleSub.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleSub.setTopBorderColor(HSSFColor.BLACK.index);

//셀에 색 넣기

styleSub.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// not BackgroundColor

styleSub.setFillForegroundColor(HSSFColor.YELLOW.index);

//글자 속성

styleSub.setFont(font2);

styleSub.setAlignment (HSSFCellStyle.ALIGN_CENTER);

styleSub.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

styleSub.setWrapText(true); 





//왼쪽 스타일 설정

styleBody.setAlignment (HSSFCellStyle.ALIGN_LEFT);

styleBody.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

styleBody.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// not BackgroundColor

styleBody.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);

styleBody.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleBody.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleBody.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleBody.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleBody.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleBody.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleBody.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleBody.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);




//내용 스타일

styleCon.setAlignment (HSSFCellStyle.ALIGN_LEFT);

styleCon.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);


styleCon.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleCon.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleCon.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleCon.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleCon.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleCon.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleCon.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleCon.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);




//합계 스타일


stylesum.setAlignment (HSSFCellStyle.ALIGN_LEFT);

stylesum.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

stylesum.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// not BackgroundColor

stylesum.setFillForegroundColor(HSSFColor.SKY_BLUE.index);

stylesum.setBorderBottom(HSSFCellStyle.BORDER_THIN);

stylesum.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);

stylesum.setBorderLeft(HSSFCellStyle.BORDER_THIN);

stylesum.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);

stylesum.setBorderRight(HSSFCellStyle.BORDER_THIN);

stylesum.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);

stylesum.setBorderTop(HSSFCellStyle.BORDER_THIN);

stylesum.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);






//------------



//-----------------------------------------------------------------------------------




//1행



objRow = objSheet.createRow((short)0);

objRow.setHeight ((short) 0x300);


objCell = objRow.createCell((short)0);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("제목");

objCell.setCellStyle(styleHd);





//병합에 스타일 주기

for(int i=0;i<8;i++){

objRow = objSheet.createRow((short)1);

objCell = objRow.createCell((short)i);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("");

objCell.setCellStyle(styleSub);



objRow = objSheet.createRow((short)2);

objCell = objRow.createCell((short)i);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("");

objCell.setCellStyle(styleSub);



objRow = objSheet.createRow((short)3);

objCell = objRow.createCell((short)i);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("");

objCell.setCellStyle(styleSub);

}






//상단

objRow = objSheet.createRow((short)1);


objCell = objRow.createCell((short)0);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("구분");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)1);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("A");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)2);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("B");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)3);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("C");

objCell.setCellStyle(styleSub);




objRow = objSheet.createRow((short)2);


objCell = objRow.createCell((short)3);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("a");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)4);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("b");

objCell.setCellStyle(styleSub);





objRow = objSheet.createRow((short)3);


objCell = objRow.createCell((short)4);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("1");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)5);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("2");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)6);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("3");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)7);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("4");

objCell.setCellStyle(styleSub);


//----------------------------------------------------------------------------------------

//길이 설정

objSheet.setColumnWidth((short)0,(short)4500);

objSheet.setColumnWidth((short)1,(short)4000);

objSheet.setColumnWidth((short)2,(short)4000);

objSheet.setColumnWidth((short)3,(short)4000);

objSheet.setColumnWidth((short)4,(short)2500);

objSheet.setColumnWidth((short)5,(short)2500);

objSheet.setColumnWidth((short)6,(short)2500);

objSheet.setColumnWidth((short)7,(short)2500);

//--------------------------------------------------------------------------------------



//내용


 objRow = objSheet.createRow((short)4);

 objRow.setHeight ((short) 0x150);


 objCell = objRow.createCell((short)0);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("A");   //구분

 objCell.setCellStyle(styleBody);


 objCell = objRow.createCell((short)1);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("1");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)2);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("2");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)3);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("3");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)4); //10년

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("4");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)5);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("5");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)6);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("6");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)7);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("7");

 objCell.setCellStyle(styleCon);  

 


 

      

      

//합계

 objRow = objSheet.createRow((short)5);

 objRow.setHeight ((short) 0x150);


 objCell = objRow.createCell((short)0);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("소계");   //구분

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)1);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("1");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)2);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("2");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)3);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("3");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)4); //10년

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("4");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)5);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("5");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)6);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("6");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)7);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("7");

 objCell.setCellStyle(stylesum);


      




fileOut = response.getOutputStream(); 

objWorkBook.write(fileOut);

fileOut.close();

%>








 























Posted by -현's-

댓글을 달아 주세요


●아래 사이트에서 톰켓 이클립스 플러그인 파일을 다운받는다.


http://www.eclipsetotale.com/index.html







●해당 파일을 압춘을 푼 뒤 이클립스 폴더안에 있는 plugin폴더에 복사한다.






●이클립스를 실행하면 상단 메뉴에 고양이 버튼 3개가 나온다.











- 상단 메뉴 Window->Preferences를 클릭한다.









- 왼쪽 Tomcat을 클릭하고 오른쪽에서 톰켓버전, 톰켓 폴더 위치를 지정한 후 ok를 클릭한다.










●3개의 고양이 아이콘 중 왼쪽 버튼을 누르면 톰켓이 실행되고 중간 버튼을 누르면 톰켓이 중지되고 오른쪽 버튼을 누르면 톰켓이 재시작된다.

톰켓이 실행되면 http://localhost:8080 으로 들어가서 아래처럼 나오면 정상적으로 설치가 완료된 것이다.










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

poi xlsx 다운  (0) 2013.12.02
jsp poi 엑셀 다운 예제  (0) 2013.11.26
jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
Posted by -현's-

댓글을 달아 주세요

 

●엑셀 다운받기 예제

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@page import="
org.apache.poi.hssf.usermodel.HSSFCell,
org.apache.poi.hssf.usermodel.HSSFRow,
org.apache.poi.hssf.usermodel.HSSFSheet,
org.apache.poi.hssf.usermodel.HSSFWorkbook ,
org.apache.poi.hssf.util.Region,
java.io.FileOutputStream,
java.util.List,
org.apache.poi.hssf.usermodel.HSSFCellStyle ,
org.apache.poi.hssf.usermodel.HSSFFont,
org.apache.poi.hssf.util.HSSFColor,
java.util.*,
    java.io.*

" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>엑셀 POI 테스트 완료</title>
</head>
<body>

<%

 

 

 

 

String sFileName = "파일이름" + ".xls";
sFileName = new String ( sFileName.getBytes("KSC5601"), "8859_1");


out.clear();
out = pageContext.pushBody();
response.reset();  // 이 문장이 없으면 excel 등의 파일에서 한글이 깨지는 문제 발생.

 

String strClient = request.getHeader("User-Agent");

String fileName = sFileName;

if (strClient.indexOf("MSIE 5.5") > -1) {
 //response.setContentType("application/vnd.ms-excel");
 response.setHeader("Content-Disposition", "filename=" + fileName + ";");
} else {
 response.setContentType("application/vnd.ms-excel");
 response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");
}

OutputStream fileOut = null;

 

 

//---------------------------------------------------------------
//엑셀 처리 시작

HSSFWorkbook objWorkBook = new HSSFWorkbook();      //워크북 생성
HSSFSheet objSheet = objWorkBook.createSheet();     //워크시트 생성
HSSFRow objRow = null;        //로우 생성
HSSFCell objCell = null;       //셀 생성


//-----------------------------------------------------------------
//스타일 설정


//스타일 객체 생성
HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일
HSSFCellStyle styleSub = objWorkBook.createCellStyle();   //부제목 스타일
HSSFCellStyle styleBody = objWorkBook.createCellStyle();   //내용 스타일


//제목 폰트
HSSFFont font = objWorkBook.createFont();
font.setFontHeightInPoints((short)15);
font.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//부제목 폰트
HSSFFont font2 = objWorkBook.createFont();
font2.setFontHeightInPoints((short)11);
font2.setBoldweight((short)font.BOLDWEIGHT_BOLD);

 

//제목 스타일에 폰트 적용, 정렬
styleHd.setFont(font);
styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);
styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

//부제목 스타일 설정

styleSub.setFont(font2);
styleSub.setBorderBottom(HSSFCellStyle.BORDER_THIN);
styleSub.setBottomBorderColor(HSSFColor.BLACK.index);
styleSub.setBorderLeft(HSSFCellStyle.BORDER_THIN);
styleSub.setLeftBorderColor(HSSFColor.BLACK.index);
styleSub.setBorderRight(HSSFCellStyle.BORDER_THIN);
styleSub.setRightBorderColor(HSSFColor.BLACK.index);
styleSub.setBorderTop(HSSFCellStyle.BORDER_THIN);
styleSub.setTopBorderColor(HSSFColor.BLACK.index);
styleSub.setAlignment (HSSFCellStyle.ALIGN_CENTER);
styleSub.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);
styleSub.setWrapText(true);

//내용 스타일 설정
styleBody.setBorderBottom(HSSFCellStyle.BORDER_THIN);
styleBody.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setBorderLeft(HSSFCellStyle.BORDER_THIN);
styleBody.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setBorderRight(HSSFCellStyle.BORDER_THIN);
styleBody.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setBorderTop(HSSFCellStyle.BORDER_THIN);
styleBody.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setAlignment (HSSFCellStyle.ALIGN_CENTER);
styleBody.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);


//-------------------------------------------------------

//병합
objSheet.addMergedRegion(new Region(0,(short)0,0,(short)4));
objSheet.addMergedRegion(new Region(1,(short)0,1,(short)4));

//1행
objRow = objSheet.createRow((short)0);
objRow.setHeight ((short) 0x200);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("공지사항");
objCell.setCellStyle(styleHd);

//2행
objRow = objSheet.createRow((short)1);
objRow.setHeight ((short) 0x90);

objCell = objRow.createCell((short)0);

//길이 설정
objSheet.setColumnWidth((short)0,(short)5000);
objSheet.setColumnWidth((short)1,(short)20000);
objSheet.setColumnWidth((short)2,(short)5000);
objSheet.setColumnWidth((short)3,(short)5000);
objSheet.setColumnWidth((short)4,(short)5000);

 

//-------------------------------------------
//3행
objRow = objSheet.createRow((short)2);
objRow.setHeight ((short) 0x150);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("번호");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)1);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("제목");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)2);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성자");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)3);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성일");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)4);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("조회수");
objCell.setCellStyle(styleSub);

 


out.clear();

out = pageContext.pushBody();

fileOut = response.getOutputStream();
objWorkBook.write(fileOut);
fileOut.close();


 


%>


</body>
</html>

 

 

 

 

 

 

 

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

jsp poi 엑셀 다운 예제  (0) 2013.11.26
jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
Posted by -현's-

댓글을 달아 주세요

 

poi 폰트, 스타일 적용 예제

 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="org.apache.poi.* " %>
    <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet,
     org.apache.poi.hssf.usermodel.HSSFWorkbook,
     org.apache.poi.hssf.usermodel.*,
     org.apache.poi.hssf.*,
     java.io.FileOutputStream,
     org.apache.poi.hssf.util.Region,
     org.apache.poi.hssf.util.HSSFColor
    
     " %>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>엑셀 POI 테스트</title>
</head>
<body>

<%

//--------------------------------------------------------------------
//엑셀 처리 시작
HSSFWorkbook objWorkBook = new HSSFWorkbook(); //워크북 생성
HSSFSheet objSheet = objWorkBook.createSheet(); //워크시트 생성

HSSFRow objRow = null;       //행 생성
HSSFCell objCell =null;       //셀 객체 생성

 

//-----------------------------------------------------------------
//스타일 설정


//스타일 객체 생성
HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일
HSSFCellStyle styleSub = objWorkBook.createCellStyle();   //부제목 스타일
HSSFCellStyle styleBody = objWorkBook.createCellStyle();   //내용 스타일


//제목 폰트
HSSFFont font = objWorkBook.createFont();
font.setFontHeightInPoints((short)15);
font.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//제목 스타일에 폰트 적용, 정렬
styleHd.setFont(font);
styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);
styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

//부제목 스타일 설정
styleSub.setBorderBottom(HSSFCellStyle.BORDER_THIN);
styleSub.setBottomBorderColor(HSSFColor.BROWN.index);
styleSub.setBorderLeft(HSSFCellStyle.BORDER_THIN);
styleSub.setLeftBorderColor(HSSFColor.BROWN.index);
styleSub.setBorderRight(HSSFCellStyle.BORDER_THIN);
styleSub.setRightBorderColor(HSSFColor.BROWN.index);
styleSub.setBorderTop(HSSFCellStyle.BORDER_THIN);
styleSub.setTopBorderColor(HSSFColor.BROWN.index);
styleSub.setAlignment (HSSFCellStyle.ALIGN_CENTER);
styleSub.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);
styleSub.setWrapText(true);

 

 

//내용 스타일 설정
styleBody.setAlignment (HSSFCellStyle.ALIGN_LEFT);
styleBody.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

 

 

 

 


//----------------------------------------------------------------------

//병합
objSheet.addMergedRegion(new Region(0,(short)0,0,(short)4));
objSheet.addMergedRegion(new Region(1,(short)0,1,(short)4));

//1행
objRow = objSheet.createRow((short)0);
objRow.setHeight ((short) 0x200);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("공지사항");
objCell.setCellStyle(styleHd);

//2행
objRow = objSheet.createRow((short)1);
objRow.setHeight ((short) 0x90);

objCell = objRow.createCell((short)0);

//길이 설정
objSheet.setColumnWidth((short)0,(short)5000);
objSheet.setColumnWidth((short)1,(short)20000);
objSheet.setColumnWidth((short)2,(short)5000);
objSheet.setColumnWidth((short)3,(short)5000);
objSheet.setColumnWidth((short)4,(short)5000);

 


//-------------------------------------------
//3행
objRow = objSheet.createRow((short)2);
objRow.setHeight ((short) 0x150);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("번호");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)1);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("제목");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)2);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성자");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)3);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성일");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)4);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("조회수");
objCell.setCellStyle(styleSub);

 


//--------------------------------------------
//내용

 

 

 

 

 

 

//-----------------------------------------------------
//파일 닫기


//objWorkBook.write(response.getOutputStream());

FileOutputStream fs = new FileOutputStream("d:/aa.xls");
objWorkBook.write(fs);
fs.close();
out.println("엑셀 생성 완료");
//fs.close();

 

 

 

%>

dddddddddd

 

 

</body>
</html>

 

 

 

 

 

 

 

 

 


 

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

jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
Posted by -현's-

댓글을 달아 주세요

 

●poi

- java,jsp에서 데이터를 엑셀 등으로 추출, 또는 엑셀 등을 데이터로 저장할 때 사용한다.

 

- http://poi.apache.org/  에서 다운받은 파일을 압출 해제 후 WEB-INF 아래 lib에 넣는다.

 

- 워크북 생성->워크시트생성->로우생성->셀 생성->셀에 데이터 넣기 순서로 이루어진다.





hssf - .xls로 처리한다.

xssf - .xlsx로 처리한다.

sxssf - .xlsx로 처리한다. 위 두개는 데이터를 메모리에 담아서 한번에 처리하기 때문에 데이터가 많으면 메모리 부족현상이 나올수 있다. sxssf는 자동으로 메모리에 일정량의 데이터가 차면 메모리를 비워줘서 데이터가 많을 때 사용하면 좋다.

 




●poi 2점대 버전에서는 'HSSFCell.ENCODING_UTF_16'과 같이 한글 인코딩을 해야했지만

3점대 버전부터는 별도로 인코딩 코드를 삽입할 필요없다.


 

 

 

 

●엑셀로 추출하는 예제

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet,
     org.apache.poi.hssf.usermodel.HSSFWorkbook,
     org.apache.poi.hssf.usermodel.*,
     java.io.FileOutputStream,java.util.*,
    java.io.*,
    org.apache.poi.hssf.usermodel.*
     " %>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>엑셀 POI 테스트</title>
</head>
<body>

<%


HSSFWorkbook objWorkBook = new HSSFWorkbook();  //워크북 생성
HSSFSheet objSheet = objWorkBook.createSheet();       //워크시트 생성

 

HSSFRow objRow = objSheet.createRow((short)0);       //로우 생성(괄호안 숫자는 행 번호)
 HSSFCell objCell = objRow.createCell((short)0);           //셀 생성(괄호안 숫자는 열 번호)
 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);     //한글 인코딩
 objCell.setCellValue("연도");                                     //괄호안에 저장할 데이터를 넣는다.
 
  objCell = objRow.createCell((short)5);
 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
 objCell.setCellValue("내용");


objRow = objSheet.createRow((short)2);
  objCell = objRow.createCell((short)0);
 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
 objCell.setCellValue("연도55");
 
  objCell = objRow.createCell((short)5);
 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
 objCell.setCellValue("내용55");

 


FileOutputStream fs = new FileOutputStream("d:/test.xls");      //괄호안의 위치에 파일 생성한다.
objWorkBook.write(fs);
out.println("엑셀 생성 완료");

fs.close();

 

 


%>

 

 


</body>
</html>


 

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

jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
Posted by -현's-

댓글을 달아 주세요


●${} - EL, 익스프레션랭귀지, 표현언어



●EL식에 포함된 데이터이름은 기본적으로 어트리뷰트이름으로 해석한다.
ex)
request.setAttribute("R", ~~);

<%=request.getAttribute("R")
${R}


●이름이 같은 어트리뷰트이름이 있을경우
${pageScope.R}
${requestScope.R}
${sessionScope.R}
${applicationScope.R}
로 구분한다.


●EL과 액션은 프로그래밍과 디자인 작업의 효율성을 위해서 사용한다.


●param은 웹브라우저에서 form엘리먼트를 통해 데이터를 가져올때 사용한다.
ex)
${param.A}          // 데이터 하나 받을때
${paramValues.A[0]}        //데이터 같은이름 여러개 받은때
${paramValues.A[1]}




●서블릿 클래스 작성 3가지 규칙
①javax.servlet.http.HttpServlet 클래스를 상속한다.

②doGet, doPost 메서드 안에 웹브라우저로부터 요청이 왔을때 해야할 일을 기술한다.

③HTML문서는 doGet, doPost 메서드의 두번째 파라미터를 이용해서 출력한다.



● "public class 클래스이름 extents HttpServlet{} "
- 서블릿 클래스는 public으로 만든다.


●doGet, doPost는 HttpServletRequest, HttpServletResponse 타입의 파라미터를 받아야 하고 ServletException.IOException으로 예외 처리해야한다.
ex)
public class 클래스이름 extends HttpServlet{
      public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServeltException.IOException { ~~ }

}


●출력은 doGet, doPost의 두번째 파라미터 이용
ex)
PrintWriter writer = response.getWriter();
writer.print("~~~");
writer.printf("%d", a);


●서블릿 클래스 등록은 web.xml(배포생성자, deployment descriptor)에서 한다.
ex)
<web-app>
    <servlet>
          <servlet-name>임의의 서블릿 이름 A</setvlet-name>
          <servlet-class>실행시킬 클래스 이름</servlet-class>
    </servlet>
    <servlet-mapping>
          <servlet-name>임의의 서블릿 이름A</servlet-name>
          <url-pattern>/임의의 주소</url-pattern>                            //임의의 주소를 호출하면 그에 맞는  
    </servlet-mapping>                                                             //서블릿 이름을 찾아 클래스를 실행시킨다.
</web-app>



●위와 같이 서블릿 매핑하는 이유는 어플리케이션이 유연해지고, 보안상 사용자에게 서블릿 이름을 직접 보여주지 않기 위해서다.


●서블릿에 한글 포함된 HTML문서 출력
ex)
response.setConntentType("text/html; charset=euc-kr");    //이 코드를 삽입해야 한글이 출력된다.


●<form>을 통해 입력된 데이터는 doGet, doPost 메서드의 첫번째 파라미터인 HttpServletRequest타입의 파라미터에 대해 getParameter메서드로 호출한다.
ex)
String str = request.getParameter("A");    //A는 <input>요소의 name값이다.


●<form>을 통해 입력된 데이터는 기본적으로 get방식이다.

get방식은 주소 url뒤에 붙어서 전송된다.

url이 아닌 별도의 영역을 통해 전송하려면 method="post"를 추가해야한다.



●<form>에서 get으로 쓰면 서블릿 클래스에서 doGet를 쓰고
                   post로 쓰면 서블릿 클래스에서 doPost를 써야한다.



●doPost메서드에서 한글 데이터를 올바르게 가져오려면
HttpServletRequest파라미터에 대해 setCharacterEncodingㅡ를 호출한다.
ex)
request.setCharacterEncoding("euc-kr");     //getParameter보다 먼저 호출해야한다.


●라디오 버튼은 name과 value를 반드시 써야한다. name은 같은값, value는 다른값을 지정한다.
ex)
<input  type=radio  name=A  value=mail>
<input  type=radio  name=A  value=femail>


●<input>은 '/' 안 쓴다.


●체크박스는 name에 다른값을 지정한다.
ex)
<input  type=checkbox  name=a>
<input  type=checkbox  name=b>


●라디오버튼은 getParameter로 한번 호출한다.
체크박스는 각각 다 호출한다. 선택한 경우 on, 선택 안한 경우에는 null을 리턴한다.


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

jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
jsp 기본 문법 정리1  (0) 2012.03.11
Posted by -현's-

댓글을 달아 주세요


●DB연동 - 자바와 DBMS를 이어주는 JDBC 드라이버를 WEB-INF밑 lib에 넣어준다. 
ex)
Class.forName("con.mysql.jsbc.Driver");  //JDBC드라이버 로드."con.mysql~~"은 JDBC드라이버의 클래스 이름이다.
Connection conn = DriverManager.getConnection("jdbc:mysql://111.111.111.111:3306/db이름", "ID", "password");
conn.close();    //DB연결 끊기



●DB데이터 읽기
ex)
Statement stmt = conn.createStatement();        //conn은 getConnection메서드가 리턴한 Connection의 객체이다.
ResultSet rs = stmt.executeQuery("select * from 테이블;");
boolean exists = rs.next();       //next()는 DB로부터 읽은 데이터의 첫번째/다음행 위치로 이동. 이동한 위치에
                                           //데이터가 있을땐 true, 없을땐 false 리턴한다.
while (rs.next()){
   String code = rx.getString("code");
   int price = rs.getInt("price");
}
rs.close();
stmt.close();




●DB에 데이터 입력
ex)
Statement stmt = conn.createStatement();
int rowNum = stmt.executeUpdate("insert문:");
stmt.close();






●mvc 모델 1 - JSP페이지와 자바빈클래스를 이용한다. jsp페이지는 데이터 입,출력을 담당하고 자바빈클래스는
                     데이터 처리를 담당한다.
●mvc 모델 2 - JSP페이지와 자바빈클래스와 서블릿을 이용한다. jsp페이지는 데이터출력, 자바빈클래스는 서블릿
                     이 jsp페이지로 넘겨주는 데이터를 포장, 서블릿은 데이터의 입력과 처리를 담당한다.




●표준액션
<jsp:forward>
<jsp:include>
<jsp:useBean>
<jsp:getProperty>
<jsp:serProperty>
<jsp:plugin>
<jsp:scriptlet>
<jsp:expression>
<jsp:declaration>


●액션태그는 xml문법을 따르므로 단독태그의 경우 '/>'로 끝난다.



●<jsp:include page = "~~~"/>
- jsp페이지 안에 다른 웹자원을 포함시킴


●<jsp:forward page = "~~"/>
- jsp페이지를 실행하다가 다른 jsp 페이지로 제어를 넘기고자 할때 사용


●<jsp:useBean>
- 자바빈 객체를 만들어 사용하기 위해 쓰임
ex)
A a = new A();          //이 것을 태그로 구현한 것이 useBean 이다

<jsp:useBean id="a" class="A"/>     // 'a'는 객체명  'A'는 클래스명이다.



●<jsp:setProperty>
- 세터기능을 태그로 구현한 것이다.
ex)
a.setAge("27");

<jsp:setProperty name="a" property="age" value="27"/>


●<jsp:getProperty>
- 게터기능, 출력기능도 포함한다.
ex)
int age = a.getAge();

<jsp:getProperty name="a" property="age"/>


●<jsp:plugin type="applet" code="애플릿 클래스파일 이름.class" width="200" height="100" />


●<jsp:scriptlet>int cnt=0</jsp:scriptlet>
- 스크립트릿과 같은 역할하는 표준액션


●<jsp:expression>cnt</jsp:expression>
- 익스프레션과 같은 역할하는 표준액션



●<jsp:declaration>~~~</jsp:declaration>
- 선언부과 동일한 역할을 하는 표준액션


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

jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
jsp 기본 문법 정리1  (0) 2012.03.11
JSP 프로젝트 시작하기 & DB 연결하기  (0) 2012.03.10
Posted by -현's-

댓글을 달아 주세요