BLOG ARTICLE 스트럿츠2 태그 | 2 ARTICLE FOUND

  1. 2011.07.22 [파일 업로드] jsp 태그 설정과, Action Class
  2. 2011.07.22 Struts2 페이지 링크 걸기 <s:uril> 을 이용한 것.

일단 스트럿츠2에서 스트럿츠태그를 이용해서 


파일 업로드 기능을 구현하려 하면


"commons-io-2.0.1.jar" 파일이 필요하다. 이 파일을 다운로드해서 라이브러리에 집어넣은다음


- JSP 뷰 페이지에서









폼 안에 s:file로 만들어주면


파일업로드를 할수있는 보통의 폼이 나오게 된다.


서브밋 형식은 'post'방식으로 해야된다.


파일을 선택해주고 나면 서브밋 하게되면  /Struts_MVC_BBS/write.action 으로 액션되는데



업로드한 파일이 스택을 통해서 액션클래스로 넘어가게되는데 넘어가는 형식은


파일태그에 정의한 "file"이란 이름으로 File 이 넘어간다


그러니까 액션클래스에서는 


File file; <-- 이런식으로 매핑해야 한다.


그리고 2가지가 자동으로 String 으로 더 넘어온다. 하나는 'FileName' 이고 'ContentType' 이 넘어온다.


'FileName' 은 실제 파일명이고,

'ContentType'은 파일타입이다. ex) 'image/x-png'


그런데 여기서 위 2파일은 파일클래스명과 String 이 결합된 이름이어야 한다.


실제 매핑되야할 파일명은   "fileFileName" 과 "fileContentType" 이다.


이 이름말고 다른이름으로는 절대 매핑되지않는다. 

 


 

 

private File file;
private String fileFileName;
private String fileContentType;


위 코드가 위 형식으로 설명한 코드다.


이제 파일을 써야된다.

기본이 2메가기때문에 2메가 이상을 하려면 설정을 바꿔줘야된다.

struts.default 에서 바까주면된다...는데 아직 안해봤다 ㅡㅡ



아래 클래스는 파일을 실제 쓰는 코드다.


                           넘겨받은 파일           저장될절대경로              파일명
 

fileMan.saveFile( file,  readFolder,  fileFileName);  // 부른다~


public class FileMan {

 
 // path 라는 절대경로에 해당하는 디렉토리가 없을때
 // 디렉토리를 생성한다.
 public void makeBasePath(String path){
  
  File dir = new File(path);
  
  if(!dir.exists()){
   dir.mkdirs();
  }
  
 } // makeBasePath() end;
 

 
 public String saveFile(File file, String basePath, String fileName) throws Exception {
  
  if(file == null || file.getName().equals("") || file.length() <= 0){
  return null;
  }
  
  makeBasePath(basePath);
  
  //서버에 저장할 전체 경로 생성
  String serverFullPath = basePath + "\\" + fileName;
  
  
  // 파일저장
  FileInputStream fis = new FileInputStream(file);
  
  FileOutputStream fos = new FileOutputStream(serverFullPath);
  
  int bytesRead = 0;
  
  byte[] buffer = new byte[1024];
  
  while((bytesRead = fis.read(buffer, 0 , 1024)) != -1){
   fos.write(buffer, 0, bytesRead);
  }
  
  fos.close();
  fis.close();
  
  return serverFullPath;
  
  
 } // saveFile() end;
 
} // class end;
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST



  
  
   
  
  
  
   
  
  
  
   
  
  


--> 위 url 태그를 부르는 방법은  <s:a href="%{gotoContent}"><s:property value="title"/></s:a>

url 태그에 id 값은 <s:a > 태그에서 href="%{gotoContent}" 로 부르는 값이다.

 <s:property value="title"/> 이 값에 링크가 걸려서 저 title 이 뿌려지는 문자를 클릭하게되면
content.action 으로 가게되는데, 가면서 어떤 값들을 가지고 갈수있다.


 



파라미터에 들어가는 name 값은 'VALUE STACK'에 들어갈 변수명이고,
프로퍼리에 value 값은 변수값이다.

저걸 여러개 쭉쭉 써서 연결되는 class 파일에서 get, set 메소드 를 마련해두면
잘~~ 들어가있다.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST