*.jsp 접근 막기

Posted at 2009. 9. 3. 09:29 | Posted in Framework/Struts
반응형
struts 사용시 *.jsp 접근을 막기 위한 설정입니다.

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="......ID" ...... version="2.5">
    <display-name>many-to-many_mysql</display-name>
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            ...
    </welcome-file-list>

    <!-- 웹으로 접속한 사용자가 JSP 파일로 직접 접근할 수 없게 한다. -->
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>PreventViewingJSPs</web-resource-name>
            <description>웹으로 접속한 사용자가 JSP파일로 직접 접근할 수 없도록 한다.</description>
            <url-pattern>*.jsp</url-pattern>
            <http-method>GET</http-method>
            <http-method>POST</http-method>
        </web-resource-collection>
        <auth-constraint>
            <role-name></role-name>
        </auth-constraint>
    </security-constraint>

</web-app>


반응형

'Framework > Struts' 카테고리의 다른 글

스트러츠(Struts) 기본 세팅  (6) 2009.06.22
Struts 파일 업로드  (2) 2009.05.05
//

스트러츠(Struts) 기본 세팅

Posted at 2009. 6. 22. 22:10 | Posted in Framework/Struts
반응형
이클립스에서 스트러츠를 시작하기 위한 아주아주 기본적인 세팅입니다.

이걸 해야 스트러츠를 시작할 수 있죠!! >,.<

- Eclipse Ganymede 3.4.2
- Apache Tomcat 6.0.18
- Apache Struts 1.3.10
- Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
- 텍스트 인코딩 : 글로벌 시대에 맞게 UTF-8




- File → New → Dynamic Web Project




- 스트러츠 라이브러리를 다운로드받습니다.



- WEB-INF/lib 폴더에 다 때려넣습니다.




- web.xml 을 수정합니다. 주석달린 두 부분(?)을 추가합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 id="WebApp_ID" version="2.5">

  <display-name>BaseStruts</display-name>

  <!-- Standard Action Servlet Configuration -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <!-- Standard Action Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>


- WEB-INF 폴더에 struts-config.xml 파일을 만듭니다. (web.xml 파일의 init-param 의 경로와 일치해야함!)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
    <!--  Form Bean Definitions -->
    <form-beans>

    </form-beans>

    <!--  Global Exception Definitions -->
    <global-exceptions>

    </global-exceptions>

    <!-- Global Forward Definitions -->
    <global-forwards>

    </global-forwards>

    <!-- Action Mapping Definitions -->
    <action-mappings>

    </action-mappings>

    <!-- Message Resources Definitions -->
    <!-- Plug Ins Configuration -->

</struts-config>


스트러츠를 사용하기 위한 완전 아무것도 없는 프로젝트를 만들었습니다... 자! 이제 쓰세요 -_-;;




... 뭐 간단한거라도 만들어볼까요?;; 로그인 하는거 만들어봅시다 >,.<

위에서 만들었던 BaseStruts 를 Import 해서 기본 스트러츠를 세팅합시다!


- File → Import : Web → WAR File




- 프로젝트 이름 변경 하시구!




- 소스 줄줄이 작성! (너무 간단한 예제라 다 펼쳐놓기가 부끄럽군요! ㅠ_ㅠ)

뭐.. UML 은 당연히 틀렸겠죠 +_+;

클래스 다이어그램(Class Diagram)


시퀀스 다이어그램(Sequence Diagram) 


struts-config.xml


    <form-beans>
        <form-bean name="JFLogin" type="com.tistory.antop.forms.JFLogin" />
    </form-beans>

    <action-mappings>
        <action path="/JALogin" type="com.tistory.antop.actions.JALogin"
            name="JFLogin" scope="request" validate="true">
            <forward name="result" path="/result.jsp" />
        </action>
    </action-mappings>




실행은 의지를 가진 용자들은 알아서 하실꺼....



2010.01.26 - 한글 파라미터 처리를 위한 플러그인 클래스 추가
반응형

'Framework > Struts' 카테고리의 다른 글

*.jsp 접근 막기  (0) 2009.09.03
Struts 파일 업로드  (2) 2009.05.05
//

Struts 파일 업로드

Posted at 2009. 5. 5. 22:58 | Posted in Framework/Struts
반응형

Struts 에서 파일 업로드 하는 법입니다.

왜 올리냐? 앞으로의 Ctrl+C , Ctrl+V 를 위해서 -_-v

jdk 1.6.0_13
tomcat 6.0.18
struts 1.3.10

프로젝트는 struts-blank-1.3.10.war 파일 Import 해서 생성 했고, jsp 에는 struts taglib를 사용했습니다.



form.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>file upload</title>
</head>
<body>

<html:form action="/result" method="post" enctype="multipart/form-data">

subject : <html:text property="subject" /> <br />
file : <html:file property="att" /> <p />
<html:submit value="submit" />

</html:form>

</body>
</html>


struts-config.xml
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

 <form-beans>
  <form-bean name="formFileUpload" type="antop.FormFileUpload" />
 </form-beans>

 <global-exceptions> </global-exceptions>

 <global-forwards> </global-forwards>

 <action-mappings>
  <action path="/result" type="antop.ActionFileUpload"
   name="formFileUpload" input="/form.jsp" scope="request">
   <forward name="result" path="/result.jsp"/>
  </action>

 </action-mappings>

 <message-resources parameter="MessageResources" />

 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
  <set-property property="pathnames"
   value="/org/apache/struts/validator/validator-rules.xml,
               /WEB-INF/validation.xml" />
 </plug-in>

</struts-config>


FormFileUpload.java
package antop;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class FormFileUpload extends ActionForm
{
  private static final long serialVersionUID = 1;

  private String subject;
  private FormFile att;

  public String getSubject() {
    return subject;
  }
  public void setSubject(String subject) {
    this.subject = subject;
  }
  public FormFile getAtt() {
    return att;
  }
  public void setAtt(FormFile att) {
    this.att = att;
  }
}


ActionFileUpload.java
package antop;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;

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

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

public class ActionFileUpload extends Action
{
  @Override
  public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
  
    FormFileUpload f = (FormFileUpload)form;
  
    String subject = f.getSubject();
    FormFile att = f.getAtt();

    if(att != null)
    {
      String realName = "";
      String fileName = att.getFileName();
      String fileContextType = att.getContentType();
      int fileSize = att.getFileSize();
   
      String path = "/upload";  // 업로드할 경로
      String realPath = "";
   
      /*
       * 파일 업로드 시작
      */

      InputStream in = null;
      OutputStream os = null;
   
      try
      {
        // 파일 확장자 구하기
        String ext = att.getFileName();
   
        int last = 0;
        boolean findExt = false;
    
        while((last = ext.indexOf(".")) != -1) {
          findExt = true;
          ext = ext.substring(last+1);
        }
    
        // 파일 이름 중복 방지
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String rndName = sdf.format(new java.util.Date()) + System.currentTimeMillis();
    
        // 실제 저장될 파일 이름
        realName = findExt ? rndName + "." + ext : rndName;
    
        // 실제 저장될 디렉토리 구하기
        ServletContext application = getServlet().getServletContext();
        realPath= application.getRealPath(path);
    
        // 실제로 저장될 파일 풀 경로
        File file = new File(realPath + "/" + realName); 
    
        // 저장하기(복사)
        os = new BufferedOutputStream(new FileOutputStream(file));
        in = att.getInputStream();
    
        int i;
        byte[] buffer = new byte[1024*4];
        while((i=in.read(buffer, 0, 1024*4)) != -1) {
          os.write(buffer, 0, i);
        }
   
      }
      catch(Exception e) {
        e.printStackTrace();
      }
      finally {
        try { if(os != null) os.close(); } catch (IOException ignore) { }
        try { if(in != null) in.close(); } catch (IOException ignore) { }
      }
      /*
       * 파일 업로드 끝
      */
   
        request.setAttribute("realPath", realPath);   // 실제 저장되는 풀경로
        request.setAttribute("realName", realName);   // 실제 저장된 파일 이름
        request.setAttribute("fileName", fileName);   // 업로드 했을때의 파일 이름
        request.setAttribute("fileSize", fileSize);   // 파일 사이즈
        request.setAttribute("fileType", fileContextType); // 파일 종류
      }
  
      request.setAttribute("subject", subject);   // 제목
  
      return mapping.findForward("result");
  }
}


result.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>file upload result</title>
</head>
<body>

subject : <bean:write name="subject"/> <br />
realPath : <bean:write name="realPath"/> <br />
realName : <bean:write name="realName"/> <br />
fileName : <bean:write name="fileName"/> <br />
fileSize : <bean:write name="fileSize"/> <br />
fileType : <bean:write name="fileType"/>

</body>
</html>
반응형

'Framework > Struts' 카테고리의 다른 글

*.jsp 접근 막기  (0) 2009.09.03
스트러츠(Struts) 기본 세팅  (6) 2009.06.22
//