欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot Controller中各个注解的使用(三)

程序员文章站 2022-05-29 22:18:52
...

Controller的使用

@Controller 处理http请求(整体页面刷新提交的处理注解

@RestController

Spring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller

ajax提交,一般返回json格式

@RequestMapping

配置url映射

Controller的url路径参数

@PathVariable 获取url中的数据

@RequestParam 获取请求参数中的值


一aaa@qq.com整体页面交互

请求后台,必须返回一个视图,以前我们一般用Jsp,但是SpringBoot不推荐我们实用jsp,主要是强调前后台分离;

官方推荐的是这几种模版视图引擎,

SpringBoot Controller中各个注解的使用(三)

推荐Freemarker和Velocity;

首先,添加Freemarker支持,打开pom.xml文件,alt+/

SpringBoot Controller中各个注解的使用(三)

弹出对话框

SpringBoot Controller中各个注解的使用(三)

选择Freemarker

SpringBoot Controller中各个注解的使用(三)

此时,在pom.xml文件

SpringBoot Controller中各个注解的使用(三)

配置application.properties文件

SpringBoot Controller中各个注解的使用(三)

FreemarkerController控制器

package com.hlx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FreemarkerController {

	@RequestMapping("/show")
	public ModelAndView show() {
		ModelAndView view = new ModelAndView("he");
		view.addObject("msg", "Freemarker Template Language 模板引擎!");
		return view;

	}
}

工程如下:

SpringBoot Controller中各个注解的使用(三)

he.ftl

SpringBoot Controller中各个注解的使用(三)

页面访问

SpringBoot Controller中各个注解的使用(三)


二aaa@qq.com ajax页面交互

package com.hlx.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/ajax")
public class AjaxController {
	
	@RequestMapping("/json")
	public String disable(){
		String json="{'msg1':'测试ajax!','msg2':'获得json的数据!'}";
		return json;
	}

}

index.html

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<!-- 引入JS -->
<script type="text/javascript" src="jquery-3.2.1.js"></script>

<script type="text/javascript">
$(function(){
	//单击事件
	$("#but").click(function(){	
		//异步post提交
		$.post("ajax/json",{},function(data){
			alert(data);
		});
			
	});
	
});


</script>
<body>
  <input type="button" id="but" value="单击我!"><p/>
  <a href="/hello3/path/208">使用pathVariable中的数据</a>
  <hr/>
  
  <a href="/hello3/path/find?uname=bear&upass=aaa">使用requestParameter参数的数据</a><p/>
  
  <a href="/hello3/path/find?uname=mike">使用requestParameter参数的数据</a>
</body>
</html>

SpringBoot Controller中各个注解的使用(三)

浏览页面

SpringBoot Controller中各个注解的使用(三)

这里的json比较简单,所以我直接返回; 实际项目Json格式复杂,要借助于一些json框架,比如Json-lib,gson等等;


三.介绍url地址上的参数使用

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("/path")
public class PathController {

	@RequestMapping("/{id}")
	public ModelAndView show(@PathVariable("id") Integer id){
		//试图对象
		ModelAndView view=new ModelAndView("blog");
		//保存数据
		view.addObject("id", id);
		return view;
	}
	
	
	@RequestMapping("/find")
	public ModelAndView param(@RequestParam(value="uname",required=false) String uname, @RequestParam(value="upass",required=false) String pwd){
		//试图对象
		ModelAndView view=new ModelAndView("param");
		//保存数据
		view.addObject("name", uname);
		view.addObject("pwd",pwd);
		return view;
	}
}

(1)@PathVariable 获取url中的数据

SpringBoot Controller中各个注解的使用(三)

SpringBoot Controller中各个注解的使用(三)


(2)@RequestParam 获取请求参数中的值

 注意:(required=false)这个参数可以传也可以不传哦!

param.ftl

SpringBoot Controller中各个注解的使用(三)

SpringBoot Controller中各个注解的使用(三)

SpringBoot Controller中各个注解的使用(三)