블로그 이미지
헤이장

Notice

Recent Post

Recent Comment

Recent Trackback

calendar

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
  • total
  • today
  • yesterday
2009. 7. 27. 13:27 Web/Jsp

<init-param> 서블릿 초기화 파라미터 

서블릿은 init(ServletConfig) 에서 부터 ServletConfig 를 가지게 된다
생성자에서는 없다

서블릿 클래스에 코딩하지 않고 DD 파일에 정의해두면 변경시 서블릿을 바꿀 필요도 다시 컴파일 할 필요도 없다

 web.xml
 <servlet>
        <servlet-name>InitParamTest</servlet-name>
        <servlet-class>InitTestClass</servlet-class>
        <init-param>
            <param-name>email</param-name>
            <param-value>remns@naver.com</param-value>
        </init-param>
        <init-param>
            <param-name>addr</param-name>
            <param-value>busan, korea</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>InitParamTest</servlet-name>
        <url-pattern>/init</url-pattern>
    </servlet-mapping>
</servlet>

 InitTestClass.java
 public class InitTestClass extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        out.print("email : " + getServletConfig().getInitParameter("email") + "<br/>");
        out.print("addr : " + getServletConfig().getInitParameter("addr"));
    }
}


결과
     email : remns@naver.com
     addr : busan, korea

 

<context-param> 컨텍스트 초기화 파라미터

모든 웹 애플리케이션에서 파라미터를 공유하기 위해서 사용한다

web.xml 
    <servlet>
      ...생략...
    </servlet>

    <context-param>
        <param-name>id</param-name>
        <param-value>remns</param-value>
    </context-param>


 ContextTestClass.java
 public class ContextTestClass extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        out.print(getServletContext().getInitParameter("id");
    }
}

posted by 헤이장
2009. 7. 27. 13:22 Web/Jsp

 DownJar.java

// import 생략

public class DownJar extends HttpServlet { 

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                                                                        throws ServletException, IOException {
        resp.setContentType("application/jar");
        ServletContext ctx = getServletContext();
        InputStream is = ctx.getResourceAsStream("/dwr.jar");
        int read = 0;
        byte[] bytes = new byte[1024];

        OutputStream os = resp.getOutputStream();
        while ((read = is.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        }
        os.flush();
        os.close();
    }
}


경로에 있는 파일을 읽어 출력 스트림에 기록한다

posted by 헤이장
2009. 7. 27. 13:13 Web/Framework

사용 클래스 : com.opensymphony.xwork2.ActionChainResult

두 개의 다른 액션에서 처음 액션의 프라퍼티를 다음 액션에 세팅하고 싶을때 chain 인터셉터를 이용한다 

예를 들어 회원등록 액션과 로그인 액션이 있는데
회원등록 후 그 정보로 이어서 바로 로그인으로 진행되게 한다

 RegisterUser.java

 public class RegisterUser implements Action { 

     private String userId;
     private String password;
     private String message; 

     public String execute() throws Exception {
          // 비지니스 로직 생략
          return SUCCESS;
     }
     // getter, setter 생략
}


 LoginAction.java

 public class LoginAction implements Action {
     private String userId;
     private String password;
     private String message;
     public String execute() throws Exception {
          // 비지니스 로직 생략
          return SUCCESS;
     }
     //getter, setter 생략
}

 struts.xml

 <package name="ex" extends="struts-default">
     <action name="registerAndLogin" class="action.RegisterUser">
          <interceptor-ref name="params"/>
          <result name="success" type="chain">login</result>
     </action>

     <action name="login" class="action.LoginAction">
          <interceptor-ref name="chain"/>
          <interceptor-ref name="params"/>
     <result name="success" type="dispatcher">/result.jsp</result>
     </action>
</package>

posted by 헤이장
2009. 7. 27. 13:10 Web/Framework

- struts.xml - 

<action name="*/*" class="action.{1}Action" method="{2}">
     <result name="success">{2}.jsp</result>
</action>

첫번째 * 은 {1} 에, 두번째 * 은 {2} 에 해당된다

http://localhost:8084/Struts2/First/second.action

이 경우에
action/FirstAction.java 에서 second() 를 실행하고
second.jsp 로 결과를 보낸다

posted by 헤이장
2009. 7. 27. 13:08 Web/Jsp

< 리다이렉트 >

 - 다른 URL 로 가라고 브라우저에게 지시하는 것

  • 클라이언트에서 일어난다
  • 요청 주소가 바뀐다
  • 요청과 응답 객체를 전달하지 않는다
  •  response.sendRedirect("Redirect.jsp");



< 요청디스패치 >

- 서버상에 있는 다른 컴포넌트로 작업을 넘기는 것

  • 서버에서 일어난다
  • 요청 주소가 바뀌지 않는다
  • 요청과 응답 객체를 전달한다
     
     RequestDispatcher view = request.getRequestDispatcher("ReqDispatcher.jsp"); 
     view.forward(request, response);

posted by 헤이장