如何设置web.xml和dispatcher-servlet.xml进行映射?

时间:2019-05-27 09:50:07

标签: java spring-mvc

我想从@WebServlet映射更改为SpringMVC映射。为了适应这些情况,我使用@WebServlet设置了一个简单的LoginApplication。

现在我想通过添加web.xml和dispatcher-servlet.xml来切换到springMVC

我已经在构建路径中添加了所有必要的依赖项,包括commons-logging,jstl,servlet-api,spring-aop,spring-beans,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状态404 –未找到

我感谢任何建议:-)

1 个答案:

答案 0 :(得分:0)

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用于重定向到前缀为/ pages的jsp页面,后缀.jsp现在将在war文件中具有指向“ /pages/loginPage.jsp”的重定向路径。

<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>