Spring with FreeMarker:无法解析名称为“MyServlet”的 servlet 中名称为“Home”的视图

2024-01-10

我正在尝试创建 FreeMarker 和 Spring 的非常简单的集成。但是,当我运行我的示例时,出现异常:

GRAVE: Servlet.service() for servlet MyServlet threw exception
javax.servlet.ServletException: Could not resolve view with name 'Home' in servlet with name 'MyServlet'
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1162)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)

我不知道我的配置有什么问题:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <context-param>
        <param-name>contextClass</param-name>
        <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
    </context-param>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.jverstry.Configuration</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file></welcome-file>
    </welcome-file-list>

</web-app>

网页配置

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

    @Bean
    public ViewResolver getViewResolver() {

        FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
        resolver.setCache(true);
        resolver.setPrefix("WEB-INF/pages/");
        resolver.setSuffix(".ftl");

        return resolver;

    }

    @Bean
    public FreeMarkerConfigurer getFreemarkerConfig() {

        FreeMarkerConfigurer result = new FreeMarkerConfigurer();

        result.setTemplateLoaderPath("WEB-INF/pages/");

        return result;

    }   

}

控制器

@Controller
public class MyController {

    @RequestMapping(value = "/")
    public String home(@ModelAttribute("model") ModelMap model) {

        model.addAttribute("MsTime", System.currentTimeMillis());

        return "Home";

    }

}

P.S.: 当然有Home.ftl文件输入WEB-INF/pages/.


经过一番搜索,不设置前缀解决了这个问题:

@Bean
public ViewResolver getViewResolver() {

    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
    resolver.setCache(false);
    //  resolver.setPrefix("");
    resolver.setSuffix(".ftl");

    return resolver;

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring with FreeMarker:无法解析名称为“MyServlet”的 servlet 中名称为“Home”的视图 的相关文章

  • Spring Rest-API - 403 禁止错误响应

    我是 Spring 新手 我正在编写 REST API 我收到 403 删除 放置禁止错误 以下是我正在处理的示例 RequestMapping value noteId method RequestMethod PUT public Re
  • 在 Eclipse 中跨文件搜索注释掉的代码

    有没有一种快速方法可以在 Eclipse 中查找 Java 文件中所有注释掉的代码 也许是搜索中的任何选项 或者任何可以执行此操作的附加组件 它应该只能找到被注释掉的代码 而不是普通的注释 在 Eclipse 中 我只是在打开正则表达式复选
  • 如何使用 Gradle 2.10 将 ANTLR 词法分析器语法导入到另一个语法中?

    我一直在和 Terence Parr 一起学习 ANTLR 4权威的 ANTLR 4 参考 到目前为止我一直在使用 Gradle 2 10 及其内置 ANTLR 插件进行跟踪 然而 我在获取一些我从第 4 章第 38 41 页改编的代码以使
  • 将位于 jar 中的文件读取为 java.io.File 对象

    与此类似的问题已发布 但似乎没有一个答案对我的情况有帮助 我正在编写一个程序包 它使用 Google 的凭据来获取 Google Apps 用户 为此 我使用服务帐户 因此为了检索凭据 我需要提供 除其他外 一个 p12 签名文件 Cred
  • 为什么不能将 String 添加到 List 类型?

    错误 The method add capture 1 of in the type List
  • java“类文件包含错误的类”错误

    我正在尝试制作一个控制台应用程序来测试我的网络服务 我成功部署了一个网络服务http localhost 8080 WS myWS http localhost 8080 WS myWS我用 wsimport 制作了代理类 wsimport
  • Stream#limit 返回的元素是否可以少于预期?

    如果流s下面至少有n元素 流在什么情况下sLimit可能少于n元素 如果有的话 Stream sLimit s limit n 提问原因 在这个答案 https stackoverflow com a 28082107 829571 我读到
  • Spring中是否可以禁用自动验证

    我有一个 Spring 启动应用程序 我的请求类传递给我的 RestController包含javax validation我无法更改 删除的注释 它们作为第三方库提供 所以我想手动验证我的请求对象或者根本不验证它们 不幸的是 如果我添加
  • java中main的返回类型

    我想知道为什么java中main方法只有void返回类型 public static void main String args 为什么main方法除了void之外没有其他返回类型 Thanks 简短的回答是 因为这就是语言规范 http
  • Java中通过FTP创建文件夹层次结构

    Java 是否有现成的功能可以在远程 FTP 服务器上创建文件夹层次结构 Apache Commons 确实提供了 FTP 客户端 但我找不到创建目录层次结构的方法 它确实允许创建单个目录 makeDirectory 但创建整个路径似乎并不
  • 从 AlertDialog 返回值

    我想构建一个函数来创建 AlertDialog 并返回用户输入的字符串 这是我用于创建对话框的函数 如何返回该值 String m Text private String openDialog String title AlertDialo
  • 在 IntelliJ 中创建可执行 JAR(Java 18、JavaFX 18 Maven 项目),“警告:不支持的 JavaFX 配置...”

    我有一个 Java 18 JavaFX 18 Maven 项目 除了 javaFX 库之外 它还有很多库需要包含在工件中 我想创建一个工件 一个 jar 其中包含所有依赖项 我开始按照这个视频来创建 jar https www youtub
  • 这个finally子句包含close()调用的原因是什么

    我正在学习在线java课程 使用 Java 编程简介 http math hws edu javanotes index html 在 I O 章节中 引入了以下代码 顺便说一下 在本程序的末尾 您将发现我们第一个有用的 try 语句中的
  • 在同一台计算机上设置 JBoss 的多个实例

    我在 JBoss 社区中找到了下一页 http www jboss org community wiki ConfigurePorts http www jboss org community wiki ConfigurePorts 有下一
  • Java 8 Stream - 为什么过滤器方法不执行? [复制]

    这个问题在这里已经有答案了 我正在学习使用java流进行过滤 但是过滤后的流没有打印任何内容 我认为过滤器方法没有被执行 我的过滤代码如下 Stream of d2 a2 b1 b3 c filter s gt s startsWith b
  • Jar Manifest 文件的使用混乱

    我正在阅读使用 jar 工具打包 java 应用程序 我注意到 META INF 目录下创建了一个清单文件 对于一个简单的应用程序来说 感觉它没有任何作用 我在 stackoverflow 上搜索以了解 Manifest 文件的用法 我碰到
  • 如何检测java控制台中而不是GUI中的箭头键? [复制]

    这个问题在这里已经有答案了 我正在编写一个应用程序 我需要检测其中的箭头键 C 有getch 函数 我们想要获取输入 然后添加对 ASCII 值的检查 我们如何检测输入箭头键 谢谢 我写了一个Java类原始控制台输入 http www so
  • 从 SQL 语句中检索元数据(表名)

    我使用的是 Visual Studio 2008 我创建了一个 Winforms 应用程序 并且尝试从 SQL 语句中提取表名 con new SqlConnection connString String queryString Sele
  • 使用 Tomcat 和 gradle 进行休眠

    免责声明 我是 Java 新手 我正在尝试使用 Tomcat 和 Gradle 设置 Hibernate 构建运行正确 但看起来像persistence xml文件未被读取 我的项目结构如下 build gradle src main ja
  • 如何使用 AEM 解析 org.apache.http.ssl?

    最终 我尝试在 Java 代码中使用 AWS S3 库来通过 AEM 启用服务器端 S3 上传 但在安装依赖项和 或由 AEM 识别时遇到了问题 每次我添加新的依赖项时 都会弹出五个问题 在我尝试构建的这个包中 这是我看到的错误 The i

随机推荐