Ich erstelle eine RESTful API und habe einen Spring REST Controller (@RestController) und eine Annotation-basierte Konfiguration. Ich möchte, dass die Willkommensdatei meines Projekts eine .html- oder .jsp-Datei mit der API-Dokumentation ist.Legen Sie eine Spring REST Controller-Begrüßungsdatei fest
In anderen Webprojekten würde ich eine Welcome-File-Liste in meine web.xml legen, aber in diesem speziellen Projekt kann ich es nicht zum Laufen bringen (vorzugsweise mit Java und Annotationen).
Das ist mein WebApplicationInitializer
public class WebAppInitializer implements WebApplicationInitializer {
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(ApplicationConfig.class);
context.setServletContext(servletContext);
ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcher",
new DispatcherServlet(context));
dynamic.addMapping("/");
dynamic.setLoadOnStartup(1);
}
}
Dieses
mein WebMvcConfigurerAdapter ist@Configuration
@ComponentScan("controller")
@EnableWebMvc
public class ApplicationConfig extends WebMvcConfigurerAdapter {
@Bean
public Application application() {
return new Application("Memory");
}
}
Und das ist ein kleiner Teil meiner REST-Controller
@RestController
@RequestMapping("/categories")
public class CategoryRestController {
@Autowired
Application application;
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<Integer, Category>> getCategories(){
if(application.getCategories().isEmpty()) {
return new ResponseEntity<Map<Integer, Category>>(HttpStatus.NO_CONTENT);
}
return new ResponseEntity<Map<Integer, Category>>(application.getCategories(), HttpStatus.OK);
}
}
Ich habe bisher versucht:
- Hinzufügen nur einer web.xml mit einer
<welcome-file-list>
mit einer<welcome-file>
. (Kein Glück dort) - Verschieben des
@RequestMapping("/categories")
im Controller aus der Klasse Ebene alle Methoden, und das Hinzufügen einer neuen Methode mit@RequestMapping("/")
, die gibt entweder eineString
oder eineModelAndView
mit dem Ansichtsnamen. (Ersteres gab gerade eine leere Seite mit dem String zurück, für letzteres konnte keine Zuordnung gefunden werden) - Wie vorgeschlagen here: eine Kombination von beiden, wo meine web.xml
<welcome-file>
ist "/ index", kombiniert mit@RequestMapping(value="/index")
zurückgebennew ModelAndView("index")
und eineViewResolver
in meiner Konfigurationsklasse. (Liefert einWarning: No mapping found in DispatcherServlet with name 'dispatcher'
, auch wenn „/ index“ erfolgreich abgebildet. Manuelles Hinzufügen „/ index“ an die URL erfolgreich es index.jsp behebt)
Verwenden Sie für den Index-Controller keinen '@ RestController', sondern einen' @ Controller'. Sonst bekommst du das Verhalten, das deine Beschreibung * nur eine leere Seite mit der Zeichenkette * zurückgegeben hat ... –