gpt4 book ai didi

java - Spring MVC @RequestMapping 对于类级别和方法级别不起作用

转载 作者:行者123 更新时间:2023-12-02 19:58:59 25 4
gpt4 key购买 nike

我尝试放置 2 个请求映射,因为我想指向 home/home,因为稍后我将拥有另一个具有相同名称的 Controller ,即 about/home。但我不知道为什么它不起作用。如果只有家,它可以工作,但家/家或关于/家不工作。类(class)级别不起作用。

这是 Controller

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.constant.server.HelperConstant;

@Controller
@RequestMapping("/home")
public class HomeController
{
@RequestMapping("/home")
public String doDisplayPage()
{
return HelperConstant.VIEW_HOME;
}

}

这是jsp

<html>
<body>
<form action="home/home">
<input type="text" name="t1"><br>
<input type="text" name = "t2"><br>
<input type ="submit">
</form>
</body>
</html>

我遇到了 HTTP 状态 404 -

已编辑

附上配置文件

package com.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}

@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[] {SpringConfig.class};
}

@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[] {"/"};
}

}

这是另一个配置文件

package com.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
@ComponentScan({"com.controller"})
public class SpringConfig
{
@Bean
public InternalResourceViewResolver viewResolver()
{
InternalResourceViewResolver vr = new InternalResourceViewResolver();

//vr.setPrefix("/WEB-INF/");
vr.setSuffix(".jsp");

return vr;
}

}

附上文件夹结构图 enter image description here

还有一个额外的发现,我试图在 home/home.jsp 中查找 jsp。我能知道为什么会有这样的行为吗?正确的做法应该是查看 home.jsp。如果删除类级别注释,那么它工作正常,或者我在 webapp home 中创建一个文件夹,它工作正常,但再次单击提交后,它会查找 home/home/home.jsp

我添加了一个方法=“POST”

现在问题出在重启tomact之后

enter image description here

点击提交后像这样

enter image description here

如果再次点击提交显示错误404

enter image description here

这是我的 web.xml,但我已经删除了它,因为我已经使用了 java 或配置

<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>

<welcome-file-list>
<welcome-file>home.html</welcome-file>
<welcome-file>home.htm</welcome-file>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>

</web-app>

最佳答案

问题是你的行动路径<form action="home/home">这是一个相对路径,意味着它将执行以下操作。

http://example.com/web_main/home - form action - > 
http://example.com/web_main/home/home (200) - form action ->
http://example.com/web_main/home/home/home (404)

其他人建议/home/home但这并没有考虑您的应用程序上下文路径。结果如下。

http://example.com/web_main/home - form action - > http://example.com/home/home

请注意 web_main消失了。

要解决您的问题,您需要利用 JSTL,并将其添加到 JSP 中。

<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

<c:url value="/home/home" var="homeUrl" />`
<form action="${homeUrl}">

将导入添加到 JSP 的顶部。

关于java - Spring MVC @RequestMapping 对于类级别和方法级别不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58579400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com