当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot中为外部jsp服务,而不是在WEB-INF/views中?

燕禄
2023-03-14

在origin旧系统中,有一个JSP文件,它在WEB-INF/views中动态生成,在spring mvc中具有以下配置。xml。

<mvc:view-controller path="/downloadAppPage" view-name="downloadAppPage" />
<!-- mvc view -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:prefix="/WEB-INF/views/" p:suffix=".jsp" p:contentType="text/html; charset=utf-8" />

但是现在,我通过Spring Boot加载和嵌入式tomcat启动(jar-jar*.war)改变了原来的系统。下载的AppPage将不再被访问。

那么,是否可以对应用程序进行配置或编码,以在Spring Boot上下文路径之外为外部JSP文件提供服务呢?

谢谢,詹姆斯。

共有1个答案

漆雕昊天
2023-03-14

您可以将view resolver类型的其他bean添加到配置中,添加外部文件夹。它们将按照配置中的顺序进行处理。您还可以编写自己的视图解析器。

public class MyViewResolver extends InternalResourceViewResolver {
@Override
protected AbstractUrlBasedView buildView(String viewName) throws Exception {
    HttpServletRequest request=((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
    String viewFile =request.getRealPath(this.getPrefix()+viewName+this.getSuffix());
    File reqFile=new File(viewFile);
    System.out.println(reqFile.getAbsolutePath()+":exists:"+reqFile.exists());
    if(!reqFile.exists()){
        viewName="default";
    }
    InternalResourceView view = (InternalResourceView) super.buildView(viewName);
    view.setAlwaysInclude(false);
    return view;
}
}
 // example extracted from https://javabeat.net/extending-viewresolver-and-chaining-viewresolvers-in-spring-mvc/

然后,您的配置文件将如下所示:

<mvc:view-controller path="/downloadAppPage" view-name="downloadAppPage" />
<!-- mvc view -->
<bean class="mypack.MyViewResolver">
        <property name="prefix" value="/your/new/path/" />
        <property name="suffix" value=".jsp" />
        <property name="order" value="0" />
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
        <property name="order" value="1" />
</bean>
 类似资料:
  • 问题内容: 我创建了一个简单的JSP文件,想要在Jetty 7.2中进行部署。码头正在运行,我可以在看到默认的网页。我用命令启动了Jetty 。 我将简单的JSP文件保存在,然后尝试访问该文件,但没有一个起作用。 还有什么我要做的吗?我应该将JSP文件放在Jetty文件结构中的什么位置? 如果您知道有用的教程,我将不胜感激。我还没有找到任何好的。 问题答案: 您必须将其放置在webapps内的文件

  • 问题内容: 该文件夹位于Java Web应用程序的中吗? 问题答案: 我假设您要引用Web应用程序文件夹结构根 目录 中的目录。 不,它不在类路径中。 不过在classpath上,中的JAR文件也是如此。

  • 我在web.xml中更改了welcome-list标记中的路径,如下所示 我还更改了dispatcher-servlet.xml,如下所示 但还是没用。用于上述大小写的Url是 而且它对上面的任何URL都不起作用。 但它起作用的时候 我使用TomcatV7.0服务器。我在Eclipse IDE中刷新我的项目,然后清理它,构建它,使用mvn clean install构建war,然后从tomcat

  • 问题内容: 我刚刚将我的网站的测试副本升级到asp.net 4.0,并且注意到了一个奇怪的问题,仅当我将网站上传到服务器时才会出现。 该站点有一个返回json的asmx Web服务,但是当我在服务器上运行该站点时,它会返回xml。它在asp.net 3.5中已经运行了一年多。 webMethod装饰有正确的属性… 在我的本地计算机上,它返回json。 但在服务器(Windows 2008 64位)

  • 本文向大家介绍springmvc无法访问/WEB-INF/views下的jsp的解决方法,包括了springmvc无法访问/WEB-INF/views下的jsp的解决方法的使用技巧和注意事项,需要的朋友参考一下 最近在搭建springmvc的框架,遇到的这样的问题: 在地址栏访问登陆界面访问不了,http://localhost/XXXX/WEB-INF/views/login.jsp。直接返回4

  • 我正在尝试将一个简单的SpringBoot应用程序转换为部署在WebLogic中。它在buildin TomCat服务器上运行良好。然后对其进行更改并创建一个新的war文件。当我尝试部署war文件时,我得到这个错误。 web.xml的Servlet初始值设定项 application.java文件