为了账号安全,请及时绑定邮箱和手机立即绑定

SpringMVC 无法到达控制器,每次都抛出 404

SpringMVC 无法到达控制器,每次都抛出 404

白猪掌柜的 2022-05-21 20:33:06
我的项目结构如下所示 -web.xml -<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">  <display-name>SpringWebApp</display-name>    <servlet>    <servlet-name>spring</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>spring</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>  <welcome-file-list>    <welcome-file>index.html</welcome-file>    <welcome-file>index.htm</welcome-file>    <welcome-file>index.jsp</welcome-file>    <welcome-file>default.html</welcome-file>    <welcome-file>default.htm</welcome-file>    <welcome-file>default.jsp</welcome-file>  </welcome-file-list></web-app>spring-servlet.xml -<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:p="http://www.springframework.org/schema/p"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-3.0.xsd">    <context:component-scan base-package="pac.test.*" />    <bean        class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/views/" />        <property name="suffix" value=".jsp" />    </bean></beans>但是,在加载索引后,当 home.jsp 明显存在于路径中时,单击超链接会导致 404(未找到资源)。我根本无法理解我在这里做错了什么。我已经仔细检查了所有的咒语等和路径。它应该工作,但没有!Spring 甚至没有以某种方式到达 Controller 类。
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

尝试以下操作:

  1. 更改@RequestMapping(value="/login.htm")为 @RequestMapping(value="/login")

  2. 更改<a href="login.htm">Login</a>为 <a href="/SpringWebApp/login">Login</a>

看起来您提供的链接不正确,因此您的控制器没有接收到它。


查看完整回答
反对 回复 2022-05-21
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

在你的web.xml你还没有定义spring-servlet.xml. 所以像这样定义spring-servlet.xml。web.xml


<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns="http://xmlns.jcp.org/xml/ns/javaee" 

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 

id="WebApp_ID" version="4.0">

  <display-name>SpringWebApp</display-name>


    <servlet>

    <servlet-name>spring</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>spring</servlet-name>

    <url-pattern>/</url-pattern>

  </servlet-mapping>


   <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>WEB-INF/spring-servlet.xml</param-value>

   </context-param>


  <welcome-file-list>

    <welcome-file>index.html</welcome-file>

    <welcome-file>index.htm</welcome-file>

    <welcome-file>index.jsp</welcome-file>

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.htm</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

</web-app>

现在写下你的spring-servlet.xml喜欢


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:p="http://www.springframework.org/schema/p"

    xmlns:context="http://www.springframework.org/schema/context"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-3.0.xsd">


    <context:component-scan base-package="pac.test" />

    <mvc:annotation-driven/>


    <bean

        class="org.springframework.web.servlet.view.InternalResourceViewResolver">

        <property name="prefix" value="/WEB-INF/views/" />

        <property name="suffix" value=".jsp" />

    </bean>

</beans>

像这样写你的控制器


@Controller

public class LoginController {


    @RequestMapping(value="/")

public ModelAndView loginRequest() {


        ModelAndView mv = new ModelAndView("home");

        return mv;

    }

}

而在index.jsp页面中,而不是 <a href="login.htm">Login</a>像这样写重写 <a href="/SpringWebApp/">Login</a>


查看完整回答
反对 回复 2022-05-21
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

@RequestMapping(value="/login.htm")

       public ModelAndView loginRequest() {

    ModelAndView mv = new ModelAndView("home");

    return mv;

}

像这样从“/login.htm”中删除“.htm”


 @RequestMapping(value="/login")

       public ModelAndView loginRequest() {

    ModelAndView mv = new ModelAndView("home");

    return mv;

}

并像这样更正您的超链接


<h2>

    <a href="/login">Login</a>

</h2>


查看完整回答
反对 回复 2022-05-21
  • 3 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信