【问题标题】:Spring: Post request not reaching controller classSpring:发布请求未到达控制器类
【发布时间】:2014-01-28 12:32:11
【问题描述】:

我正在开发我的第一个基于 Spring 的示例项目。以下是我的 dispatcher-servlet.xml 的摘录。

<mvc:view-controller path="" view-name="test" />
<!-- location to scan for controllers -->
<context:component-scan base-package="com.test.demo.student.controller" />

我尝试向以下网址发帖,但似乎从未到达相应的控制器类:

网址:http://localhost:8080/TestProject/student/retrieveDetails

@Controller
@RequestMapping("student")
public class StudentController {

private final Logger logger = Logger.getLogger(StudentController.class);

@Autowired
public StudentService studentService;

public void setStudentService(StudentService studentService) {
    this.studentService = studentService;
}


 @RequestMapping(value = "/retrieveDetails", method = RequestMethod.POST)
public @ResponseBody String retrieveDetails(@RequestBody RetrieveStudentRequestBo retrieveStudentRequestBo,HttpServletRequest req,HttpServletResponse res) {

    logger.info("Entering StudentController.retrieveDetails()" );

帖子{"testID":"1"}的输入

ERROR [400]
Bad Request 

是响应。

为什么我得到了 400 错误,虽然一切似乎都到位了?

【问题讨论】:

  • 请添加您的控制器代码。另外,您的 jar 文件名是什么?你在哪个服务器上运行?你如何构建你的应用程序(Maven?),你如何部署你的应用程序?
  • 添加了控制器代码。我从 Eclipse 运行它,我使用 Tomcat 7.0。我没有使用 Maven。我从eclipse编译代码。你能告诉我你指的是哪个jar文件吗?
  • 要在 tomcat 上运行您的应用程序,您需要先构建它,然后获取您的 .war 文件(这是构建工件)并将其部署到 tomcat(您使用 Eclipse tomcat插件?)。
  • 让我们看看你的RetrieveStudentRequestBo 类。还将您的记录器设置为调试以查看确切原因。
  • &lt;url-pattern&gt; 有什么你的DispatcherServlet

标签: java spring jakarta-ee spring-mvc


【解决方案1】:

请在student前加斜杠:

@Controller
@RequestMapping("/student")
public class StudentController {
...
}

此外,我希望您的构建工件将是 TestProject.war,因为这是您路径的一部分。

【讨论】:

  • 我在“学生”之前添加了斜线并尝试了 - 没有用。请告诉我,我在哪里可以看到这个jar文件,以便我检查和确认。
  • 它是 maven 项目吗?你如何构建你的项目?如果您不确定能否回答我的问题,请描述一下您正在做什么以便在本地 tomcat 上运行您的应用程序
  • 你认为为什么会导致 400?
  • 从 eclipse Project->Clean to build project。要运行项目,我会右键单击项目 - 运行方式 - 在服务器上运行
  • Project-->clean 不会创建可部署的战争。您可以执行以下操作:1. 只需从 eclipse 市场安装 sts(spring 源工具)并创建一个新的 spring mvc 项目或 2. 我可以指导您如何获取您的战争并将其部署到您的 tomcat。如果你问我 - 第一个更容易
猜你喜欢
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 2020-03-09
  • 1970-01-01
相关资源
最近更新 更多