当前位置: 首页 > 知识库问答 >
问题:

Spring请求映射404状态[重复]

耿招
2023-03-14

好的,我知道这里有20个帖子有同样的问题,但是没有一个对我有帮助,所以这可能是重复的,但是我已经检查了所有其他帖子,没有一个解决了我的问题,所以一定有什么地方我做错了,或者我没有从前面提到的问题的答案中做正确的修改

我正在尝试使用Spring制作一个小应用程序,我还在试验它,但我花了大约4天的时间试图找出问题所在,但我就是做不到。每当我试图从控制器获取jsp时,我仍然会得到HTTP状态404。除了通过Tomcat获得404状态外,没有别的。。。

WebAppController:

@Controller
public class WebAppController {

    @RequestMapping(value="/login", method = RequestMethod.GET)
    public String login() {
        System.out.println("You have entered the login maprequest");
        return "test1";
    }

}

web.xml:

    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <display-name>Hotel Application</display-name>
    <servlet>
        <servlet-name>WebApp</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>WebApp</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

网络应用。xml:

   <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    <context:component-scan base-package="com.iquestgroup" />

    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/jsp/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
</beans>

这种配置适用于一个简单的maven项目,其中只包含上述内容。问题是,在一个包含3个模块(持久性、服务和webapp)的maven项目中,完全相同的东西不起作用。在webapp中,我复制了完全相同的东西,当我在服务器上运行它时,我得到404 http状态。。。尽管模块正在成功构建。

L.E.公认答案的第一部分是指那些从Spring开始的人所犯的一个常见的servlet映射错误。我的问题与此无关,在最初的回答之后,我最终将其删除。为了不让读者感到困惑,公认答案的第一部分引用了以下代码:

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

共有2个答案

金瑞
2023-03-14

首先,您可以使用下面的任何根控制器进行监听/请求。

@Controller
@RequestMapping ("/")
public class RootCtrl {

Logger logger = Logger.getLogger(RootCtrl.class);

@RequestMapping (value = "/", method = {RequestMethod.GET, RequestMethod.POST})
public String index(ModelMap model) {

    // redirect to login page
    return "redirect:admin/index";
}}

使用该控制器,您将所有请求映射到root。然后您可以将请求重定向到登录控制器。

这都是关于请求映射的。您的loginController或webController应该侦听一个请求,该请求应该在之前指定。在我的应用程序中,登录控制器监听/admin请求路径。然后,我的登录控制器如下所示:

@Controller
@RequestMapping ("/admin")
public class LoginCtrl {

@RequestMapping (value = "/index", method = {RequestMethod.GET, RequestMethod.POST})
public String index(@RequestParam (value = "captchaId", defaultValue = "") String captchaId, ModelMap model, HttpServletRequest request, HttpServletResponse response) {

    if(StringUtils.isNullOrEmpty(captchaId)){
        captchaId = RandomGUID.getRandomGUID();
    }

    model.addAttribute("captchaId", captchaId);

    // redirect to login page
    return "login";
}

当您将从此路径获得请求时:localhost/SampleProject/admin/index.映射将起作用。

逄学潞
2023-03-14

改变

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

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

目前,由于/*,映射的DispatcherServlet被标记为处理所有请求。这意味着它还将尝试处理发送到/WEB-INF/jsp/test1的请求。jsp。它显然没有相应的处理程序,而且会失败。

模式/的特殊之处在于,如果没有其他模式匹配,它是默认的回退模式。如果有一个映射到请求路径的Servlet,那么在映射的DispatcherServlet之前将选择该Servlet

大多数(可能是所有)Servlet容器都映射了一个Servlet来处理带有*. jspurl-模式的呈现JSP。这将优先于映射到/的DispatcherServlet。

如果在这些更改后您仍然获得404,那么有一些可能性。

在INFO级别的Spring日志-它注册的任何处理程序方法(@Controllerbean中的@Request estMap注释的方法)。如果您在日志中没有看到任何这些,那么您的Web应用程序没有被正确/成功地部署。

如果您的Servlet容器嵌入到您的IDE中,请检查部署的应用程序上的相应选项卡/视图。如果它是独立的,请检查您生成的. war文件是否在适当的目录中并正确展开。

 类似资料:
  • 我对laravel是个新手,我总是在浏览器控制台中收到这个错误消息 源地图错误:请求失败,状态404 资源地址:超文本传输协议://[myurl]/js/app.js 源地图地址:popper.js.map 我不知道问题出在哪里。当我尝试访问应用程序时。js文件通过URL工作。 我有第二个项目与完全相同的设置,我没有得到任何错误。我不知道我错过了什么。

  • 我在youtube上按部就班地学习教程,但我没有得到结果。代码如下: 主要应用 或来自Chrome的以下内容: 白标签错误页 此应用程序没有/error的显式映射,因此您将其视为一种后退。

  • 这是我的控制器,它将请求映射到以下url

  • 问题内容: 我刚刚更新了Angular + Ionic的新版本,并且处理远程请求的方法停止工作并始终返回404响应。 请求如下: 处理远程请求的方法的代码如下: 但是没有运气。 服务器端通过这种方式处理请求: 如果我试图使用邮递员或卷曲发送请求,一切似乎都在工作。 离子信息: AngularJS版本: 我该如何解决? 非常感谢您的任何建议 问题答案: 哼,我只是遇到了同样的问题:标头表明它已经被拿

  • 我正在制作一个简单的程序,以几个字段作为输入,然后点击确认按钮后,confirm.jsp将出现。 我创建了Controller.java servlet来标识单击的按钮,然后打开JSP。controller.java存储在web-inf/classes/ch2/servletController目录中,而submit.jsp、register.jsp、confirm.jsp存储在/ch2/serv

  • 我在一个spring mvc应用程序中工作(我在spring mvc中是新的)。