基于第二讲,这一讲我们主要讲解包含以下内容

  1. springBoot添加对freemarker的支持
  2. 使用@RestController处理ajax请求
  3. 使用@PathVariable注解获取url参数
  4. 使用@RequestParam注解获取请求参数

(一)springBoot添加对freemarker的支持

(1)首先要使用freemarker,我们需要添加对freemarker的支持,需要在pom.xml中添加依赖,操作如下

(2)编写FreemarkerAction,返回数据视图

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/freemarker")
public class FreemarkerAction { @RequestMapping("/say")
public ModelAndView say() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", "hello freemarker");
modelAndView.setViewName("index");
return modelAndView;
}
}

(3)在templates目录下新建index.html,更改名为index.ftl,这个是Freemarker的格式要求,内容如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
msg show :${msg}
</body>
</html>

(3)重启服务,访问http://localhost:8888/hello/freemarker/say,结果如下

(二)使用@RestController处理ajax请求

(1)在webapp目录下新增index.html,同时引用的是官网的jquery-2.1.1.min.js,内容如下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
function show(){
$.post("ajax/test",{},function(result){
alert(result);
});
}
</script>
<body>
<button onclick="show()">点击这里</button>
</body>
</html>

(2)新增AjaxActionTest。内容如下:

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
@RequestMapping("/ajax")
public class AjaxActionTest { @RequestMapping("/test")
public String test() { return "{'name':'李四','age':'24'}";
}
}

(3)重启服务。浏览器访问:http://localhost:8888/hello/

(三)使用@PathVariable注解获取url参数

(1)在类FreemarkerAction类中,新增方法say2,如下:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/freemarker")
public class FreemarkerAction { @RequestMapping("/say")
public ModelAndView say() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", "hello freemarker");
modelAndView.setViewName("index");
return modelAndView;
} @RequestMapping("/{msg}")
public ModelAndView say2(@PathVariable("msg") String msg) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", msg);
modelAndView.setViewName("index");
return modelAndView;
}
}

(1)浏览器访问:http://localhost:8888/hello/freemarker/hellorestful,结果如下图:这种风格类似于restful的支持

(四)使用@RequestParam注解获取请求参数

(1)在index.html中新增一个链接,如下图

(2)在FreemarkerAction新增方法 say3

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/freemarker")
public class FreemarkerAction { @RequestMapping("/say")
public ModelAndView say() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", "hello freemarker");
modelAndView.setViewName("index");
return modelAndView;
} @RequestMapping("/{msg}")
public ModelAndView say2(@PathVariable("msg") String msg) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", msg);
modelAndView.setViewName("index");
return modelAndView;
} @RequestMapping("/reqParam")
public ModelAndView say3(@RequestParam(value="msg",required=false) String msg) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("msg", msg);
modelAndView.setViewName("index");
return modelAndView;
}
}

(2)浏览器上访问http://localhost:8888/hello/  点击链接  ,结果如下

SpringBoot入门学习(三)的更多相关文章

  1. SpringBoot入门(三)——入口类解析

    本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...

  2. SCARA——OpenGL入门学习三

    OpenGL入门学习[三] 在第二课中,我们学习了如何绘制几何图形,但大家如果多写几个程序,就会发现其实还是有些郁闷之处.例如:点太小,难以看清楚:直线也太细,不舒服:或者想画虚线,但不知道方法只能用 ...

  3. SpringBoot入门学习看这一篇就够了

    1.SpringBoot是什么? SpringBoot是一套基于Spring框架的微服务框架. 2.为什么需要SpringBoot 由于Spring是一个轻量级的企业开发框架,主要的功能就是用于整合和 ...

  4. 【Java】SpringBoot入门学习及基本使用

    SpringBoot入门及基本使用 SpringBoot的介绍我就不多说了,核心的就是"约定大于配置",接下来直接上干货吧! 本文的实例: github-LPCloud,欢迎sta ...

  5. dubbo入门学习(三)-----dubbo整合springboot

    springboot节省了大量的精力去配置各种bean,因此通过一个简单的demo来整合springboot与dubbo 一.创建boot-user-service-provider 本篇博文基于上篇 ...

  6. springboot入门学习1

    springboot学习1 SpringBoot对Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑 业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中 ...

  7. SpringBoot入门学习记录(一)

    最近,SpringBoot.SpringCloud.Dubbo等框架非常流行,作为Coder里的一名小学生,借着改革开放的东风,自然也是需要学习学习的,于是将学习经历记录于此,以备日后查看. 官网:h ...

  8. SpringBoot入门学习(一)

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.用我 ...

  9. SpringBoot入门教程(三)通过properties实现多个数据库环境自动切换配置

    前面的文章已经介绍了CentOS部署SpringBoot项目从0到1的详细过程,包括Linux安装ftp.Tomcat以及Java jdk的全部过程.这篇文章主要介绍关于springboot如何通过多 ...

随机推荐

  1. win7win8 64位汇编开发环境合集安装与设置

    win7win8 64位汇编开发环境合集安装与设置 下载 win7 win8  64位汇编开发环境.rar 下载地址(免积分下载) http://download.csdn.net/detail/li ...

  2. javascript new Date()函数在不同浏览器上返回不同的值

    今天是2015年3月16日,在IE 6 上new Date()返回给后台server的字符串格式为 "Mon Mar 16  00:00:00 UTC 0800 2015",而在f ...

  3. Effective C++ Item 9 Never call virtual functions during constrution or destruction

    Because such calls would never go to a more derived class than that of currently executing construto ...

  4. RF内建的变量

    ${CURDIR} 提供当前测试文件存放的绝对路径.该变量是大小写敏感的.${TEMPDIR} 获取操作系统临时文件夹的绝对路径. 在UNIX系统是在/tmp, 在windows系统是在c:\Docu ...

  5. cocos lua 加密方案

    cocos2d使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用. 目前所指的解决方案有2 ...

  6. LeetCode 笔记系列八 Longest Valid Parentheses [lich你又想多了]

    题目:Given a string containing just the characters '(' and ')', find the length of the longest valid ( ...

  7. kettle中denormalizer(列转行)的使用

    转载: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sucre.blog.51cto.com/1084905/1434015 ...

  8. Net 常用资源

    opensource: http://www.dotnetfoundation.org/projects https://github.com/dotnet/corefx Enterprise Lib ...

  9. Python笔记-进程Process、线程Thread、上锁

    1.对于操作系统来说,一个任务就是一个进程(Process).比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程. 2.在一个进程内部,要同时干多件事,就需要同时运行多个“ ...

  10. ArcGIS Data Store 初体验

    1. 什么是ArcGIS Data Store? ArcGIS Data Store 是10.3新推出的一个组件,从官方对其定位来说,该组件是用来优化发布托管服务到portal for ArcGIS的 ...