为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Spring提供.html文件

/ 猿问

如何使用Spring提供.html文件

犯罪嫌疑人X 2019-09-02 09:29:35

我正在使用Spring开发一个网站,并且我正在尝试提供不是.jsp文件的资源(例如.html)


现在我已经注释掉了我的servlet配置的这一部分


    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" 

        p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

并试图从控制器返回资源的完整路径。


@Controller

public class LandingPageController {


protected static Logger logger = Logger.getLogger(LandingPageController.class);


@RequestMapping({"/","/home"})

public String showHomePage(Map<String, Object> model) {

    return "/WEB-INF/jsp/index.html";   

   }

}

index.html文件存在于该文件夹中。


注意:当我将index.html更改为index.jsp时,我的服务器现在正确地提供页面。


谢谢。


查看完整描述

3 回答

?
123456qqq

最初的问题是配置指定了一个属性,suffix=".jsp"因此ViewResolver实现类将添加.jsp到从方法返回的视图名称的末尾。


但是,由于您注释掉了InternalResourceViewResolver那时,根据应用程序配置的其余部分,可能没有注册任何其他ViewResolver。您可能会发现现在没有任何工作。


由于.html文件是静态的,并且不需要servlet处理,因此使用<mvc:resources/>映射更有效,也更简单。这需要Spring 3.0.4+。


例如:


<mvc:resources mapping="/static/**" location="/static/" />

这将通过启动与所有请求/static/的webapp/static/目录。


因此,通过从您的方法index.html中输入webapp/static/和使用return "static/index.html";,Spring应该找到视图。


查看完整回答
反对 2019-09-02
?
茅侃侃

问题的背景

首先要理解的是:它不是渲染jsp文件的spring。它是JspServlet(org.apache.jasper.servlet.JspServlet)。这个servlet附带Tomcat(jasper编译器)而不是spring。这个JspServlet知道如何编译jsp页面以及如何将它作为html文本返回给客户端。默认情况下,tomcat中的JspServlet只处理匹配两种模式的请求:* .jsp和* .jspx。

现在当spring用InternalResourceView(或JstlView)渲染视图时,确实发生了三件事:

  1. 从模型中获取所有模型参数(由控制器处理程序方法返回ie "public ModelAndView doSomething() { return new ModelAndView("home") }"

  2. 将这些模型参数公开为请求属性(以便JspServlet可以读取它)

  3. 转发请求到JspServlet。RequestDispatcher知道应该将每个* .jsp请求转发到JspServlet(因为这是默认的tomcat配置)

当您只是将视图名称更改为home.html时,tomcat将知道如何处理请求。这是因为没有servlet处理* .html请求。

怎么解决这个问题。有三个最明显的解决方案:

  1. 将html暴露为资源文件

  2. 指示JspServlet也处理* .html请求

  3. 编写自己的servlet(或传递给另一个现有的servlet请求到* .html)。


查看完整回答
反对 2019-09-02
?
达令说

我只是补充一点,你不需要为它实现一个控制器方法,因为你可以在servlet配置文件中使用view-controller标签(Spring 3):


<mvc:view-controller path="/" view-name="/WEB-INF/jsp/index.html"/>


查看完整回答
反对 2019-09-02
  • 3 回答
  • 0 关注
  • 379 浏览
慕课专栏
更多

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信