java - spring mvc无法访问.html文件

标签 java angularjs spring-mvc

我搜索了整个网站,但没有任何建议有效! 我正在尝试制作一个 spring-mvc 和 angularJS 应用程序;这是我的项目结构:

angularState
-src/main/java/it.controller.DefaultController.java
-src/main/webapp
--index.jsp
--WEB-INF
---dispatcher-servlet.xml
---web.xml
---static
----default.html

所以在我的 web.xml 中我有:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/dispatcher-servlet.xml
    </param-value>
</context-param>

在dispatcher-servlet.xml中:

<context:component-scan base-package="it.controller"></context:component-scan>
<mvc:annotation-driven />
<context:annotation-config />
<mvc:resources location="/WEB-INF/static/" mapping="/static/**" />

在index.jsp中:

<% response.sendRedirect("default"); %>

然后在 Controller 中:

@Controller
@RequestMapping("/default")
public class DefaultController {
public String showDefault(){
    return "/static/default.html";
}
}

我一直用jsp,一切都很好;现在我已经尝试了该网站的每个问题: 我试过了 -mvc:默认 servlet 处理程序 -InternalResourceViewResolver 前缀为“/WEB-INF/static”,后缀为“.html”,甚至后缀为 void -InternalResourceViewResolver void 和返回“/WEB-INF/static/default.html”的 Controller 方法 没有什么! 没有显示default.html。为什么 .html 文件这么复杂!

最佳答案

这是因为通常 *.jsp 样式的 uri 模式由 servlet 容器处理,在您的情况下,*.html 不由容器处理,而是将路径委托(delegate)给 Spring MVC,Spring MVC 不知道如何渲染这些扩展 作为快速修复,您可以尝试conf/web.xml中的以下代码

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

或者

内容协商 View 解析器也可以用来代替InternalResourceViewResolver(我猜你可能正在使用这个),它根据“mediaTypes”属性中声明的文件扩展名返回合适的 View ) 示例

 <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
          <property name="order" value="1" />
          <property name="mediaTypes">
            <map>
               <entry key="json" value="application/json" />
                <entry key="html" value="text/html"/>
            </map>
          </property>

关于java - spring mvc无法访问.html文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42223892/

相关文章:

java - 正在搜索 Weblogic 类 : MessageLoggerRegistryListener

java - 如何短路@CustomValidator?

java - Spring 存储库还保存了我不想保存的对象

json - Spring MVC : How to respond a http request with JSON object and view together?

java - 如何在不使用 jboss-client.jar 的情况下连接到 WildFly 10 嵌入式 Active-MQ Artemis Broker

c# - 审批工作流的同义词

angularjs - 在输入中舍入一个数字但在模型中保留完整的十进制值

angularjs - 使用 yo Angular 脚手架时无法获取/

javascript - url 歧义导致 ui router 实例化 controller 两次

java - 在 spring mvc 中获取 java.lang.NullPointerException