'분류 전체보기'에 해당되는 글 117건

multipart 클래스 사용 예제



<!-- http://servlets.com/cos/ 접속 -> cos-26Dec2008.zip 파일 다운로드 (파일은 바뀔 수 있음) -->


<!-- WEB-INF -> lib 폴더에 추가 -->


<!-- fileSelect.jsp -->


<?xml version="1.0" encoding="EUC-KR" ?>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />

<title>파일 업로드예제 폼</title>

</head>

<body>

<h2>파일을 업로드예제를 시작 합니다.</h2>

<form action="upPro.jsp" name="fileUp" method="post" enctype="multipart/form-data">

<table border="1">

<tr>

<td>작성자 : </td>

     <td><input type="text" name="user" /></td>

</tr>

<tr>

<td>제     목 : </td>

     <td><input type="text" name="title" /></td>

</tr>

<tr>

<td>파     일 : </td>

     <td><input type="file" name="uploadFile" /></td>

</tr>

<tr>

<td colspan="2" align="center">

         <input type="submit" value="전송" />

     </td>

</tr>

</table>

</form>

</body>

</html>




<!-- fileupload.jsp -->


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

<%@ page import="com.oreilly.servlet.*, com.oreilly.servlet.multipart.*" %>

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

<%

// 먼저 파일이 저장될 서버의 실제 폴더 경로를 구합니다.. ServletContext 객체를 이용합니다.

String realFolder = "";

// webApps 상의 폴더명입니다.. 이 폴더에 해당하는 실제 경로를 찾아서  realFolder 로 매핑시킵니다.

String saveFolder = "fileSave";

String charset = "euc-kr";

int maxSize = 1024 * 1024 * 1024;


realFolder = this.getServletContext().getRealPath(saveFolder);

out.println("실제 경로는 다음과 같은 위치 입니다. : " + realFolder);


try {

// 이제부터 multipartRequest 객체를 이용해서 파일을 업로드 합니다.

MultipartRequest multi = null;

multi = new MultipartRequest(request, realFolder, maxSize, charset, new DefaultFileRenamePolicy());

// 이상으로 파일 업로드 끝입니다.


//이제부터 Form에서 전송되는 파라미터 확인 해 봅니다.

Enumeration<String> params = multi.getParameterNames();

while (params.hasMoreElements()) {

String name = params.nextElement();

String value = multi.getParameter(name);

out.println("<br />" + name + " : " + value + "<br />");

}


out.println("<hr color='red' />");

out.println("업로드 된 파일의 정보 입니다.");


Enumeration files = multi.getFileNames();


while (files.hasMoreElements()) {

String name = (String)files.nextElement();

String fileName = multi.getFilesystemName(name);

String originName = multi.getOriginalFileName(name);

String type = multi.getContentType(name);


// 전송된 파일의 실제 속성을 열여봅니다.

File file = multi.getFile(name);


out.println("파라미터의 이름 : " + name + "<br />");

out.println("실제 파일 이름 : " + originName + "<br />");

out.println("저장된 파일 이름 : " + fileName + "<br />");

out.println("파일타입 : " + type + "<br />");


if (file != null) {

out.println("크기 : " + file.length());

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

}

}

} catch (Exception e) {

e.printStackTrace();

}

%>

'JAVA' 카테고리의 다른 글

multipart 파일체크  (4) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
multipart 리졸버  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
블로그 이미지

마크제이콥스

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

,

multipart 케스팅

JAVA 2019. 2. 28. 17:19

multipart 케스팅


if (request.getContentType() != null && (request.getContentType()).toLowerCase().startsWith("multipart/form-data")){

final Map<String, MultipartFile> files = ((MultipartHttpServletRequest)request).getFileMap();

    zvl.put("files", files);

}


public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {                  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;     

    MultipartFile multipartFile = multipartRequest.getFile("image");     

.... 

'JAVA' 카테고리의 다른 글

multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
multipart 리졸버  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
MD5 암호화 예제  (0) 2019.02.27
블로그 이미지

마크제이콥스

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

,

multipart 리졸버

JAVA 2019. 2. 28. 17:14

multipart 리졸버


○ 파일 업로드와 같이 멀티파트 포멧의 요청정보를 처리하는 전략을 설정할 수 있다.


○ 멀티파트 처리를 담당하는 다양한 구현으로 바꿀 수 있도록 설계되어 있지만, 현재는 아파치 Commons 의 FileUpload 라이브러리를 사용하는 CommonsMultipartResolver 한 가지만 지원된다.


○ 멀티파트 리졸버 전략은 디폴트로 등록되는 것이 없다. 따라서 적용하려면 아래와 같이 빈을 등록해줘야 한다.


<bean name="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    

<property name="maxUploadSize" value="100000" /> 

</bean> 


○ DispatcherServlet 은 클라이언트로부터 멀티파트 요청을 받으면 멀티파트 리졸버에게 요청해서 HttpServletRequest 의 확장 타입인 MultipartHttpServletRequest 오브젝트로 전환한다.


○ MultipartHttpServletRequest 에는 멀티파트를 디코딩한 내용과 이를 참조하거나 조작할 수 있는 기능이 추가되어 있다.


○ 아래와 같이 HttpServletRequest 를 파라미터로 받은 건트롤러에서는 전달받은 오브젝트를 MultipartHttpServletRequest 로 캐스팅한 후에 멀티파트 정보를 가진 MultipartFile 오브젝트를 가져와 사용할 수 있다.


public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {                  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;     

MultipartFile multipartFile = multipartRequest.getFile("image");    

 .... 


○ 애노테이션 방식의 유연한 컨트롤러 메소드를 이용하면 처음부터 MultipartFile 타입의 파라미터로 전달받거나 변환기를 이용해서 아예 바이트 배열이나 파일 정보를 담은 오브젝트로 가져올 수도 있다.

'JAVA' 카테고리의 다른 글

multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
MD5 암호화 예제  (0) 2019.02.27
mac address  (0) 2019.02.15
블로그 이미지

마크제이콥스

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

,

method 동적 호출

JAVA 2019. 2. 27. 14:20

method 동적 호출



package egovframework.kr.co.jnjkorea.crm.web;


import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.springframework.stereotype.Controller;

import org.springframework.ui.ModelMap;

import org.springframework.web.bind.annotation.RequestMapping;

import egovframework.kr.co.jnjkorea.crm.service.CommonCRMBeanFactory;

import egovframework.kr.co.jnjkorea.crm.service.CommonCRMService;

import egovframework.kr.co.jnjkorea.portal.util.service.WebFactory;

import egovframework.kr.co.jnjkorea.portal.util.service.ZValue;

import java.lang.reflect.Method;




@Controller

public class CommonCRMController {

protected Log log = LogFactory.getLog(this.getClass());


@Resource(name = "commonCRMBeanFactory")

protected CommonCRMBeanFactory commonCRMBeanFactory;


@RequestMapping("/crm/*/list.do")

public String list(HttpServletRequest request,HttpServletResponse response,ModelMap model) throws Exception {


Zvalue zvl = WebFactory.getAttributesInit(request);


CommonCRMService = commonCRMService = commonCRMBeanFactory.getBeen(zvl.getString("uBinId"));

Method dymMethod = null;


Class[] cParam = new Class[]{ZValue.class, ModelMap.class};

Object[] oParam = new Object[]{zvl, model};


dymMethod = commonCRMService.getClass().getMethod("list", cParam);

dymMethod.invoke(commonCRMService, oParam);


//commonCRMService.list(zvl, model);


return "crm/" + zvl.getString("uBinId") + "/list";

}

}

'JAVA' 카테고리의 다른 글

multipart 케스팅  (0) 2019.02.28
multipart 리졸버  (0) 2019.02.28
MD5 암호화 예제  (0) 2019.02.27
mac address  (0) 2019.02.15
Listener :: ServletContextListener  (0) 2019.02.15
블로그 이미지

마크제이콥스

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

,

MD5 암호화 예제

JAVA 2019. 2. 27. 13:32

MD5 암호화 예제



MD5Test.java 


public class Md5Test{

/**

     * MD5(Message Digest algorithm 5)<br>

     * 일방향 해시 함수로서 임의 메시지를 압축,<br>

     * 고정 길이 해시값의 되돌림 처리는 32비트 단위로 한다.<br>

     * <br>

     * ex) "1111" ==> "b59c67bf196a4758191e42f76670ceba"

     *

     * @param param 변경될 값

     * @return String MD5로 생성된 값

     * @see java.security.MessageDigest#digest(byte[])

     * @exception java.security.NoSuchAlgorithmException

     */ 


public String makeMD5(String param){

StringBuffer md5 = new StringBuffer();


try {

byte[] digest = java.security.MessageDigest.getInstance("MD5").digest(param.getBytes());


for (int i = 0; i < digest.length; i++) {

md5.append(Integer.toString((digest[i] & 0xf0) >> 4, 16));

md5.append(Integer.toString(digest[i] & 0x0f, 16));

}catch(java.security.NoSuchAlgorithmException ne) {

     ne.printStackTrace();


return md5.toString();

}

 /* end makeMD5() */

}


MD5Execute.java 


public class MD5Execute {

public static void main(String[] args) {

String str = "11111"; //암호화 시킬 텍스트


Md5Test test = new Md5Test();


String result = test.makeMD5(str);


System.out.println(result);

}

}


'JAVA' 카테고리의 다른 글

multipart 리졸버  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
mac address  (0) 2019.02.15
Listener :: ServletContextListener  (0) 2019.02.15
List 정렬  (0) 2019.02.15
블로그 이미지

마크제이콥스

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

,

mac address

JAVA 2019. 2. 15. 16:04

mac address



package egovframework.kr.co.fw.util;


import java.net.InetAddress;

import java.net.NetworkInterface;


public class NetUtil {

public static void main(String[] args) {

try {

InetAddress addr = InetAddress.getLocalHost();

NetworkInterface ni = NetworkInterface.getByInetAddress(addr);

byte[] mac = ni.getHardwareAddress();

String macAddr = "";

for (int i = 0; i < mac.length; i++) {

macAddr += String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "");

}

System.out.println(macAddr);

} catch (Exception e) {

e.printStackTrace();

}

}

}



import java.net.InetAddress;

import java.net.NetworkInterface;


public class MacAddressTest {


public static void main(String[] args){


try{

InetAddress addr = InetAddress.getLocalHost();

/* IP 주소 가져오기 */

String ipAddr = addr.getHostAddress();

System.out.println("***********************" + ipAddr);


/* 호스트명 가져오기 */

String hostname = addr.getHostName();

System.out.println("%%%%%%%%%%%%%%" + hostname);


/* NetworkInterface를 이용하여 현재 로컬 서버에 대한 하드웨어 어드레스를 가져오기 */

NetworkInterface ni = NetworkInterface.getByInetAddress(addr);

byte[] mac = ni.getHardwareAddress();

String macAddr = "";

for (int i = 0; i < mac.length; i++) {

macAddr += String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : "")

}

System.out.println(macAddr);

} catch (Exception e) {

e.printStackTrace();

}

}

}

'JAVA' 카테고리의 다른 글

method 동적 호출  (0) 2019.02.27
MD5 암호화 예제  (0) 2019.02.27
Listener :: ServletContextListener  (0) 2019.02.15
List 정렬  (0) 2019.02.15
[JAVA]JUnit 테스트 코드  (0) 2017.11.30
블로그 이미지

마크제이콥스

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

,

Listener :: ServletContextListener





1. ServletContextListener의 활용


BEA WebLogic 이나 TmaxSoft JEUS등 WAS(Web Application Server) 제품들에는 환경설정 파일에

StartUp Class, ShutDown Class을 등록하여 엔진이 구동될 때 실행하거나 종료해야할 메서드를 지정할수 있는 기능이 있다.

ServletContextListener는 이와 유사하게 각 Web Application(Context) 단위로 이와 비슷한 기능을 할수 있게 해준다. ServletContextListener는 Interface 이면 구현 클래스에서는 다음과 같은 메소드를 구현해야 합니다.

 

void contextDestroyed(ServletContextEvent sce) Context가 종료 될 때 실행 할 내용등록 

void contextInitialized(ServletContextEvent sce) Context가 처음 구동될 때 실행 할 내용등록 


★ ServletContextListener의 샘플 소스


package context;


import javax.servlet.ServletContext; 

import javax.servlet.ServletContextEvent; 

import javax.servlet.ServletContextListener;


public class ContextInit implements ServletContextListener { 


public void contextInitialized(ServletContextEvent contextEvent) { 

System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");

     System.out.println("ContextInitialized Call!");

     counter.count = 100;

     System.out.println("Counter : "+counter.count);

     System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");


public void contextDestroyed(ServletContextEvent arg0) { 

        System.out.println("******************************************************************");

        System.out.println("contextDestroyed Call!");

        counter.count = 0;

        System.out.println("Counter : "+counter.count);

        System.out.println("******************************************************************");

}



리스너를 구현한 클래스입니다. contextInitialized 메소드에서는 context.counter 클래스의 count 변수를 100으로 세팅하고, contextDestroyed 메소드에서는 이를 0으로 다시 세팅합니다.


<?xml version = '1.0' encoding = 'EUC-KR'?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<description>Empty web.xml file for Web Application</description>

     <session-config>

         <session-timeout>35</session-timeout>

     </session-config>

     <mime-mapping>

         <extension>html</extension>

         <mime-type>text/html</mime-type>

      </mime-mapping>

      <mime-mapping>

          <extension>txt</extension>

          <mime-type>text/plain</mime-type>

      </mime-mapping>

      <listener> 

          <listener-class>context.ContextInit</listener-class> 

      </listener>   

</web-app>


Web.xml 파일의 내용입니다. Listener tag에 작성한 ContextInit 클래스를 등록합니다.


package context;

 

public class counter  {

static {

         System.out.println("Counter Create!");

     }

     public static int count = 0;

 

     public counter() {

     }

   

     public static void counter() {

         count++;

     }


Static 변수를 포함한 클래스입니다.


// servletContextTest.jsp


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

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

         <title>servvletContextCounterTest</title>

     </head>

     <body>

<%

    context.counter.counter();

%>

     Count : <%=context.counter.count%>

</body>

</html> 


테스트 Client JSP 입니다.

 

ServletContextListener의 샘플 배치 및 실행

1. TomCat 5.X에서 실행

ContextTest라는 컨텍스트를 등록하여 샘플 파일을 설치 합니다.



위화면에서 ContextTest 어플리케이션을 stop, start하면 아래와 같은 로그가 출력 됩니다.

 



 

아래는 테스트 클라이언트 실행 화면입니다.



 

2. JEUS 4.2에서 실행

 

1)WEBMain.xml 파일에 다음과 같이 등록한다.

<context>

            <context-name>localtest</context-name>

            <context-path>/localtest</context-path>

</context> 


 

2)jeus-web-dd_localtest.xml 파일을 다음과 같이 생성하여 WEBMain.xml 파일과 같은 위치에 저장한다.

<?xml version="1.0"?>

<!DOCTYPE jeus-web-dd PUBLIC "-//Tmax Soft., Inc.//DTD JEUS WEB Deployment Info 4.0//EN"

                             "http://www.tmaxsoft.com/jeus/dtd/4.0/jeus-web-dd.dtd">

<jeus-web-dd>

    <context>

        <context-name>localtest</context-name>

        <docbase>localtest</docbase>

        <auto-reload>

            <enable-reload>true</enable-reload>

            <check-on-demand>true</check-on-demand>

        </auto-reload>

    </context>

</jeus-web-dd> 


 

JEUS을 리스타트 시키거나 jeusadmin에서 downeng, stareng 명령어로 엔진을 리스타트 시킨다.

Webapp/localtest 디렉토리가 자동으로 생성되면 샘플 파일을 설치 합니다.

JEUS에서 Context 리스타트 명령어는 webadmin 툴에서 restart MyGroup localtest 명령오로 하실 수 있습니다.

Tomcat과 같은 결과를 화면에서 보실 수 있습니다.

[출처] ServletContextListener의 활용|작성자 따라쟁이


'JAVA' 카테고리의 다른 글

MD5 암호화 예제  (0) 2019.02.27
mac address  (0) 2019.02.15
List 정렬  (0) 2019.02.15
[JAVA]JUnit 테스트 코드  (0) 2017.11.30
[JAVA]jsp 파일 읽어 저장  (0) 2017.11.30
블로그 이미지

마크제이콥스

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

,

List 정렬

JAVA 2019. 2. 15. 14:29

List 정렬


@SuppressWarnings("unchecked")

public List listSort(List orgList) throws Exception {

if (orgList==null){

orgList.add("나" + "|" + "1231");

orgList.add("가" + "|" + "1232");

orgList.add("다" + "|" + "1233");

}

List resultList = new ArrayList();

Collections.sort(orgList); 

for (int i=0; i<orgList.size(); i++){

String[]  temp = orgList.get(i).toString().split("\\|");

if (temp!=null && temp.length>1){

HashMap map = new HashMap();

map.put("word", temp[0]);

map.put("idx", temp[1]);

resultList.add(map);

}

}

return resultList;

}

'JAVA' 카테고리의 다른 글

mac address  (0) 2019.02.15
Listener :: ServletContextListener  (0) 2019.02.15
[JAVA]JUnit 테스트 코드  (0) 2017.11.30
[JAVA]jsp 파일 읽어 저장  (0) 2017.11.30
[JAVA] jndi2  (0) 2017.11.28
블로그 이미지

마크제이콥스

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

,

[JAVA]JUnit 테스트 코드

JAVA 2017. 11. 30. 15:10

JUnit 테스트 코드



package test.kr.co.cop.alert.service;


import javax.annotation.Resource;


import kr.co.cop.alert.service.PortalAlertProgramService;

import kr.co.cop.alert.vo.PortalAlert;

import kr.co.cop.cmm.crud.service.ParameterContext;

import kr.co.cop.cmm.crud.vo.CacheVO;


import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.mock.web.MockHttpServletRequest;

import org.springframework.mock.web.MockHttpServletResponse;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.test.context.web.WebAppConfiguration;

import org.springframework.ui.ModelMap;


@RunWith(SpringJUnit4ClassRunner.class)

@WebAppConfiguration

@ContextConfiguration(locations = {

    "classpath*:egovframework/spring/com/*.xml",

})


public class PortalAlertProgramServiceTest {


@Resource(name="portalAlertProgramService")

PortalAlertProgramService service;


ParameterContext<PortalAlert> paramCtx = new ParameterContext<PortalAlert>();


@Before

public void setUp() throws Exception{

ModelMap model = new ModelMap();

PortalAlert param = new PortalAlert();

param.setProgramId("portalAlert");

paramCtx.setModel(model);

paramCtx.setParam(param);

       paramCtx.setRequest(new MockHttpServletRequest());

       paramCtx.setResponse(new MockHttpServletResponse());


CacheVO cvo = new CacheVO();

cvo.setCacheName(PortalAlertProgramService.PORTAL_ALERT_CACHE_NAME);

paramCtx.setCacheVO(cvo);

}


@Test

public void testCache() throws Exception{

service.list(paramCtx);


service.delete(paramCtx);


service.list(paramCtx);

}


}

'JAVA' 카테고리의 다른 글

Listener :: ServletContextListener  (0) 2019.02.15
List 정렬  (0) 2019.02.15
[JAVA]jsp 파일 읽어 저장  (0) 2017.11.30
[JAVA] jndi2  (0) 2017.11.28
[JAVA] javaee 오류  (0) 2017.11.27
블로그 이미지

마크제이콥스

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

,

[JAVA]jsp 파일 읽어 저장

JAVA 2017. 11. 30. 15:00

jsp 파일 읽어 저장




String serverIp = popertyService.getString("SERVER_IP");

InetAddress Address = InetAddress.getLocalHost();

String IP = Address.getHostAddress(); 

if (serverIp.equals(IP)){

// contentsPath 파일 체크

if (!result.getString("contentsPath").equals("")){

String path = rootPath + "/WEB-INF/jsp/egovframework" + (siteId.equals("3") ? result.getString("contentsPath").replaceAll("#lang#", lang) : result.getString("contentsPath")) ;

File file = new File(path);

if (file.exists()){

Date date = new Date();

date.setTime(file.lastModified());

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");

String lastFileDate = formatter.format(date);

if (!lastFileDate.equals(result.getString("lastpathmodify"))){

// 파일 수정한 것임으로 디비에 update

CommonContentsService commonContentsService =(CommonContentsService)ctx.getBean("commonContentsService");

MenuLoadService menuLoadService =(MenuLoadService)ctx.getBean("menuLoadService");

MenuManageVO menuManageVO = new MenuManageVO();

menuManageVO.setMenuNo(result.getInt("menuNo"));

menuManageVO.setUserId("system");

menuManageVO.setModifyDay(date);

if (siteId.equals("3")) {

menuManageVO.setChLang(lang);

}

menuManageVO.setCvCon(FileUtils.readFileToString(file, "UTF-8"));

commonContentsService.modify(menuManageVO);

menuLoadService.menuLoad(pageContext.getServletContext(), Integer.parseInt(siteId));

}

}

}

}

'JAVA' 카테고리의 다른 글

List 정렬  (0) 2019.02.15
[JAVA]JUnit 테스트 코드  (0) 2017.11.30
[JAVA] jndi2  (0) 2017.11.28
[JAVA] javaee 오류  (0) 2017.11.27
[JAVA]ip 추려서 true/false return  (0) 2017.11.27
블로그 이미지

마크제이콥스

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

,