春季宠物护理样本,控制器动作如何与jsp相关联?

时间:2010-01-19 19:47:05

标签: java spring

看看泉水样品应用宠物护理。

患者控制器看起来像:

package org.springframework.samples.petcare.clients.patients;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value = "/owners/{ownerId}/patients/{patient}")
public class PatientController {

    private final PatientRepository repository;

    @Autowired
    public PatientController(PatientRepository repository) {
        this.repository = repository;
    }

    @RequestMapping(method = RequestMethod.GET)
    public Patient get(Long ownerId, String patient) {
        return repository.getPatient(ownerId, patient);
    }

    @RequestMapping(value = "/edit", method = RequestMethod.GET)
    public Patient getForEditing(Long ownerId, String patient) {
        return repository.getPatient(ownerId, patient);
    }

    @RequestMapping(method = RequestMethod.PUT)
    public void update(Patient patient) {
        repository.savePatient(patient);
    }

    @RequestMapping(method = RequestMethod.DELETE)
    public void delete(Long ownerId, String patient) {
    }

}

这些动作究竟与jsp有关?

2 个答案:

答案 0 :(得分:1)

它使用RequestToViewNameTranslator bean来解析相应的视图名称。您可以选择在配置中定义此类型的bean。如果您没有明确定义视图转换器bean,那么DispatcherServlet将自动实例化DefaultRequestToViewNameTranslatorDefaultRequestToViewNameTranslator从请求网址中找出视图名称。

Spring参考指南应该在Web MVC部分中提供一些相关信息。

这基本上是Spring的“约定优于配置”原则的另一个例子。

答案 1 :(得分:1)

没有看到上下文定义,就不可能肯定地说。

但是,鉴于这看起来像一个REST控制器,Spring很可能会将返回值直接编组到它们的表示形式(XML或JSON,使用MarshallingView)。在这种情况下,通常意义上 没有视图。

或者,再次根据上下文的配置方式,如果控制器没有指明要使用哪个视图,那么Spring会猜测,使用原始请求URI(例如,对/x的请求将转发给查看/x.jsp)。这是Spring的“约定优于配置”实践的一部分。

要确定哪个是哪个,您需要查看上下文中的ViewResolver实现。