2017년 9월 20일 수요일

이미지 등록하기


완성된 이미지 예제 보기
project - kanjiController - register_kanji / 받아오기 login / home.jsp



라이브러리 2개 먼저 받자


http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi







압축풀고 jar파일 라이브러리에 넣어주자






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
shop1 / admin.jsp

<form action="insertimg.do" method="post" enctype="multipart/form-data"> <div class="modal fade" id="insertItemImgModal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title" id="myModalLabel">이미지추가</h4> </div> <div class="modal-body"> <input type="text" class="form-control" name="no" placeholder="물품번호" /> <input type="file" name="file1" class="form-control" /> <input type="file" name="file2" class="form-control" /> <input type="file" name="file3" class="form-control" /> <input type="file" name="file4" class="form-control" /> <input type="file" name="file5" class="form-control" /> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary">추가</button> <button type="button" class="btn btn-default" data-dismiss="modal">닫기</button> </div> </div> </div> </div> </form>


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        DiskFileItemFactory factory = new DiskFileItemFactory();        
        factory.setRepository(new File(System.getProperty("java.io.tmpdir")));
        
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setFileSizeMax(1024*1024*10); //10Mbyte
        //저장 위치
        String root =request.getSession().getServletContext().getRealPath("/");
        System.out.println(root);
        try {
            List<FileItem> list = upload.parseRequest(request);
            
            if(list != null && list.size() >0) {
                
                for(FileItem tmp:list) {
                    if(!tmp.isFormField()) { //"file"일 경우
                    //파일명
                    String fileName = new File(tmp.getName()).getName();
                    
                    //파일 저장위치설정
                    File file = new File(root+File.separator+fileName);
                    
                    //파일저장
                    tmp.write(file);
                    }
                    else { //"file"이 아닐 경우
                        String value=tmp.getString();
                        System.out.println(value);
                    }
                }                
            }            
                
        } catch (Exception e) {
            
        }
    }
    
cs


선생님 블로그에서 가져온것

.라이브러리 다운로드 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mvc2</artifactId>
<name>mvc2</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.7</java-version>
<org.springframework-version>4.2.2.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

<dependencies>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>

<!--소스생략 -->
</dependencies>
</project>



2. webapp/WEB-INF/spring/appServlet/servlet-context.xml
<?xml version="1.0" encoding="UTF-8"?>
xsi:schemaLocation="

<!-- DispatcherServlet Context: defines this servlet's request-processing 
infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<resources mapping="/resources/**" location="/resources/" />

<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>

<context:component-scan base-package="com.example.mvc2" />

<!-- multipart -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="1000000"/>
</beans:bean>
</beans:beans>



3. UploadController.java 파일 생성

package com.example.mvc2;

import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UploadController {
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);

@RequestMapping(value = "/upload", method = RequestMethod.GET)
public String upload() {
return "upload"; //upload.jsp표시
}

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public @ResponseBody String upload1(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
//파일이 비어 있지 않다면
if(!file.isEmpty()){
try{
//파일명 저장
String filename = file.getName();

//현재 실행중인 서버의 root위치 
String root = request.
 System.out.println(filename);
  System.out.println(root);

   // root디렉토리/upload디렉토리 밑에 생성
File dir = new File(root + File.separator + "upload");

// 디렉토리가 없으면 디렉토리 생성함.
if (!dir.exists()) {
dir.mkdirs();
}

byte[] bytedata = file.getBytes();

File serverFile = new File(dir.getAbsolutePath() + File.separator + filename);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytedata);
stream.close();

   return "upload ok";
}
catch(Exception e){
 return "upload fail";
}
}
else{
return "upload fail";
}
}
}
======================= 비교해서 보기 ( 내가 만든거) =======================




@RequestMapping(value="/register_kanji",method=RequestMethod.POST)
public String register(
@RequestParam("name")String name,
@RequestParam("email")String email,
@RequestParam("image")MultipartFile img,
@RequestParam("pw")String pw,
HttpServletRequest request){
if(!img.isEmpty()) {
try {
filename =System.currentTimeMillis()+img.getOriginalFilename();//선생님예제에서는 getname()
String root = request.getSession().getServletContext().getRealPath("/");
System.out.println(filename);
System.out.println(root);
//이미지 저장하는 폴더 생성
File dir = new File(root + File.separator + "resources/images"); //이클립스에서 쓰는 폴더
if(!dir.exists()) {
dir.mkdirs();
}
byte[] bytedata = img.getBytes();
File serverFile = new File(dir.getAbsolutePath() + File.separator + filename);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytedata);
stream.close();
} catch (Exception e) {
return "upload fail";
}
}
Kanji_member km = new Kanji_member();
km.setImage(filename);
km.setEmail(email);
km.setName(name);
km.setPw(pw);
kDAO.registerMember(km);
System.out.println("입력성공");
return "redirect:home";
}

4. upload.jsp파일 생성
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
<meta charset="utf-8" />
<title>이미지업로드</title>
<link href="resources/css/bootstrap.css" rel="stylesheet" />
</head>

<body>
<div class="container">
<form action="upload" enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<input type="submit" value="업로드" />
</form>
</div>
</body>
</html>

-------------------------------------------------------------

1.라이브러리 다운로드 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mvc2</artifactId>
<name>mvc2</name>
<packaging>war</packaging>
<version>1.0.0-BUILD-SNAPSHOT</version>
<properties>
<java-version>1.7</java-version>
<org.springframework-version>4.2.2.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

<dependencies>
<dependency> 
<groupId>servlets.com</groupId> 
<artifactId>cos</artifactId> 
<version>05Nov2002</version> 
</dependency>

<!--소스생략 -->
</dependencies>
</project>


2. UploadController.java 파일 생성
package com.example.mvc2;

import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UploadController {
private static final Logger logger = LoggerFactory.getLogger(UploadController.class);

@RequestMapping(value = "/upload", method = RequestMethod.GET)
public String upload() {
return "upload"; //upload.jsp표시
}

@RequestMapping(value = "/upload1", method = RequestMethod.POST)
public @ResponseBody String upload2(HttpServletRequest request) { 
int maxSize = 1024*1024*10; //10M 
String root = request.getSession().getServletContext().getRealPath("/"); // root디렉토리/upload디렉토리 밑에 생성

File dir = new File(root + File.separator + "upload1"); // 디렉토리가 없으면 디렉토리 생성함. 
if (!dir.exists()) { 
   dir.mkdirs(); 

try{ //저장위치, 최대용략설정 
MultipartRequest multi 
  = new MultipartRequest(request, dir.getAbsolutePath(), maxSize, "UTF-8", new DefaultFileRenamePolicy()); 

String uploadFile = multi.getFilesystemName("file"); 
System.out.println(uploadFile); 
return "upload1 ok"; 
catch(Exception e){ 
   return "upload1 fail"; 
}
}
}


3. upload.jsp파일 생성
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<html>
<head>
<meta charset="utf-8" />
<title>이미지업로드</title>
<link href="resources/css/bootstrap.css" rel="stylesheet" />
</head>

<body>
<div class="container">
<form action="upload1" enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<input type="submit" value="업로드" />
</form>
</div>
</body>



[출처] 이미지 업로드|작성자 ihongss

2017년 9월 7일 목요일

메이븐 사용 하지 않고 서버 배포하기


file - export - destination은 바탕화면으로 해두었다,(임의)


ftp 프로그램 설치
yum install -y vsftpd

ftp 서버 구동

systemctl start vsftpd

사용자 추가
useradd user1

암호설정
passwd user1
=> user1

계정이 생성되면
/home/user1 폴더가 자동으로 생성됨.


firewall-cmd --permanent --zone=public --add-port=21/tcp
firewall-cmd --reload

파일첨부후

mv /home/user1/파일명.war /usr/local/tomcat7/webapps/

2017년 9월 6일 수요일

리눅스 환경설정 (서버 배포하기)














    • 패키지 업데이트
    yum update -y


    • java 1.8설치
    yum install -y java-1.8.*-devel


    • java 설치 확인
    java -version


    • 디렉토리 이동
    cd /usr/local


    • wget 설치
    yum install -y wget


    • 다운로드
    wget http://mirror.apache-kr.org/tomcat/tomcat-7/v7.0.85/bin/apache-tomcat-7.0.85.tar.gz


    • 압축풀기
    tar -xvf apache-tomcat-7.0.85.tar.gz


    • 파일목록 확인
    ls


    • apache-tomcat-7.0.85폴더가 생성됨 폴더명이 길어서 tomcat7로 변경함
    mv apache-tomcat-7.0.85 tomcat7

    심볼릭 달기(바로가기 만듬)  
  • ln -s apache-tomcat-7.0.85 tomcat

    • 서버 구동
    cd tomcat7/bin 폴더로 이동
    ./startup.sh


  • 현재 컴퓨터 IP소 확인하기

    yum install -y net-tools
    ifconfig
    1. 자바 다운받기 wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm" -O jdk1_8.rpm  2. 자바 설치  rpm -ivh jdk1_8.rpm


    ===============putty==========

    cd /usr/local/tomcat7/conf
    ls

    편집기 설치
    yum install -y vim

    tomcat-users.xml 파일 편집
    vim tomcat-users.xml 안에다가
    <role rolename="manager-script" />
    <user username="ds20170412" password="class603" roles="manager-script" />

    i누르면 끼워넣기
    작성후 esc 누르고 :wq 하면 빠져나감
    cd .. 상위폴더로

    ========환경설정
    C:\Users\DS\.m2 안에서 새택스트문서 안

     
      <servers>
         <server>
            <id>TomcatServer</id>
            <username>ds20170412</username>
            <password>class603</password>
         </server>
      </servers>
    </settings>

    올리고 싶은 프로젝트 pom.xml
    157번쯤 plugins안에 추가하기
           <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
           //http://192.168.0.217:8080/까지는 리눅스에서 열어둔 내 서버/ 뒤에manager 일치시키기
                     <url>http://192.168.0.217:8080/manager/text</url> 
      //context root 랑 일치 properties->webprojectsetting
                     <path>/server</path>  
                     <server>TomcatServer</server>                
                    </configuration>
                </plugin>
        
    </plugins>














2017년 9월 4일 월요일

서버, 익스플로어 한글 환경 설정 하기 (한글 입출력 안될때)





server.xml에서
현재 사용 하고 있는 포트번호(여기서는 8080) 커넥터를 찾아서
URIEncording ="utf-8" 을 추가해 준다.




====================인터넷 익스플로어에서 한글 검색이 안될때 =============




익스플로어에서 바나나를 검색하면 오류메세지가 뜬다.
그이유는 주소창에서 한글을 받아 오지 못하기 때문인데 그래서
Jquery안에 한글을 변환하는 코드를 넣어 줘야한다.


 var t = encodeURIComponent('${param.txt}');




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 <script>
        $(document).ready(function(){
            var t = encodeURIComponent('${param.txt}');
            $('#pagination').twbsPagination({
                totalPages:'${tot}',
                visiablePages:10,                
                href:"?page={{number}}"+"&txt="+t
            });
            $('#txt_search').keyup(function(event){
                if(event.which ==13){
                    var txt = encodeURIComponent($('#txt_search').val());
                    window.location.href = "selectboard?txt="+txt;
                }
            });
            $('#txt_search_bottom').click(function(event){
                    var txt = encodeURIComponent($('#txt_search').val());
                    window.location.href = "selectboard?txt="+txt;                
            });
        });
cs













2017년 9월 3일 일요일

단위테스트 JUnit

  <!-- Test -->
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.9</version>
   <scope>test</scope>
  </dependency>

  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-test</artifactId>
   <version>${org.springframework-version}</version>
  </dependency>


파일: src/main/java/  - com.ds.web - HomeController.java

package com.ds.web;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HomeController {

 private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

 @RequestMapping(value = "/", method = RequestMethod.GET)
 public String home(Locale locale, Model model) {
  logger.info("Welcome home! The client locale is {}.", locale);
 
  Date date = new Date();
  DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
 
  String formattedDate = dateFormat.format(date);
 
  model.addAttribute("serverTime", formattedDate );
 
  return "home";
 }
 @RequestMapping(value = "/p", method = RequestMethod.POST)
 public String p(@RequestParam("no")int no ,Model model) {
  System.out.println(no);
  model.addAttribute("list", "abc");
  return "redirect:/";
 
 }

}

파일: src/test/java/  - com.ds.web - HomeControllerTest

package com.ds.web;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
public class HomeControllerTest {
 private MockMvc mvc = null;

 @Before
 public void setup() {
  mvc =
   MockMvcBuilders.standaloneSetup(new HomeController()).build();
 }
  //테스트하기전 테스트를 할 컨트롤러 객체 생성

 @Test
 public void test() throws Exception {
  MockHttpServletRequestBuilder p
   = post("/p").param("no", "1");
  mvc.perform(p)
  .andDo(print())
  .andExpect(status().is3xxRedirection())
  .andExpect(model().attributeExists("list"));
  //get방식으로 호출하면 serverTime의 attribute값이 존재해야함.
        mvc.perform(get("/"))
        .andDo(print())
        .andExpect(status().is2xxSuccessful())
        .andExpect(model().attributeExists("serverTime"));
       
 }
}