Как настроить web.xml и dispatcher-servlet.xml для отображения? - PullRequest
0 голосов
/ 27 мая 2019

Я хочу перейти с Mapping @WebServlet на SpringMVC Mapping. Чтобы освоиться, я настроил простое приложение LoginApplication с использованием @ WebServlet.

Теперь я хотел перейти на springMVC, добавив web.xml и dispatcher-servlet.xml

Я добавил все необходимые зависимости в мой путь сборки, включая ведение журнала общего доступа, jstl, servlet-api, spring-aop, spring-bean, spring-context, spring-core, spring-expression, spring-web и spring -webmvc. Я добавил аннотации @Controller @RequestMapping ("XXXXX") в мои контроллеры и @GetMapping в методы, выполняющие перенаправления и прочее.

Часть моего web.xml:

<servlet>
        <servlet-name>sobster</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/sobster-servlet.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>sobster</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

Часть моего sobster-servlet.xml:

    <context:component-scan base-package="com.sobster" />
    <mvc:annotation-driven />

Где com.sobster - мой пакет, содержащий контроллеры

Часть контроллера:

    @RequestMapping("/")
    @Controller
    public class StartPageController extends HttpServlet {
      private static final long serialVersionUID = 1L;

      @GetMapping
      protected void doGet(HttpServletRequest request, HttpServletResponse response)
          throws ServletException, IOException {
        response.sendRedirect("login.jsp");
      }

    }

Я ожидал, что любой запрос сейчас будет обработан web.xml, который ищет sobster-servlet.xml для получения контроллеров. sobster-servlet.xml теперь проверяет контроллеры в com.sobster и выполняет соответствующее действие (например, перенаправление на login.jsp после получения вызова от «/»).

Но все, что я получаю, это HTTP Status 404 - Not Found

Я ценю любые предложения: -)

1 Ответ

0 голосов
/ 27 мая 2019

Класс starPageController должен быть похож на приведенный ниже код. Ответ метода login будет перенаправлен на loginPage.jsp. Полный URL-адрес определяется классом InternalResourceViewResolver, который настроен ниже

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value = "/login")
public class StartPageController {
    @RequestMapping(method = RequestMethod.GET)
   public String login(HttpServletRequest req, HttpServletResponse response,ModelMap model) throws Exception {
       return "loginPage";
   }
}

Файл sobster-servlet.xml должен выглядеть следующим образом. Класс bean-компонента InternalResourceViewResolver предназначен для перенаправления на страницу jsp с префиксом / pages, а суффикс .jsp теперь будет иметь путь перенаправления к /pages/loginPage.jsp в файле war.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans     
   http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
   http://www.springframework.org/schema/context 
   http://www.springframework.org/schema/context/spring-context-4.0.xsd
   http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

    <context:component-scan
        base-package="com.sobster" />
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...