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

controller方法中的B/W视图名称和@RequestMapping(value=“/...”)在Spring MVC中

艾修然
2023-03-14

我是Spring MVC的新手&经历了Craig Walls Spring4的实际操作。

考虑一下这个片段,

@RequestMapping(value = "/spittles", method = RequestMethod.GET)
    public String spittles(Model model, @RequestParam("max") long max,
                           @RequestParam("count") int count) {

        model.addAttribute("spittleList",spittleRepository.findSpittles(max, count));

        return "spittles";                 // <-- return view name
}

该图像显示spittles.jsp位于/WEB-INF/views/中

@Configuration
@EnableWebMvc                   // Enable Spring MVC
@ComponentScan(basePackages={"org.spittr"})
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver viewResolver() {

        InternalResourceViewResolver resolver =
            new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setExposeContextBeansAsAttributes(true);

        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(
                         DefaultServletHandlerConfigurer configurer) {

        /* configure static content handling */
        configurer.enable();
    }



}

3)为什么在输入URL时看不到。jsp扩展名

http://localhost:8080/web/spittles?max=238900&count=5

共有1个答案

殳经略
2023-03-14

对于你的问题:

  1. 字符串“spittles”将传递给视图解析器,该解析器查找视图/WEB-INF/views/splittles.jsp。如果返回“hello_world”,则需要一个视图/web-inf/views/hello_world.jsp.
  2. 不-这是控制器URL。如果愿意,您可以定义一个完全不同的控制器URL,例如/my/super/valaly/URL-这只是您接受(GET)请求的路径。
  3. 请参见1.)和2.)的答案。)虽然它的良好做法是保持spring-controller-URL和JSP视图名称相同,所以对开发人员来说,这里发生的事情是显而易见的。

例如,您可能必须控制相同路径的方法,其中一个回答GET请求,另一个回答POST请求,这两个方法都会导致不同的视图:

@RequestMapping(value = "/spittles", method = RequestMethod.GET)
public String spittles(Model model, @RequestParam("max") long max,
                       @RequestParam("count") int count) {
  // ...
  return "splittles_get";
}

@RequestMapping(value = "/spittles", method = RequestMethod.POST)
public String spittles(Model model, @RequestParam("max") long max,
                       @RequestParam("count") int count) {
  // ...
  return "splittles_post";
}
 类似资料:
  • 我是Spring MVC的新手&通过Craig Walls Spring4的操作。 考虑片断, 该图像显示了驻留在/web-inf/views/中的spittles.jsp webconfig.java: 1)为什么我需要在controller方法中返回字符串“spittles”? 2)它(返回字符串)是否与 http://localhost:8080/web/spittles?max=23890

  • 我在Spring MVC中的controller类中有一个方法。

  • " My specialty is being right when other people are wrong. " — George Bernard Shaw 深入 在本书其它几处,我们已经见识过一些特殊方法——即在使用某些语法时 Python 所调用的“神奇”方法。使用特殊方法,类用起来如同序列、字典、函数、迭代器,或甚至像个数字!本附录为我们已经见过特殊方法提供了参考,并对一些更加深奥的

  • 主要内容:@Controller 注解,@RequestMapping 注解,示例,支持 Ant 风格的路径从 Java 5 开始,Java 就增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、加载和运行时被读取,执行相应的处理。通过注解,开发人员可以在不改变原有代码逻辑的情况下,在代码中嵌入补充信息。 Spring 从 2.5 版本开始提供了对注解技术的全面支持,以替换传统的 XML 配置,简化 Spring 的配置。作为 Spring 框架的一个子项目, Sp

  • 我有两个数据集: < li >一个是关于狗的数据[我的数据] < li >第二个是匹配关键字的查找表[我无法控制该数据] 匹配键会定期更新,我想创建 Dog 数据集的视图(或实现相同目的的视图),该视图始终联接最新的匹配键。此外,我需要能够内联引用它 - 就好像它是一个表格一样。 查找表中的匹配更新通过其模式名称来区分,因此要获取最新的,我只需识别最新的模式名称并将其从查询中交换出来。 假设视图和

  • 我最近将一个Laravel4.2项目迁移到了5.0。到目前为止,我已经完成了所有必要的步骤,但我不断得到一个错误。 无法声明类Controller,因为名称已在使用中 我的控制器已按照laravel在升级指南中提供的内容进行了更改。 此外,我已将其添加到我的composer.json.的类映射指令 到目前为止,我找不到任何解决方案,如果你们知道该怎么做,这将对我有很大帮助:)提前谢谢!