2013년 2월 28일 목요일

[ Jsp ][ Java ] 객체 (클래스) 파일 읽기 쓰기



객체 쓰기

쓸객체는 implements Serializable를 해야한다
예) public class chkChargeList implements Serializable   {};

chkChargeList list = new chkChargeList();
FileOutputStream outFile = new FileOutputStream(filename);
ObjectOutputStream outStream = new ObjectOutputStream( outFile );
outStream.writeObject (list);


객체 읽기
FileInputStream inFile = new FileInputStream (filename);
ObjectInputStream inStream = new ObjectInputStream (inFile);
chkChargeList test = (chkChargeList) inStream.readObject();
system.out.println(test.getBasicCharge());

2013년 2월 27일 수요일

[ Jsp ] 숫자 소수점 2자리


소수점 2자리만 표시하기

<%@ page import="java.text.*" %>

<% DecimalFormat df = new DecimalFormat("0.##");
double us = 3234.233
double mx = 5123123.223
 String using = df.format(us);
String max = df.format(mx);
out.print(using + "GB / " + max + "GB");
%>

[ Jsp ][ Java ] static final long 선언


아래와 같이 하니깐 eclipse에서 에러 메세지가 난다.
private static final long sizeUnit = 53687091200;

뒤에 L을 붙여주면 된다
private static final long sizeUnit = 53687091200L;

[ Jsp ][ Css ] 텍스트 90도 회전 CSS

텍스트 90도 회전 CSS


<div style='text-align:center;  color:rgb(204, 0, 0); opacity:1; font-size:35px; -webkit-transform:rotate(90deg);'>Text</div>

Text


[ jsp ][ 커스텀 액션 ] c : else


<c:if>를 사용하다보면
else를 쓰고 싶은데
없나보다
아래와 같이 하면 된다

<c:choose>
  <c:when test="${TEST=='1'}">
//TEST값이 1일때
       </c:when>
   <c:otherwise>
        //TEST값이 1이 아닐때
</c:otherwise>
</c:choose>

2013년 2월 22일 금요일

[ jsp ] request 파라미터 그대로 전달 ( input hidden 에 전부 넣기 )


a->b->c
a에서 넘어온 파라미터를 그대로 c 로 넘기고 싶었다.
넘어온걸 전부 input hidden 에 세팅

<%
request.setCharacterEncoding("UTF-8");
Enumeration enu = request.getParameterNames();
String strName;

while (enu .hasMoreElements()) {
 strName= (String) enu .nextElement();
 out.print("<input type='hidden' name='"+strName+"' value='" + request.getParameter(strName)+"'>");
}
%>

[ jsp ] request 전체 파라미터 가져오기


전체 파라미터 이름, 값 출력


<%@ page import="java.util.*"%>
<%
Enumeration enu = request.getParameterNames();
String strName;

while (enu .hasMoreElements()) {
strName= (String) enu .nextElement();
out.print(strName + ":");
  out.print(request.getParameter(strName)+"<BR>");
}
%>

[ jsp ][ 자바스크립트 ] 폼 입력 내용 체크

입력 내용에 빈 칸이 있나 없나 체크 하기



function onCheck(){
if (typeof (form) == "undefined") {
form = document.forms[0];
}
for (var i = 0; i < form.length; i++) {
val = form.elements[i].value;
if(val==""){
form.elements[i].focus();
return false;
}
}
document.form1.submit();
}

2013년 2월 20일 수요일

[ jsp ] 이미지 cache 문제 ( 이미지 갱신 문제 )

아이패드에서 이미지를 업로드 하니
이미지캐쉬가 남아서 이미지가 갱신이 안된다.
(이미지 이름을 같은 걸 써서)

1.서블릿쪽에서 랜덤 문자 넘겨준다

2.JSP파일 이미지링크뒤에 빨간부분 추가
   <img src ="1_1.jpg?${RANDOM_STRING}">

2013년 2월 19일 화요일

[ jsp ][ jQuery ] frame onload 스크립트


프레임 이름이 left일 경우
jQuery를 사용하면

$(window.parent.left.document).ready(function() {
    alert("left");
});

[ jsp ][ servlet ] getServletContext().getInitParameter() null

null 일경우

request.getSession().getServletContext().getInitParameter("PARAM");

원인과 이유는?
공부하자.

2013년 2월 15일 금요일

[ jsp ][ servlet ] ipad 업로드 파일 회전

아이패드에서 찍은 사진을 업로드 받은뒤 웹에 뿌려주면
아이패드에서 찍은 방향에 따라 사진이 회전되서 보인다.
아이패드에서 볼때는 제대로 보이는데..
그래서 어떤방향으로 찍더라도 웹에서도 윗방향이 정확히 보이게 하기위해
꼼수라해야할지 모르나 아래와 같은 방법으로 해결했다.

1.하기 사이트에서 라이브러리를 받아서 lib에 설치
http://code.google.com/p/metadata-extractor/downloads/detail?name=metadata-extractor-2.6.4.zip

2.화면에 뿌려주기전 서블렛에서 하기 함수에 파일을 넘겨주고
  (jpeg의 메타데이터를 뽑아서 orientation 부분을 체크)

private String getOriFromImage(File image) {
String retStr = "";

try {

Metadata metadata = JpegMetadataReader.readMetadata(image);

// iterate through metadata directories

Iterable<Directory> directories = metadata.getDirectories();
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
String strTagName = tag.getTagName();
if (strTagName.equals("Orientation")) {
String strDesc = tag.getDescription();
if (strDesc.contains("90")) {
retStr="90";
}else if(strDesc.contains("180")){
retStr="180";
}else if(strDesc.contains("270")){
retStr="270";
}
}
}
}
} catch (Exception e) {
                  //각자 알아서 처리
}
return retStr;
}
 넘겨받은 값을 request에 설정

3.넘겨받은 값을 이미지에 class 대응


<img src="이미지 패스"
id="IMG_${cnt}_${chkcnt}" width=10px class="rot${RESULT_LIST.imgClass[chkcnt-1][cnt-1]}">

4. CSS설정 파일은 하기 참조
http://soatojsp.blogspot.jp/2013/02/jsp-css.html

5. 이렇게 하면, ipad에서도 다시 한번 돌아간다는 문제 점이 있는데 그건 서블릿단에서 아이패드가 아닌 경우에만
클래스명을 사용하도록 했다.

[ jsp ][ java ] 폴더 사이즈 계산


파일패스 넣어주면 폴더 사이즈를 돌려준다.

package Common;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.channels.FileChannel;

public class chkFolderSize{
// Member Variables
private long dFolderSize;
private long NG=-1;
// Constructor
public chkFolderSize() {
dFolderSize = 0;
}
//calculate folder size
private void calcSize(File tFolder){
File[] fList = tFolder.listFiles();
for(int i=0; i < fList.length; i++){
if(fList[i].isFile()){
dFolderSize += fList[i].length();
}else{
calcSize(fList[i]);
}
}
}
// return folder size
public long getFolderSize(String fPath){
long retVal;
File tFolder = new File(fPath);
if(tFolder.exists()&&tFolder.isDirectory()){
calcSize(tFolder);
retVal = dFolderSize;
}else{
retVal = NG;
}
return retVal;
}

}

2013년 2월 14일 목요일

[ Jsp ][ jQuery ] 아이폰, 안드로이드폰 탐지 페이지 분기 시키기

<script type="text/javascript">
$(document).ready(function(){
if($(window).width() < 480){
window.location = "http://mobile.yoursite.com&quot;
}
});
</script>

참고사이트
http://css-tricks.com/forums/discussion/13960/detect-mobile-and-redirect/p1

[ jsp ][ java ] 이미지 회전


90도 회전 시키기 샘플, 화질이 조금 떨어 지는 듯

BufferedImage oldImage = ImageIO.read(new FileInputStream(oldFile));

BufferedImage newImage = new                                   BufferedImage(oldImage.getHeight(),oldImage.getWidth(), oldImage.getType());

Graphics2D graphics = (Graphics2D) newImage.getGraphics();

graphics.rotate(Math.toRadians(90), newImage.getWidth() / 2, newImage.getHeight() / 2);

graphics.translate((newImage.getWidth() - oldImage.getWidth()) / 2, (newImage.getHeight() - oldImage.getHeight()) / 2);

graphics.drawImage(oldImage, 0, 0, oldImage.getWidth(), oldImage.getHeight(), null);

ImageIO.write(newImage, "JPG", new FileOutputStream(newFile));

[ Jsp ] 이미지 회전 css


img.rot{
-webkit-transform: rotate(0deg);
     -moz-transform: rotate(0deg);
     -o-transform: rotate(0deg);
     transform: rotate(00deg);
     filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0);
}
img.rot90{
-webkit-transform: rotate(90deg);
     -moz-transform: rotate(90deg);
     -o-transform: rotate(90deg);
     transform: rotate(90deg);
     filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
}
img.rot180{
-webkit-transform: rotate(180deg);
     -moz-transform: rotate(180deg);
     -o-transform: rotate(180deg);
     transform: rotate(180deg);
     filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
}
img.rot270{
-webkit-transform: rotate(270deg);
     -moz-transform: rotate(270deg);
     -o-transform: rotate(270deg);
     transform: rotate(270deg);
     filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}

[ Jsp ] 톰캣 기동시 에러 메세지 트러블슈팅

eclipse tomcat 구동시에 아래 에러 떴다

The web application [/ProjectName] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

구글링해보니 무시하란다.톰캣6.0.24버전이상이라면.

2013년 2월 13일 수요일

[ Jsp ][ jQuery ] 이미지 넓이 조정 / 이미지 표 넓이 맞추기



표안에 이미지를 넣었는데
유독 explorer에서만 이미지가 표자체 넓이를 넓혀서

jQuery부분
<script src="COMMON/jQuery.js" type="text/javascript"></script>
<SCRIPT TYPE="TEXT/JAVASCRIPT">
$(document).ready(function() {
for(var i = 1; i<10; i++){
for ( var j = 1; j < 10; j++) {
var tdWidth=0;
var imgWidth=0;
var id = "TD_" + i+"_"+j;
tdWidth = $("#" + id).width();
var imgid = "IMG_" + i+"_"+j;
imgWidth = $("#" + imgid).width();
if( tdWidth > imgWidth ){
$("#" + imgid).width(tdWidth);
}
}
}
});
<script>

이미지 부분 width를 10px주고 페이지 로드시에 넓이 조정하게 했다.

<img src="/SAVEIMG/<%=session.getAttribute("APPNAME").toString()%>/${LOT_IMAGE}/${cnt}_${chkcnt}.${RESULT_LIST.chk[chkcnt-1][cnt-1]}"
id="IMG_${cnt}_${chkcnt}" width=10px>


2013년 2월 12일 화요일

[Jsp] Jsp 기본 - 구성요소


JSP 프로그램을 구성하는 각 구성 요소의 개요.

지시문 <% @ ~ %>
JSP 프로그램의 특성을 정의합니다. 인코딩, Content-type 클래스 가져 오기, 태그 라이브러리의 지정, 외부 파일 포함 지정 등을 실시합니다.

선언 : <%! ~ %>
JSP 프로그램에서 사용하는 변수, 메소드를 선언합니다.

스크립틀릿 : <% %>
JSP 태그만으로는 설명 할 수없는 프로그램에 대해이 스크립트 렛에서 자유로운 Java 코드를 작성합니다.

식 : <% = ~ %>
변수, 산술 식, 반환하는 메서드 등을 작성하고 실행 결과를 출력합니다.

액션 : <jsp:~ />
JSP는 JSP 프로그램에서 특정 동작을 태그가 어떤 정의되어 있습니다. 요청을 전송하는 <jsp:forward> 태그, JavaBeans를 사용하는 <jsp:useBean> 태그 등이 있습니다.

코멘트 : <% - ~ - %>
JSP 프로그램의 주석을합니다. HTML의 의견과 Java 의견을 중첩 할 수 있지만 같은 JSP의 코멘트를 중첩 할 수 없습니다.

2013년 2월 8일 금요일

[Jsp] Jsp 기본 - Jsp란


Java Server Page의 약자.

다른 비슷한 기술로 ASP, PHP 나.

외관은 스크립트 언어처럼 보이지만, 실제로는 Java Servlet의

HttpServlet의 서브 클래스로 동작한다.

JSP가 페이지를 처음 방문하면

JSP 소스 코드를 서블릿 컨테이너가 Java 소스 코드로 변환하고

컴파일하고 실행된다.

2013년 2월 7일 목요일

[Jsp][자바스크립트] 일정 시간 (5초) 후 페이지 이동


<%@page contentType="text/html; charset=UTF-8"%>
<html>
<!--  STYLE FILE INCLUDE -->
<script language="JavaScript">
function next()
{location = "index.jsp";}
</script>
<head>
<title>세션에러/title>
</head>
<body onLoad="setTimeout('next()', 5000)">
<h1>로그인 세션가 끊겼슴다</h1>
5초후 이동합니다.
</body>
</html>

2013년 2월 6일 수요일

[Jsp][servlet] 서블렛 필터 만들기

필터 만들기
예> 페이지 이동시 세션 검사

package Common;

public class chkSessionCheckFilter implements Filter {
public void init(FilterConfig config) throws ServletException {

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;

HttpSession session = httpRequest.getSession();
                
                //세션 검사
chain.doFilter(request, response);

}

public void destroy() {

}
}

web.xml에 다음과 같이 추가하면 chkTestRunListServlet가기전에 요 필터를 한번 걸친다


<filter>
<filter-name>session-checker</filter-name>
<filter-class>Common.chkSessionCheckFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>session-checker</filter-name>
<servlet-name>chkTestRunListServlet</servlet-name>
        </filter-mapping>





[Jsp] 세션 request 로 설정 사용


<%
         request.setAttribute("TASK", session.getAttribute("TASK").toString());
%>

사용시
<c:if test="${requestScope.TASK=='RUN' }">