Spring引导应用程序返回JSP的字符串名称而不是JSP本身

时间:2017-09-11 01:23:53

标签: spring jsp spring-mvc spring-boot

我正在使用Spring启动开发一个Web应用程序。

用例是,如果用户进入主页,则每次都会将其重定向到新的唯一URL。例如:www.Qqd.com - > www.qqd.com \ jsdh。 下次它会有所不同,比如www.qqd.com \ dkjfbd

但在这两种情况下,它都会显示相同的JSP。 我将它作为一个REST框架,以便将来我也可以扩展到移动应用程序开发。

enter image description here

package com.example.qqd;

import org.apache.log4j.Logger;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class QDetailsService {

    Logger log = Logger.getLogger(QDetailsService.class);

    @GetMapping("/")
    public ModelAndView getNewUrl(ModelMap model){
       log.info("URL generated is: ");
       return new ModelAndView("redirect:/"+"abcde", model);
    }

    @RequestMapping(value="/{url}")
    public String addDetails(@PathVariable String url){
        log.info("URL: " + url + " , detail: " );
        //return new ModelAndView("home.jsp");
        return "home";
    }
}

ServletInitializer.java

public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(QqdApplication.class);
    }
}

QqdApplication.java

@SpringBootApplication //This annotation means, it is the starting point of the app. 
public class QqdApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(QqdApplication.class, args);
    }
}

3 个答案:

答案 0 :(得分:0)

您是否尝试过返回ModelAndView对象?请注意,我从home.jsp

中删除了.jsp
@RequestMapping(value="/{url}")
public ModelAndView addDetails(@PathVariable String url){
    log.info("URL: " + url + " , detail: " );
    return new ModelAndView("home");
}

答案 1 :(得分:0)

好的,我自己找到了解决方案并且后续工作 第1步:在application.properties

中包含以下行
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

第2步:我没有看到在WEB-INF/jsp下创建src/webapp文件夹的Spring工具套件。所以创建它并将jsp移动到该文件夹​​下。

这就像一个魅力。谢谢大家帮助我。

答案 2 :(得分:0)

这是一个大问题,我几乎花了两个多小时,但终于解决了。

第1步:添加到application.properties:-

     - spring.mvc.view.prefix=/WEB-INF/pages/
     - spring.mvc.view.suffix=.jsp

第2步:添加到pom.xml中:-

     -dependency 
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
      </dependency>

控制器

        @RequestMapping(value="/homepage",method=RequestMethod.GET)
            public String hello(Model model)
            {
                model.addAttribute("message","Hello");
                return "myjsppage";
            }