簡體   English   中英

Spring MVC 4 與 HTML 頁面而不是 JSP

[英]Spring MVC 4 with HTML pages instead of JSP

I am using Spring MVC 4 to build a web app, when I run the application the default home page is index.jsp, I want to change it to index.html.

我嘗試了很多解決方案,但沒有一個適合我。

web.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>TEST</display-name>
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>SpringDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextClass</param-name>
            <param-value>
                org.springframework.web.context.support.AnnotationConfigWebApplicationContext
            </param-value>
        </init-param>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>es.test.test</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>

MvcConfiguration.java

@Configuration
@ComponentScan(basePackages = "com.test.test")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter {

    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
    }
}

索引控制器.java

@RestController
public class IndexController {

    @GetMapping(value = "/")
    public ModelAndView test(HttpServletResponse response) throws IOException {
        return new ModelAndView("index");
    }

}

我已將后綴更改為 .html 並且它不起作用,web.xml 仍然存在同樣的問題。

添加您的 web.xml 跟隨代碼

<servlet> 
     <servlet-name>htmlServlet</servlet-name> 
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
        <load-on-startup>2</load-on-startup> 
 </servlet> 
 <servlet-mapping> 
        <servlet-name>htmlServlet</servlet-name> 
        <url-pattern>*.html</url-pattern>
 </servlet-mapping>

並修改

resolver.setSuffix(".jsp");

to  resolver.setSuffix(".html");

在你的 MvcConfiguration.java

如果不工作

像這樣修改 controller

@GetMapping(value = "/")
public String test(HttpServletResponse response) throws IOException {
    return "index";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM