从普通的Java迁移到struts2

问题描述

| 当前我有一个Servlet
CsmServlet.java
,它正在被客户端调用,这是
web.xml
部分
<servlet>
    <display-name>upload</display-name>
    <servlet-name>upload</servlet-name>
    <servlet-class>com.abc.csm.web.CsmServlet</servlet-class>
</servlet>
这是完美的。现在我必须使用struts 2并重新分解所有代码,因此在我的
struts.xml
中使用什么来调用
CsmServlet
类。 这是我的struts.xml,现在我正在重定向到另一个页面
<struts>
<package name=\"default\" extends=\"struts-default\" namespace=\"/\">
    <action name=\"showResult\">
        <result>/csminfo.jsp</result>
    </action>

</package>
</struts>
我会重复我的问题, 我应该在struts.xml中添加什么以向CsmServlet类发出请求 我是否需要对web.inf进行任何更改? 我的Servlet内容
 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;

}
    

解决方法

        当Struts实现MVC体系结构时,理想情况下,您不希望让servlet来控制部分。您可能希望将逻辑从servlet复制到Struts操作。 通常,您将有两个选择: 您的代码中没有servlet(如 控制器),让支柱 处理控制。复制 servlet的业务逻辑(如果 任何)插入支柱的动作。 如果您不希望进行较大的更改,可以将来自Strut的操作的请求转发到已经创建的servlet。 希望这可以帮助。     ,        Struts有一个前端控制器servlet,它接受所有请求并将它们传递给执行工作的Action类。 我认为您的servlet已经失业。 听起来它应该是一个Action类,当客户要求时,它由前端控制器调用。