2011-06-13 21 views
0

은 현재 내가 클라이언트 측에 의해 호출지고 서블릿 CsmServlet.java이 struts2하기 위해, 여기에 web.xml 부분을 완벽일반 자바에서 마이그레이션하는

<servlet> 
    <display-name>upload</display-name> 
    <servlet-name>upload</servlet-name> 
    <servlet-class>com.abc.csm.web.CsmServlet</servlet-class> 
</servlet> 

입니다. 이제 스트럿츠 2를 사용하고 모든 코드를 다시 고려해야하므로 struts.xml에서 CsmServlet 클래스로 호출해야합니다. 여기

지금 내가

<struts> 
<package name="default" extends="struts-default" namespace="/"> 
    <action name="showResult"> 
     <result>/csminfo.jsp</result> 
    </action> 

</package> 
</struts> 

내 질문을 반복 할 것이다,

  1. 내가 내 스트럿에 무엇을 추가하여야한다 다른 페이지로 리디렉션을하고, 내 struts.xml입니다. xml을 사용하여 CsmServlet 클래스에 요청하십시오.
  2. web.inf를 변경해야합니까?

서블릿 내용

protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException { 

PrintWriter out = resp.getWriter(); 
Map<String, String> requestParamter=getParamMap(req.getParameterMap()); 
RequestTransformer transformer = new RequestTransformer(req); 

//(map and operation type) goes to CSMData 
CSMData data = transformer.transform(requestParamter); 

RequestHandler handler = new RequestHandler(req); 
String result = handler.handle(data); 

log.info(result); 
out.println(result); 

} 
private Map<String,String> getParamMap(Map<String,String[]> params) 
{ 
Map<String,String> paramsMap = new HashMap<String, String>(); 
for(Map.Entry<String,String[]> entry : params.entrySet()) 
{ 
paramsMap.put(entry.getKey(),entry.getValue()[0]); 
} 
return paramsMap; 

} 

답변

2

스트럿츠는 MVC 아키텍처를 구현으로, 이상적으로 당신이 당신의 서블릿 제어 부분을 일을하고 싶지 않을 것이다. 서블릿의 로직을 Struts 액션에 복사 할 수 있습니다. 일반적으로 , 당신은 두 가지 옵션 것이다 :

  1. 망가 ( 컨트롤러와 같은) 당신이 코드에서 서블릿을하고 스트럿을 제어 핸들을 할 수 있습니다. 서블릿 ( any 인 경우)에서 비즈니스 로직을 struts의 조치로 복사하십시오.
  2. 더 큰 변경 사항을 원하지 않는 경우 Strut의 작업 요청을 이미 작성된 서블릿으로 전달할 수 있습니다.

희망이 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다. 내 서블릿 콘텐츠를 업로드했습니다. 내 서블릿 코드를 어떻게 처리해야하는지 설명해 주시겠습니까? – abi1964

+0

서블릿이 렌더링과 비즈니스 로직을 수행하고있는 것처럼 보입니다. 앞서 언급했듯이 두 가지 옵션이 있습니다. 옵션 2는 매우 간단하지만 struts에서 서블릿으로 요청을 전달하는 곳에서 최상은 아닙니다. –

1

Struts에는 모든 요청을 받아들이고 작업을 수행하는 Action 클래스로 전달하는 프런트 컨트롤러 서블릿이 있습니다.

서블릿이 작동하지 않는다고 생각합니다.

클라이언트가 요청할 때 프런트 컨트롤러에서 호출하는 Action 클래스 여야합니다.

+0

답장을 보내 주셔서 감사합니다. 제 질문에 서블릿 코드를 추가했습니다. 어떻게해야합니까? 나는 struts2에 처음이다. – abi1964

+0

그렇지 않다; 나는 일하러 가고 있습니다. 나는 지금 시간이 없다. – duffymo

+0

:) 어쨌든 감사합니다. – abi1964

관련 문제