переход с обычной Java на Struts2 - PullRequest
0 голосов
/ 13 июня 2011

В настоящее время у меня есть сервлет CsmServlet.java, который вызывается на стороне клиента, вот web.xml part

<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.xml, сейчас я делаю перенаправление на другую страницу

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

</package>
</struts>

Я повторю свой вопрос,

  1. Что мне добавить в мой struts.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 ]

2 голосов
/ 13 июня 2011

Поскольку Struts реализует архитектуру MVC, в идеале вы не хотели бы, чтобы ваш сервлет выполнял управляющую роль. Вы можете скопировать логику из вашего сервлета в действие Struts. В общем, у вас есть два варианта:

  1. У вас нет сервлетов в вашем коде (как контроллеры) и пусть распорки справиться с управлением. Скопируйте бизнес логика от сервлетов (если любой) в действиях распорок.
  2. Если вы не хотите больших изменений, вы можете перенаправить запрос от действия Strut на уже созданные сервлеты.

Надеюсь, это поможет.

1 голос
/ 13 июня 2011

Struts имеет сервлет фронт-контроллера, который принимает все запросы и передает их классам Action, которые выполняют эту работу.

Я думаю, что ваш сервлет не работает.

Похоже, это должен быть класс Action, который вызывается фронт-контроллером, когда клиенты запрашивают его.

...