pageContext.getServletContext().getRealPath("/")

 

'JAVA' 카테고리의 다른 글

[JAVA] RequestContextListene request 반환  (0) 2022.05.24
[JAVA] replaceAll 정규식  (0) 2022.05.23
[JAVA] pdf를 이미지로 만들기 (PDFRenderer.jar)  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

web.xml 등록

<listener>
	<!-- 
		현재 요청되어진 HttpServletRequest 객체의 
		레퍼런스정보를 저장하는 기능을 제공한다. 
			
		자바 소스 사용 예) : 
		ServletRequestAttributes attr = 
			(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();
					
		HttpServletRequest = attr.getRequest();
	-->
	<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

'JAVA' 카테고리의 다른 글

[JAVA] 간단한 RootPath 얻기  (448) 2022.12.15
[JAVA] replaceAll 정규식  (0) 2022.05.23
[JAVA] pdf를 이미지로 만들기 (PDFRenderer.jar)  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] replaceAll 정규식

JAVA 2022. 5. 23. 17:30
public String replaceStringAll(String source, String regex, String replacement) { 

	if(source == null || regex == null || replacement == null){ 
		return null; 
	}
    
    regex = regex.replaceAll("\\.", "\\\\."); 
    regex = regex.replaceAll("\\*", "\\\\*"); 
    regex = regex.replaceAll("\\?", "\\\\?"); 
    regex = regex.replaceAll("\\+", "\\\\+"); 
    regex = regex.replaceAll("\\[", "\\\\["); 
    regex = regex.replaceAll("\\{", "\\\\{"); 
    regex = regex.replaceAll("\\(", "\\\\("); 
    regex = regex.replaceAll("\\)", "\\\\)"); 
    regex = regex.replaceAll("\\^", "\\\\^"); 
    regex = regex.replaceAll("\\|", "\\\\|"); 
    regex = regex.replaceAll("\\$", "\\\\\\$"); 
    
    return source.replaceAll(regex, replacement); 
}

'JAVA' 카테고리의 다른 글

[JAVA] 간단한 RootPath 얻기  (448) 2022.12.15
[JAVA] RequestContextListene request 반환  (0) 2022.05.24
[JAVA] pdf를 이미지로 만들기 (PDFRenderer.jar)  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

PDFRenderer는 pdf파일을 page단위로 java.awt.Image 개체로 만듭니다.

package com.pdfImg.pdfTest;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.imageio.ImageIO;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class PdfImage {
	public static void main(String args[]) throws IOException{
    
    	//load a pdf from a byte buffer
        File file = new File("c:\\User\\test.pdf");
        RandomAccessFile raf = new RandomAccessFile(file, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
        PDFFile pdffile = new PDFFile(buf);
        
        // draw the first page to an image
        PDFPage page = pdffile.getPage(2);
        
        //get the width and height for the doc at the default zoom 
        Rectangle rect = new Rectangle(0,0,(int)page.getBBox().getWidth(),(int)page.getBBox().getHeight());
        
        //generate the image
        Image image = page.getImage(
        	rect.width, rect.height, //width & height
                rect, // clip rect
                null, // null for the ImageObserver
                true, // fill background with white
                true  // block until drawing is done
		);
        
        int w = image.getWidth(null);
        int h = image.getHeight(null);
        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = bi.createGraphics();
        g2.drawImage(image, 0, 0, null);
        g2.dispose();
        
        try{
        	ImageIO.write(bi, "jpg", new File("c:\\User\\imagePdfTest.jpg"));
        }catch(IOException ioe){
        	System.out.println("write: " + ioe.getMessage());
        }
	}        
}

---------------- 간략한 소스 설명 ----------------
// draw the first page to an image
PDFPage page = pdffile.getPage(2);

위의 코드가 pdf의 특정 page를 선택하는 부분입니다. 2페이지를 선택했습니다.

pdffile.getNumPages();
위의 코드로 pdf파일의 총 페이지 수를 알 수 있습니다.

총 페이지 수로 for문을 돌리면 모든 페이지를 이미지로 만들 수 있을 것 입니다.

'JAVA' 카테고리의 다른 글

[JAVA] RequestContextListene request 반환  (0) 2022.05.24
[JAVA] replaceAll 정규식  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
[JAVA] 휴일 알아내기  (0) 2021.06.25
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] PathVariable

JAVA 2022. 5. 23. 15:36
@RequestMapping("/{siteTp}/test/selectTestList.do")
public String selectTestList(HttpServletResponse response,HttpServletRequest request,
@PathVariable("siteTp") String siteTp,ModelMap model) throws Exception{

tmpPage = "/"+siteTp+"/test/testList";

// @PathVariable 을 이용하여 REST 방식의 url을 적용

//Rest 방식으로 url을 지정할 경우에

//게시판의 경우 http://~/board/[관리자ID]/[게시물ID] 호출하면 내용을 볼 수 있도록 될 것입니다.

//컨텐츠 관리의 경우 http://~/contents/[컨텐츠ID] 호출하면 내용을 볼 수 있도록 될 것입니다.

수정된 소스 부분

1. spring-context.xml 추가

<!-- 어노테이션 스캔 설정-->
<context:component-scan base-package="*" />

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:alwaysUseFullPath="true" />

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" p:alwaysUseFullPath="true" />

2. springmvc-context.xml

// 인터셉터 추가

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
	<property name="alwaysUseFullPath" value="true" />
	<property name="interceptors">
		<list>
			<ref bean="localeChangeInterceptor" />
		</list>
	</property>
</bean>
 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
	<property name="alwaysUseFullPath" value="true" />
</bean> 

3. web.xml 추가

<filter-mapping>
	<filter-name>authenticationFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>/board/*</url-pattern>
</filter-mapping>

<!-- 스프링 mvc 적용 URL -->
<servlet-mapping>
	<servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.static</url-pattern>
    <url-pattern>/board/*</url-pattern>
</servlet-mapping>

4. @Controller (kr.test.you.board.web.BoardCtrl) 함수

@RequestMapping(value = "/board/view/{manageIdx}/{boardIdx}")
public ModelAndView boardView1(@PathVariable("manageIdx") String manageIdx, @PathVariable("boardIdx") String boardIdx, ModelMap model) throws Exception {

	Map<String, Object> resultMap = new HashMap<String, Object>();

    resultMap.put("boardIdx", boardIdx);

	resultMap.put("manageIdx", manageIdx);
    
    String resultURL = "board/view";
    
    return new ModelAndView(resultURL, "resultMap", resultMap);
}
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] Object Array

JAVA 2022. 5. 23. 14:21
Object params[] = {
	StringUtils.nvl(parameters.print("cc_yn"), "n"),
    StringUtils.nvl(parameters.print("aveeno_yn"), "n"),
    StringUtils.nvl(parameters.print("johnsons_yn"), "n"),

    StringUtils.nvl(parameters.print("listerine_yn"), "n"),
    StringUtils.nvl(parameters.print("nizoral_yn"), "n"),
    StringUtils.nvl(parameters.print("rogaine_yn"), "n"),
    StringUtils.nvl(parameters.print("bandaid_yn"), "n"),

    StringUtils.nvl(parameters.print("nicorette_yn"), "n"),
    StringUtils.nvl(parameters.print("neutrogena_yn"), "n"),

    sessionEntity.print("id")
};
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] 휴일 알아내기

JAVA 2021. 6. 25. 13:41

package workingDay.check;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import com.ibm.icu.util.ChineseCalendar;

public class workingDayCheck {

public static void main(String args[]){
System.out.println("# START #");

int chkDayInt = checkDateStr("20130209");
System.out.println(chkDayInt);
chkDayInt = checkDateStr("20130210");
System.out.println(chkDayInt);
chkDayInt = checkDateStr("20130211");
System.out.println(chkDayInt);
chkDayInt = checkDateStr("20130313");
System.out.println(chkDayInt);

System.out.println("# END #");
}


private static int checkDateStr(String chkStr){

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
int chkDay = 9;
Date chkDate = null;
try {
chkDate = sdf.parse(chkStr);

} catch (ParseException e) {
e.printStackTrace();
System.out.println("ParseException !");
}


/**
법정공휴일
1월 1일 (신정)
2월 9일 (구정 휴일)
2월 10일 (구정) (음력 1월 1일)
2월 11일 (구정 휴일)
3월 1일 (3.1절)
5월 5일 (어린이 날)
5월 17일 (석자탄실일) (음력 4월 8일)
6월 6일 (현충일)
8월 15일 (광복절)
9월 18일 (추석)
9월 19일 (추석) (음력 8월 15일)
9월 20일 (추석)
10월 3일 (개천절)
10월 9일 (한글날)
12월 25일 (크리스마스)
**/
ArrayList chkArray = new ArrayList();
/*양력 법정공휴일*/
chkArray.add("0101");
chkArray.add("0301");
chkArray.add("0505");
chkArray.add("0606");
chkArray.add("0606");
chkArray.add("0815");
chkArray.add("1003");
chkArray.add("1009");
chkArray.add("1225");

String restChkStr = chkStr.substring(4);
for(String chkTemp : chkArray){
if(restChkStr.equals(chkTemp)){
System.out.println("법정공휴일 " + chkTemp);
return 0;
}
}

/*음력 법정공휴일 : 구정, 추석*/
restChkStr = chkStr;
String lunarStr = toLunar(restChkStr);

if(lunarStr.substring(4).equals("0101")){
System.out.println("법정공휴일 구정");
return 0;
}else if(lunarStr.substring(4).equals("0815")){
System.out.println("법정공휴일 추석");
return 0;
}else if(lunarStr.substring(4).equals("0408")){
System.out.println("법정공휴일 추석");
return 0;
}

lunarStr = toLunar(sdf.format((new Date(chkDate.getTime() - 24*60*60*1000))));

if(lunarStr.substring(4).equals("0101")){
System.out.println("법정공휴일 구정 +1");
return 0;
}else if(lunarStr.substring(4).equals("0815")){
System.out.println("법정공휴일 추석 +1");
return 0;
}

lunarStr = toLunar(sdf.format((new Date(chkDate.getTime() + 24*60*60*1000))));

if(lunarStr.substring(4).equals("0101")){
System.out.println("법정공휴일 구정 -1");
return 0;
}else if(lunarStr.substring(4).equals("0815")){
System.out.println("법정공휴일 추석 -1");
return 0;
}


if(chkDate != null){
chkDay = chkDate.getDay();

System.out.println("(0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday)");
System.out.println(chkDay);

/* (0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday) */
if(chkDay == 0 || chkDay == 6){
System.out.println("주말");
return 1;
}else{
System.out.println("평일");
return 9;
}
}else{
System.out.println("평일");
return 9;
}

}

public static String toLunar( String yyyymmdd ) {
        if(    yyyymmdd == null )
                return "" ;

        Calendar cal ;
        ChineseCalendar cc ;

        // default TimeZone, Locale 을 사용..
        cal = Calendar.getInstance() ;
        cc = new ChineseCalendar();

        String date = yyyymmdd.trim() ;
        if( date.length() != 8 ) {
                if( date.length() == 4 )
                        date = date + "0101" ;
                else if( date.length() == 6 )
                        date = date + "01" ;
                else if( date.length() > 8 )
                        date = date.substring(0,8) ;
                else
                        return "" ;
        }

        cal.set( Calendar.YEAR, Integer.parseInt(date.substring(0,4)) ) ;
        cal.set( Calendar.MONTH, Integer.parseInt(date.substring(4,6))-1 ) ;
        cal.set( Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(6)) ) ;

        cc.setTimeInMillis( cal.getTimeInMillis() ) ;

        // ChinessCalendar.YEAR 는 1~60 까지의 값만 가지고 ,

        // ChinessCalendar.EXTENDED_YEAR 는 Calendar.YEAR 값과 2637 만큼의 차이를 가집니다.
        int y = cc.get(ChineseCalendar.EXTENDED_YEAR)-2637 ;
        int m = cc.get(ChineseCalendar.MONTH)+1 ;
        int d = cc.get(ChineseCalendar.DAY_OF_MONTH) ;

        StringBuffer ret = new StringBuffer() ;
        if( y < 1000 )          ret.append( "0" ) ;
        else if( y < 100 )      ret.append( "00" ) ;
        else if( y < 10 )       ret.append( "000" ) ;
        ret.append( y ) ;

        if( m < 10 ) ret.append( "0" ) ;
        ret.append( m ) ;

        if( d < 10 ) ret.append( "0" ) ;
        ret.append( d ) ;

        return ret.toString() ;
}

public static String fromLunar( String yyyymmdd )
    {

        Calendar cal ;
        ChineseCalendar cc ;

        // default TimeZone, Locale 을 사용..
        cal = Calendar.getInstance() ;
        cc = new ChineseCalendar();
        
        if (yyyymmdd == null ) return "" ;

        String date = yyyymmdd.trim() ;

        if( date.length() != 8 ) {
                if( date.length() == 4 )
                        date = date + "0101" ;
                else if( date.length() == 6 )
                        date = date + "01" ;
                else if( date.length() > 8 )
                        date = date.substring(0,8) ;
                else
                        return "" ;
        }

        cc.set( ChineseCalendar.EXTENDED_YEAR, Integer.parseInt(date.substring(0,4))+2637 ) ;
        cc.set( ChineseCalendar.MONTH, Integer.parseInt(date.substring(4,6))-1 ) ;
        cc.set( ChineseCalendar.DAY_OF_MONTH, Integer.parseInt(date.substring(6)) ) ;

        cal.setTimeInMillis( cc.getTimeInMillis() ) ;

        int y = cal.get(Calendar.YEAR) ;
        int m = cal.get(Calendar.MONTH)+1 ;
        int d = cal.get(Calendar.DAY_OF_MONTH) ;

        StringBuffer ret = new StringBuffer() ;
        if( y < 1000 )          ret.append( "0" ) ;
        else if( y < 100 )      ret.append( "00" ) ;
        else if( y < 10 )       ret.append( "000" ) ;
        ret.append( y ) ;

        if( m < 10 ) ret.append( "0" );
        ret.append( m ) ;

        if( d < 10 ) ret.append( "0" );
        ret.append( d ) ;

        return ret.toString() ;
}
}

'JAVA' 카테고리의 다른 글

[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
multipart/form-data 인지 체크, MultipartRequestWrapper 상속해서 수정  (2) 2019.04.09
multipart 파일체크  (4) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart/form-data 인지 체크 

MultipartRequestWrapper 상속해서 수정




1. multipart/form-data 인지 체크하는 방법


request.getContentType()).toLowerCase()).startsWith("multipart/form-data")



2.MultipartRequestWrapper 상속해서 수정

- 단 파일 업로드시 null로 체크 되버려서 사용하지는 말고 참고용으로만 



package kr.co.test.util;


import java.io.IOException;

import java.util.HashMap;


import javax.servlet.http.HttpServletRequest;


import org.apache.struts.upload.MultipartRequestWrapper;


import com.oreilly.servlet.multipart.MultipartParser;

import com.oreilly.servlet.multipart.ParamPart;

import com.oreilly.servlet.multipart.Part;


public class SecurityMultipartRequestWrapper extends MultipartRequestWrapper {


private MultipartParser mp = null ; 

public SecurityMultipartRequestWrapper(HttpServletRequest request) {

super(request);

try {

mp = new MultipartParser((HttpServletRequest)request, 1000000);

parameters = new HashMap();

Part part ;

String name ="", value="";

String[] values = null;

    while ( ( part = mp.readNextPart() ) != null ) { 

    name = part.getName() ; 


    if ( part.isParam() ) { 

    ParamPart paramPart = (ParamPart) part ; 

    if (parameters.get(name)!=null){

    if (parameters.get(name).getClass().equals(String[].class)){

    String[] temp = (String[])parameters.get(name);

    String newValue[] = new String[temp.length + 1];

   

            System.arraycopy(temp, 0, newValue, 0, temp.length);

            newValue[temp.length] = paramPart.getStringValue();

            parameters.put(name, newValue);

    } else {

    String newValue[] = new String[2];

    newValue[0] = (String) parameters.get(name);

    newValue[1] = paramPart.getStringValue();

    parameters.put(name, newValue);

    }

    } else {

    parameters.put(name, paramPart.getStringValue());

    }

    }

    }

} catch (IOException e) {

e.printStackTrace();

}

}


@Override

    public String getParameter(String name)

    {

String value = null;

        if(parameters.get(name).getClass().equals(String[].class))

        {

            String mValue[] = (String[])parameters.get(name);

            if(mValue != null && mValue.length > 0)

                value = mValue[0];

        } else {

        value = (String)parameters.get(name);

        }

        return value.replaceAll("a", "");

    }

}

'JAVA' 카테고리의 다른 글

[JAVA] Object Array  (0) 2022.05.23
[JAVA] 휴일 알아내기  (0) 2021.06.25
multipart 파일체크  (4) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 파일체크

JAVA 2019. 4. 9. 16:04

multipart 파일체크



if(isFileUploadRequest((HttpServletRequest)request)){

HttpServletRequest httpServletRequest = new HttpServletRequestWrapper((HttpServletRequest)request);//(HttpServletRequest)request;

String flag ="T";

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(50 * 1024);

factory.setRepository(new File("/"));

   ServletFileUpload upload = new ServletFileUpload(factory);

   ArrayList fileItems;

try {

fileItems = (ArrayList)upload.parseRequest(httpServletRequest);

 Iterator i = fileItems.iterator();

 while ( i.hasNext () ) {

     FileItem fi = (FileItem)i.next();

     if ( !fi.isFormField () ){

         if (fi.getName().indexOf(".")>-1){

if (!getExtCheck(fi.getName(), writeExt)){

flag ="F";

break;

}

 }

     }

 }

 

} catch (FileUploadException e) {

       e.printStackTrace();

   }

 

   //System.out.println(request.getAttribute("flag").toString());

 if (flag.equals("F")){

        response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<html>");

out.println("<head>");

out.println("<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">");

out.println("<script type=\"text/javascript\">");

out.println("alert('등록하실수 없는 확장자입니다.');");

out.println("history.back();");

out.println("</script>");

out.println("</head>");

out.println("</html>");

out.flush();

out.close();

return;

aChain.doFilter(request, response);

}else{

aChain.doFilter(request, response);

}




  public boolean getExtCheck(String value, String writeExt){

   String[] file = value.toLowerCase().split("\\."); 

   String ext = file[file.length-1];

   if (ext!=null && ext.length()>0 && writeExt.indexOf(ext)==-1){

   return false;

   }

   return true;

  }

'JAVA' 카테고리의 다른 글

[JAVA] 휴일 알아내기  (0) 2021.06.25
multipart/form-data 인지 체크, MultipartRequestWrapper 상속해서 수정  (2) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 파라미터 받기

JAVA 2019. 2. 28. 18:01

multipart 파라미터 받기



// MultipartParser를 이용하여 parameter를 얻어온다! 


MultipartParser mp = new MultipartParser((HttpServletRequest)request, 1000000) ; 


Part part ; 

String name = "" , value="";

int i = 0;


while ( ( part = mp.readNextPart() ) != null ) { 

name = part.getName() ; 


if ( part.isParam() ) {

ParamPart paramPart = (ParamPart) part ; 

value = paramPart.getStringValue() ; 

System.out.println("param[" + i + "] : name = " + name + "; value = " + value) ; 

i++;

}

'JAVA' 카테고리의 다른 글

multipart/form-data 인지 체크, MultipartRequestWrapper 상속해서 수정  (2) 2019.04.09
multipart 파일체크  (4) 2019.04.09
multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
multipart 리졸버  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,