/ / Spring-Boot-Anwendung, die den String-Namen der JSP anstelle der JSP selbst zurückgibt - Spring, Jsp, Spring-Mvc, Spring-Boot

Spring-Boot-Anwendung, die den String-Namen der JSP anstelle der JSP selbst zurückgibt - Spring, Jsp, Spring-Mvc, Spring-Boot

Ich entwickle eine Web-App mit Spring Boot.

Der Anwendungsfall ist, wenn ein Benutzer zur Startseite geht, erwird jedes Mal auf eine neue eindeutige URL umgeleitet. ZB: www.Qqd.com -> www.qqd.comjsdh. Nächstes Mal wäre es etwas anderes, wie www.qqd.comdkjfbd

Aber in beiden Fällen wird dieselbe JSP angezeigt. Ich mache das als REST-Framework, damit ich in Zukunft auch die Entwicklung von mobilen Apps erweitern kann.

Bildbeschreibung hier eingeben

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);
}
}

Antworten:

0 für die Antwort № 1

Haben Sie versucht, das ModelAndView-Objekt zurückzugeben? Beachten Sie, dass ich die .jsp aus home.jsp entfernt habe

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

0 für die Antwort № 2

Ok, ich selbst fand die Lösung und das folgende hat funktioniert Schritt 1: Haben Sie die folgenden Zeilen in application.properties

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

Schritt 2: Ich sehe keine Spring Tool Suite WEB-INF/jsp Ordner unter src/webapp. Also erstelle es und bewege den JSP unter diesen Ordner.

Das hat wie ein Zauber funktioniert. Danke an alle, die mir geholfen haben.