1. 새로운 ActionServlet을 하나 만듭니다.
package oraclejava;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import
org.apache.struts.action.ActionServlet;
import java.io.IOException;
//struts-config.xml과 메시지
Resource 파일을 수정 했을 때 자동으로 인식할 수 있게...
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.util.RequestUtils;
public class NewActionServlet extends ActionServlet
{
protected void
Process (HttpServletRequest request, HttpServletResponse
response)
throws
IOException, ServletException {
String uri =
request.getRequestURI();
if(uri.indexOf("reload.do") != -1) {
init();
RequestUtils.selectModule(request,
getServletContext());
ModuleConfig config =
getModuleConfig(request);
getRequestProcessor(config).init(this,
config);
RequestDispatcher dispatcher =
request.getRequestDispatcher("/reload.jsp");
dispatcher.forward(request, response);
}
else
{
super.process(request, response);
}
}
}
위의 NewActionServlet은
URL에 reload.do가 포함되어 있는 경우 초기화를 수행 하도록 합니다. 초기화는 두 단계로 진행하는데 첫째
ActionServlet의 init() 호출하여
struts-config.xml을 초기화 하며 둘째 RequestProcessor
클래스를 초기화 합니다. RequestProcessor 클래스가 초기화 되지
않으면 struts-config.xml이 수정되기 전에 사용된
Action 클래스들이 재사용 되므로 수정된 내용이 반영되지 않을 수도 있습니다.
2. web.xml을 수정 합니다.
(사용자의 요청을
NewActionServlet이 수행하도록 수정 합니다.)
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>oraclejava.NewActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
3. ReloadStrutsConfigAction 클래스를 만듭니다. ( 이 클래스가 reload action인 reload.do에 대해 대응을 하는데 아무 일도 하지 않습니다.)
/*
* Created on
:namespace prefix = st2 ns = "urn:schemas-microsoft-com:office:smarttags"
/>2005. 5. 6.
*
* TODO To change
the template for this generated file go to
* Window -
Preferences - Java - Code Style - Code Templates
*/
package oraclejava;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import
org.apache.struts.action.ActionMapping;
import
org.apache.struts.action.ActionForward;
import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
/**
* @author
:namespace prefix = st1 ns =
"urn:schemas:contacts" />이 종철
*
* TODO To change
the template for this generated type comment go to
* Window -
Preferences - Java - Code Style - Code Templates
*/
public class ReloadAction extends Action {
public
ActionForward execute(
ActionMapping mapping,
ActionForm
form,
HttpServletRequest
request,
HttpServletResponse response) throws Exception
{
return
null;
}
}
4. struts-config.xml에 아래를 추가 합니다. (action-mappings에 추가)
<action
path="/reload"
type="oraclejava.ReloadAction"
/>
5. XML파일이나 메시지 리소스 등을 수정 후
URL에서 /reload.do를 불러주면 웹 서버를 재시작 하지 않더라도 수정 사항이
반영 됩니다.
댓글 없음:
댓글 쓰기