gpt4 book ai didi

java - Spring框架页面方向

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:25 25 4
gpt4 key购买 nike

背景:我对 Java/Spring 比较陌生,并且继承了一个基于它们构建的项目。我们正在迁移到 AWS Elastic Beanstalk,它更改了 JSON 请求的主页位置:

www.mywebsite.com/myApp/myAppJsonService

至:

www.mywebsite.com/myAppJsonService

效果很好 - JSON 请求中的所有函数(其中大部分)都运行良好。我有另一个页面,它接受老师通过 HTML 表单提交上传的测验并解析数据。用于指向的表单:

www.mywebsite.com/myApp/controllers/importQuiz

所以我把它改为:

www.mywebsite.com/controllers/importQuiz

web.xml 文件具有:

<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:context/Controllers.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/controllers/*</url-pattern>
</servlet-mapping>

以及对应的Controllers.xml代码:

<bean id="importExamController" class="com.myapp.controllers.ImportExamController">
<property name="commandClass" value="com.myapp.objects.spring.FileUploadBean"/>
<property name="myappManager" ref="myappManager"/>
</bean>

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/importExam">importExamController</prop>
<prop key="/heartbeat">heartBeatController</prop>
</props>
</property>
</bean>

按照我的阅读方式,无论 URL 中前面的“myapp”如何,它都应该在 URL 中找到“/controllers/”,查找 Controllers.xml 文件并找到“/importExam”并将其定向到“importExamController”。那并没有发生。显然,我的逻辑有问题,但我似乎找不到它。任何帮助将非常感激。

编辑:

在日志中进行一些挖掘,我发现:

INFO: WSSERVLET14: JAX-WS servlet initializing
Aug 27, 2011 7:21:06 PM com.sun.xml.ws.transport.http.servlet.WSServletDelegate doGet
SEVERE: caught throwable
ClientAbortException: java.net.SocketException: Broken pipe
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:373)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:327)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:396)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:385)

这样的情况会持续一段时间。在我看来,这似乎证实了数据正试图发送到错误映射的内容的想法。让我知道这是否意味着其他含义或者只是无关紧要。

最佳答案

首先,您到底为什么要在 URL 中添加 Controller ?其次,您对它应该如何工作有正确的想法,并且您可能对某些未正确配置的内容是正确的。

您确实应该阅读 Spring 3.0+ 中增强的 MVC 功能。使用注释和 mvc 命名空间,您的代码将如下所示(例如):

@Controller
@RequestMapping("importExam")
public class ExamController {

private final examService;

@Autowired
public ExamController(ExamService examService) {
this.examService = examService;
}

@RequestMapping(method=RequestMethod.GET)
public String getExams(ModelMap model) {
model.addAttribute("exams", examService.getExams());
return "exams";
}

}

你的 Controller 就是:

<mvc:annotation-config/>

加载 Controller 并将请求映射绑定(bind)到url。这也允许使用通配符。上面的 Controller 会将/importExam 的所有 URL 请求连接到此 Controller ,并在基本上下文中处理默认的 GET 方法。您可以添加带有附加请求映射的嵌套方法,这些映射位于/importExam 上下文下。

关于java - Spring框架页面方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212061/

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