==SpringMVC中的Model的使用==

SpringMVC会把Model(模型信息)中的的数据放入到request域对象中,页面可以通过EL表达式来取request域中的数据。我们可以先写一个案例,在后台使用Model的addAttribute方法,页面使用EL表达式取数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Controller
@RequestMapping(value = "/model")
public class ModelController {
/**
* Model的使用
* @param model
* @return
*/
@RequestMapping(value = "/add")
public String add(Model model){
model.addAttribute("msg","张三");//req.setA();
return "success";
}
}
1
2
3
4
success.jsp页面从request域中取数据使用EL表达式

${msg}
${requestScope.msg}

==Groovy==

groovy 是在 java平台上的、 具有象 Python , Ruby 和 Smalltalk 语言特性的灵活动态语言, groovy 保证了这些特性象 java 语法一样被 java 开发者使用。

和java语言搭配使用,提高开发人员的效率,减少代码量,缺点:降低了可读性,比java的运行效率低

==NoSQL(非关系型数据库)知识小结==

  1. NoSQL 数据库不是否定关系型数据库,而是作为关系型数据库的一个重要补充。

  2. NoSQL 数据库为了适应灵活及高性能、高并发需求而生,忽略影响高性能、高并发的功能。

  3. 在 NoSQL 数据库领域,当今的最典型产品为 redis(持久化缓存)、MongoDB、Memcached(纯内存)等。

  4. NoSQL 数据库没有标准的查询语言(SQL),通常使用 REST 式的数据接口或者查询 API。

==Build,Rebuild,Recompile的区别==

Recompile

​ 对选定的目标(Java 类文件),进行强制性编译,不管目标是否是被修改过。

Rebuild

​ 对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。

Build

​ 对选定的目标(Project),编译那些被修改的文件;

==redis==

  1. redis 是将所有数据存放在内存中,因此能够提升系统的响应能力,能够提升用户的体验。
  2. 服务端使用缓存能够减轻数据库服务器的压力。
  3. 提升系统性能:缩短响应时间;减少网络传输时间和应用延迟时间;增加用户并发;提高数据库资源的利用率;

==ctrl+F5==

清楚浏览数据,F12中network下可以禁用缓存(disable cache)。

==SpringMVC普通参数与基本注解==

注解

@PathVariable, @RequestHeader, @ModelAttribute, @RequestParam, @RequestBody, @CookieValue, @MatrixVariable

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
@RestController
public class ParameterTestController {


// car/2/owner/zhangsan
@GetMapping("/car/{id}/owner/{username}")
public Map<String,Object> getCar(@PathVariable("id") Integer id,
@PathVariable("username") String name,
@PathVariable Map<String,String> pv,
@RequestHeader("User-Agent") String userAgent,
@RequestHeader Map<String,String> header,
@RequestParam("age") Integer age,
@RequestParam("inters") List<String> inters,
@RequestParam Map<String,String> params,
@CookieValue("_ga") String _ga,
@CookieValue("_ga") Cookie cookie){


Map<String,Object> map = new HashMap<>();

// map.put("id",id);
// map.put("name",name);
// map.put("pv",pv);
// map.put("userAgent",userAgent);
// map.put("headers",header);
map.put("age",age);
map.put("inters",inters);
map.put("params",params);
map.put("_ga",_ga);
System.out.println(cookie.getName()+"===>"+cookie.getValue());
return map;
}


@PostMapping("/save")
public Map postMethod(@RequestBody String content){
Map<String,Object> map = new HashMap<>();
map.put("content",content);
return map;
}


//1、语法: 请求路径:/cars/sell;low=34;brand=byd,audi,yd
//2、SpringBoot默认是禁用了矩阵变量的功能
// 手动开启:原理。对于路径的处理。UrlPathHelper进行解析。
// removeSemicolonContent(移除分号内容)支持矩阵变量的
//3、矩阵变量必须有url路径变量才能被解析
@GetMapping("/cars/{path}")
public Map carsSell(@MatrixVariable("low") Integer low,
@MatrixVariable("brand") List<String> brand,
@PathVariable("path") String path){
Map<String,Object> map = new HashMap<>();

map.put("low",low);
map.put("brand",brand);
map.put("path",path);
return map;
}

// /boss/1;age=20/2;age=10

@GetMapping("/boss/{bossId}/{empId}")
public Map boss(@MatrixVariable(value = "age",pathVar = "bossId") Integer bossAge,
@MatrixVariable(value = "age",pathVar = "empId") Integer empAge){
Map<String,Object> map = new HashMap<>();

map.put("bossAge",bossAge);
map.put("empAge",empAge);
return map;

}

}

==复杂参数==

MapModel(map、model里面的数据会被放在request的请求域 request.setAttribute)