1、SpringMVC静态页面响应

 package com.sv.controller;

 import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 页面展示
* @author jixh
*
*/
@Controller
public class PageController { /**
* 展示首页
* @return
*/
@RequestMapping(value="/")
public String indexShow() {
return "index";
} /**
* 展示其他页面,每一个页面请求都要写一个对应的页面返回处理,这样太过麻烦,进行简化
* 方法:正如所见,将请求的URL和处理函数返回的URL写成一样的,这样一来就可以使用
* Restfaull的URL模板映射,直接将请求的URL作为返回的URL, 如此就可公用了
* 如果参数名称和表达式名称不一致时,加参数(@PathVariable(value="page") String page3)
*
*/
@RequestMapping(value="/{page}")
public String pageShow(@PathVariable String page) {
return page;
}
}

2、SpringBoot的视图控制器实现静态页面响应

如上面SpringMVC响应静态页面的方法,在SpringBoot提供了专门的视图控制器,只需要实现WebMvcConfigurer接口,重写其addViewControllers方法就可以进行配置,原理只是简单的重定向,但是在使用过程中遇到报404的问题,多次尝试,发现有个小坑,记录一下。

原因如下:

SpringBoot有很多的默认。就resources目录而言,在不配置静态资源目录的情况下,默认static目录中存公开的静态资源,而templates目录中存放模板文件。这里就有个问题,如果一个test.html文件中不涉及数据填充,只当作静态页面时,感觉放在两个目录中都可以,只是是否公开的区别而已?然而却不是这样,,,

在不引入Freemarker或Thymeleaf的jar包时,如果按照上面的方法,将test.html文件放在templates下时是不起作用的,表示找不到该文件(404),此时templates模板文件目录不起作用。必须放在static下才能被controller方法返回。使用模板引擎后,放在任意目录中都可以。

目录结构如下:

视图控制器配置类如下:

 package com.huawei.myconfig;

 import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration//标志当前类在启动的时候会被加载
public class MyConfiguration implements WebMvcConfigurer {
//视图控制器配置
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//urlPath:浏览器输入的地址 viewName:该地址跳转到的页面,不加templates文件夹和.html
//registry.addViewController("/left").setViewName("left");错误的写法
registry.addViewController("/login").setViewName("left.html");
} }

还有一件事:这种视图返回方法的urlPath和viewName不能相同,否则会报500异常(

There was an unexpected error (type=Internal Server Error, status=500).

Circular view path [left]: would dispatch back to the current handler URL [/left] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)

),

使用模板引擎时可以省略后缀名.html等,但返回静态资源时则不能省略,就像请求.css,.js文件一样。

controller类如下

 package com.huawei.test;

 import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; @Controller
public class Test {
@RequestMapping("/")
@ResponseBody
public String hello(){
return "hello Spring boot";
} @RequestMapping("/test")
@ResponseBody
public String test(){
return "举杯邀明月,对影成三人";
} @RequestMapping("/page")
public String left(){
return "left.html";
}
}

如要转载,请注明出处。

SpringMVC与SpringBoot返回静态页面遇到的问题的更多相关文章

  1. SpringBoot返回html页面

    一般Controller返回数据或页面,今天谈一下返回页面的场景. 一.不使用template 1. controller中定义对应的访问路由及返回的页面(使用Controller,不要使用RestC ...

  2. SSM 返回静态页面HTML Controller 被递归调用引起的StackOverflowError

    一 背景 最近在做工程实践,想实现这么一个效果: 前端url请求地址:localhost:8080/idevtools/search 后端返回一个静态页面HTML:search.html 按照网上说的 ...

  3. springboot返回页面

    1.使用@Controller注解: @Controller必须配合模板 先导入依赖: <dependency> <groupId>org.springframework.bo ...

  4. shiro 静态页面资源不显示 解决方案(转)

    最近做一个ssm+shiro的框架整和 不加shiro之前ssm中css和图片显示正常.加上以后无法显示. 解决方案: shiro有静态资源过滤. 配置资源匿名访问即可 <property na ...

  5. Django之使用celery和NGINX生成静态页面实现性能优化

    性能优化原理: 当我们要给client浏览器返回一个页面时,我们需要去数据库查询数据并将数据和基本页面模板渲染形成页面返回给客户端,但如果每一个用户访问时都去查询一次首页的的数据时,当日访问量很大时那 ...

  6. 小记SpringMVC与SpringBoot 的controller的返回json数据的不同

    近期由于项目的改动变更,在使用springmvc和springboot测试的时候发现一个有趣的现象 1.springmvc的controller使用@ResponseBody返回的仅仅是json格式的 ...

  7. SpringMVC访问静态页面

    Spring MVC显示静态页面 在前面搭建spring MVC环境时,我们设置了spring-mvc配置,通过tomcat来访问了index.jsp 页面,但是当我将页面换成.thml的静态面之后就 ...

  8. SpringBoot学习------SpringBoot使用Thymleaf模块访问不了静态页面

    SpringBoot使用Thymleaf模块访问不了静态页面 最近学习SpringBoot的过程中使用了Thymeleaf模块引擎,页面发送请求后老是无法显示静态页面,所有的步骤都是参考资料来执行,自 ...

  9. Springboot访问静态资源&WebJars&图标&欢迎页面

    目录 概述 1.访问WebJar资源 2.访问静态资源 3.favicon.ico图标 4.欢迎页面 概述 使用Springboot进行web开发时,boot底层实际用的就是springmvc,项目中 ...

随机推荐

  1. PlayFramework的安装和配置以及向eclipse导入项目工程

    一.Play的安装和配置 1.首先去官网下载Play的包并将其解压 我下的是playframework2.2.1 2.配置play的环境变量方便使用 3.打开cmd运行play 输入play   he ...

  2. 洛谷 P2818 天使的起誓

    P2818 天使的起誓 题目描述 Tenshi非常幸运地被选为掌管智慧之匙的天使.在正式任职之前,她必须和其他新当选的天使一样要宣誓.宣誓仪式是每位天使各自表述自己的使命,他们的发言稿放在n个呈圆形排 ...

  3. 在独立的文件里定义WPF资源

    一.文章概述 本演示介绍怎样在单独的文件里定义WPF资源.并在须要的地方调用相关资源文件. 相关下载(代码.屏幕录像):http://pan.baidu.com/s/1sjO7StB 在线播放:htt ...

  4. What's the difference between Unicode and UTF-8?

    https://stackoverflow.com/questions/3951722/whats-the-difference-between-unicode-and-utf-8 If asked ...

  5. ES聚合底层机制-bucket深的话采用广度优先更好,而如果是年度统计还是深度优先好

    见原文,仅仅摘录部分:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_preventing_combinatorial_exp ...

  6. 设计url 通过分发的方式 Xadmin_demo

    如 urlpatterns = [ url(r'^Xadmin/',([ url(r'^add/$', views.add) url(r'^delete/$', views.delete) ], No ...

  7. Pycharm-连接服务器

  8. Auto-Publishing and Monitoring APIs With Spring Boot--转

    原文地址:https://dzone.com/articles/auto-publishing-amp-monitoring-apis-with-spring-bo If you are headin ...

  9. Python json数据中文输出问题。

    这个问题困扰了我好久好久,最后看了一眼官方文档,解决问题了. 问题描述:从web上获取的json数据,然后对应的保存到了python的类型中.再次输出这个数据时,中文总会变成\u1234这种形式. P ...

  10. PHP7内核剖析之执行流程

    以fpm为例: 1.fpm启动时,会先执行 module_startup, 并随着fpm进程常驻 2.当一个请求到达之后,会执行 request_startup, 进行一些请求初始化工作,然后执行代码 ...