달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

text-transform 속성은 영어 대문자와 소문자를 서로 전환시킬 수 있는 속성입니다. 한글에는 쓰일 일이 없겠지만 영문에서는 종종 사용됩니다. 문장 전체를 소문자나 대문자로 바꾸는 방법과 단락의 첫 글자만 대문자를 바꿀 수도 있습니다. 그럼 샘플을 통해 어떻게 적용되는지 알아 보도록 하겠습니다.

 

▼ text-transform 속성에 값은 4가지가 있습니다. 영어 단어가 의미하는 대로 소문자와 대문자로 변경하는 속성값과 단어에서 첫 글자만 변경하는 capitalize 값이 있습니다.

 

l  none : 기본값이며 원본 그대로 유지한다.

l  capitalize : 단어의 첫 번째 문자를 대문자로 변경한다.

l  uppercase : 적용한 모든 문자를 대문자로 바꾼다.

l  lowercase : 적용한 모든 문자를 소문자로 바꾼다.

 

▼ 샘플 소스는 4가지 text-transform 속성에 값을 적용한 것입니다. 결과 화면을 보시면 좀더 쉽게 이해가 가실 겁니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE HTML>
<html>
<head>
<meta charset="euc-kr">
<title>CSS</title>
<style type="text/css">
    body {
        background-color: #e7e7e7;
        font-size:14pt;
        width: 500px;
    }
    p { background-color: #d4d4f2;
        border-style: solid;
        border-width: 1px;
        padding: 5px;
    }
    .texttransform1{ text-transform: none; }
    .texttransform2{ text-transform: capitalize; }
    .texttransform3{ text-transform: uppercase; }
    .texttransform4{ text-transform: lowercase; }
</style>
</head>
<body>
    <code>text-transform: none</code>
    <p class="texttransform1">
    The current push to implement labor market</p>
     
    <code>text-transform: capitalize</code>
    <p class="texttransform2">
    The current push to implement labor market</p>
     
    <code>text-transform: uppercase</code>
    <p class="texttransform3">
    The current push to implement labor market</p>
     
    <code>text-transform: lowercase</code>
    <p class="texttransform4">
    The current push to implement labor market</p>
</body>
</html>

Posted by 녹두장군

Posted by 한설림
|

JSP 개발 디렉토리와 서비스 디렉토리의 구조의 차이


이클립스를 사용해서 개발을 하는 것은 기존 텍스트 에디터를 이용해서 작업하는 것과 많은 차이를 갖고 있다. 특히 웹 애플리케이션 개발에서는 더 많은 차이가 있게 되는데, 우선 언급해 볼 것이 서비스에 구성된 디렉토리와 개발에 사용되는 디렉토리의 차이점이다.

웹 애플리케이션은 서블릿 스펙에 따라서 디렉토리가 정해진 규칙을 갖고 있다. 

/WEB-INF/ 브라우저를 통해서 접근이 불가능한 웹 애플리케이션 핵심정보들을 포함하고 있는 디렉토리
/WEB-INF/classes/ 패키지에 따른 디렉토리별 class파일과 properties 파일이 위치하는 곳
/WEB-INF/lib/ 웹 애플리케이션에서 사용되는 jar 파일이 존재하는 곳
/META-INF/context.xml 톰캣에서 사용되는 manager를 통한 배포용 웹 애플리케이션 Context정보 파일
브라우저를 통해서 접근 가능한 리소스들은 그 외의 디렉토리에 놓으면 된다.
특히 브라우저의 JVM 위에서 돌아가는 애플릿 class와 관련 jar 들은 /WEB-INF/ 밖에 위치해야 한다.
이 디렉토리들을 묶어서 Context 라고 얘기한다.

서비스와 관련된 디렉토리 구조가 위와 같고, 개발용 디렉토리 구조는 java 파일이라는 특징 때문에 다음과 같이 구성한다.

/src 패키지에 따른 디렉토리별 java 파일과 properties 파일이 존재하는 곳
/WebContent/ 앞에 언급한 브라우저를 통해서 접근 가능한 리소스들. 웹 애플리케이션의 컨텍스트 루트 디렉토리에 해당.
/WebContent/WEB-INF/ 앞에 언급했던 /WEB-INF/ 디렉토리와 같은 성격
/build/classes  /src 하위 자바파일의 컴파일된 class 들이 놓이는 곳. properties 파일은 자동 복사되는 곳.


개발 디렉토리와 WAS의 서비스되는 디렉토리의 매핑 즉 자연스런 연결은 빌드 툴인 ant를 통하거나 Eclipse같은 IDE에서 자동으로 해준다.

이클립스의 경우 Servers 라는 프로젝트가 웹 프로젝트와 별개로 생성이 된다. 여기에서 설정되는 서버의 세팅은 기본적으로 설치된 세팅과 별도로 운영된다. 즉 톰캣이 설치된 디렉토리의 conf 에 있는 설정과는 별개로 Servers하위의 서버별 server.xml 의 파일에 설정된 내용으로 동작이 된다는 뜻이다.
<%= request.getRealPath("/") %> 를 통해서 확인해 보면 이클립스에서 운영하는 디렉토리가 완전히 엉뚱한 곳에 존재함을 알 수 있다. 웹 프로젝트에서 파일을 변경하면 자동으로 파일이 해당 위치로 복사된다.


Posted by 한설림
|

import java.io.*;
import java.net.URLEncoder;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FilenameUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

 

@Controller
public class Test {

 @RequestMapping("/fileView.do")
 public void fileDownLoad(HttpServletRequest request ,HttpServletResponse response) throws IOException {

  System.out.println(request.getParameter("file_id"));
  String getfile = "C:/DATA001/attachFiles/201610/Koala[20161018010740425].jpg";
  //String path = "C:/DATA001/attachFiles/201610/"; //paramMap.get("filePath"); //full경로
     //String fileName =  "Koala[20161018010740425].jpg"; //paramMap.get("fileName"); //파일명
     File f = new File("C:/DATA001/attachFiles/201610/Koala[20161018010740425].jpg");
     String path = f.getParent().toString();
     String fileName = f.getName();
     System.out.println("파일크기 ?" + f.length());
     FilenameUtils.getExtension(getfile);
     System.out.println("path : " + path);
     System.out.println("fileName : " + fileName);
     File file = new File(path+"/"+fileName);
     FileInputStream fileInputStream = null;
     ServletOutputStream servletOutputStream = null;

     try{
         String downName = null;
         String browser = request.getHeader("User-Agent");
         //파일 인코딩
         if(browser.contains("MSIE") || browser.contains("Trident") || browser.contains("Chrome")){//브라우저 확인 파일명 encode

             downName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\+", "%20");

         }else{

             downName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");

         }

         response.setHeader("Content-Disposition","attachment;filename=\"" + downName+"\"");
         response.setContentType("application/octer-stream");
         response.setHeader("Content-Transfer-Encoding", "binary;");

         fileInputStream = new FileInputStream(file);
         servletOutputStream = response.getOutputStream();

         byte b [] = new byte[1024];
         int data = 0;

         while((data=(fileInputStream.read(b, 0, b.length))) != -1){

             servletOutputStream.write(b, 0, data);

         }

         servletOutputStream.flush();//출력

     }catch (Exception e) {
         e.printStackTrace();
     }finally{
         if(servletOutputStream!=null){
             try{
                 servletOutputStream.close();
             }catch (IOException e){
                 e.printStackTrace();
             }
         }
         if(fileInputStream!=null){
             try{
                 fileInputStream.close();
             }catch (IOException e){
                 e.printStackTrace();
             }
         }
     }
 }
}

 

Posted by 한설림
|