Весенняя сервлет-картография - PullRequest
0 голосов
/ 09 марта 2012

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

Меня попросили сделать файл XML.

Когда я захожу по адресу ниже с помощью браузера.Я должен увидеть ниже XML.http://localhost:8080/update/update.jsp

<update_info app_name="ktp_app" version="2012031001" count="">
  <apache_start version="20120310011255" type="bat" reg="123123" size="423">
  <remote>http://192.168.0.1/ka/apache_start.bat</remote>
  <remote>apache_start.bat</remote>
  </apache_start>
</update_info>

но в web.xml у меня есть этот параметр.

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.byto</url-pattern>
</servlet-mapping>

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

@Controller
public class DownloadManageController {

    @Autowired
    private DownloadManageService downService;

    @RequestMapping("/ajax/add_download_hour")
    public void addDownloadHour(HttpServletRequest request, HttpServletResponse response) throws IllegalArgumentException, SecurityException, InvalidHourRangeException, IOException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
        downService.addDownloadLimit(
            request.getParameter("app_cmd"),
            request.getParameter("start_hour"),
            request.getParameter("end_hour"), 
            request.getParameter("limit_count"));
    }
    ...
}

Но у меня также есть этот контроллер.

@Controller
public class UpdateXmlController extends HttpServlet {

    @Autowired
    private UpdateXmlService updateService;

    @RequestMapping("/update")
    protected ModelAndView getUpdateData(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String cmd = request.getParameter("cmd");
        Map resultMap = null;
        PrintWriter writer = response.getWriter();
        try {
            resultMap = updateService.getUpdateData(cmd);
            request.setAttribute("server", resultMap.get("server"));
            request.setAttribute("package", resultMap.get("package"));
            request.setAttribute("file", resultMap.get("file"));
        } catch(NoCmdException ex) {
            return new ModelAndView("error_page", "errorMsg", ex.getMessage());
        } catch(DownloadCountExceedException ex) {
            return new ModelAndView("error_page", "errorMsg", ex.getMessage());
        } catch(Exception ex) {
            //System.out.println(ex.getMessage());
            //response.getWriter().write();
            ex.printStackTrace();
        }

        return new ModelAndView("update", "result", resultMap);
    }

}

, к которому мне нужно получить доступ с помощью http://localhost:8080/update/update.jsp.

Но я только способдоступ к этому контроллеру с http://localhost:8080/update/update.byto

Итак, вот мой ВОПРОС

как я могу получить доступ к этому контроллеру с адресом .jsp.

спасибомного.

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Не могли бы вы добавить еще одно отображение сервлета?

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.byto</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>

Почему URL должен быть http://localhost:8080/update/update.jsp?

РЕДАКТИРОВАТЬ - Как указывает Скаффман, этоприведет к бесконечному циклу.Я оставлю этот ответ на месте в качестве примера того, что не делать!

В качестве примера того, что происходит в Tomcat:

09-Mar-2012 16:49:11 org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet Test threw exception
java.lang.StackOverflowError
    at java.util.HashMap.getEntry(HashMap.java:344)
    at java.util.HashMap.containsKey(HashMap.java:335)
    at org.apache.catalina.connector.Request.removeAttribute(Request.java:1335)
    at org.apache.catalina.connector.RequestFacade.removeAttribute(RequestFacade.java:514)
    at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:256)
    at org.apache.catalina.core.ApplicationHttpRequest.removeAttribute(ApplicationHttpRequest.java:256)

...

at test.Test.doGet(Test.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at test.Test.doGet(Test.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
0 голосов
/ 11 марта 2012

Временно я решил эту проблему с файлом JSP.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
    getServletContext().getRequestDispatcher("/update.byto").forward(request, response);
%>

выше источника отправит всю информацию в контроллер Spring.

0 голосов
/ 09 марта 2012

Изменить это:

@Controller("/update")
...

  @RequestMapping("/update.jsp")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...