SSM框架总结

在我们学习SSM框架时,总会遇到一些知道怎么做却不知道为什么这么做的知识点,今天我就来总结一下~~~~~

1:如何进行转发,重定向,以及这两者该如何选择?

(1)转发:forward 一般发生于查询过后,将查询结果进行转发

return "forward:/jump/test1";//跳转至jump/test1.jsp去

(2) 重定向:redirect 一般发生于增删改之后,为防止重复提交

return "redirect:/index.jsp";//重定向至index.jsp中

2.Model中的数据,EL表达式如何获取

Model是SpringMVC中封装的一个对象,其本质和request基本一致,所存作用域也相同,所以在EL表达式中可以直接在requestScope中取值

${requestScope.xxx}

3.SpringMVC为什么会有静态资源问题

在SpringMVC中,我们采用了核心对象DisptcherServlet(前端控制器)而它的url-pattern为“ / ”,和Tomcat内置的处理静态资源的DefaultServlet的url-pattern的一样,二者互相冲突,根据最近原则,tomcat的默认配置被抵消,所以静态资源我们就没办法在访问到了

解决方案1:

DispathcerServlet采用其他的url-pattern
此时,所有访问handler的路径都要以 action结尾!!


    mvc9
    org.springframework.web.servlet.DispatcherServlet


    mvc9
    *.action

当然,这里我们也不选择action,像do啊,ac啊,这里可以随便取,但我们要给每一个handler加上该后缀(也太麻烦了,反正我是不用)

4.如何将我们返回的对象响应成JSON

放我们想要将我们返回的对象转换为JSON时,我们可以给每一个handler都加上一个@RespnseBody注解,这样在编译的时候就可以自动帮我们转化成JSON了,当然,我们也可以直接在类前面加上一个@RestController这样,每个handler返回的对象就可以都转换为JSON了,String除外

5.如何接受json参数

至于如何接受JSON参数,首先我们要在前端设置传送来的数据是一个JSON(设置ContentType为Application/json),其次,我们需要前端传过来的请求的类型是"post"这样,我们就可以使用@RequestBody注解,将前端传过来的JSON串直接解析为我们的java对象,大大方便我们的编程

6.SpringMVC工厂和Spring工厂关系

Spring工厂和SpringMVC都是一个Bean工厂,而Spring工厂属于父工厂
而SpringMVC工厂属于子工厂,被Spring工厂包含在内

7.Rest两个核心原则

1 每个资源都有唯一的标识
2 每个请求都有明确的对应的动词

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping

8.Get、Post、Put、Delete分别对应那种操作

get 对应 查找
post 对应 增加
put 对应 修改
delete 对应 删除

9.域的标识是什么?

1: 使用的协议
2:IP地址
3:端口号

10:ajax跨域请求有什么风险?

为什么AJAX访问不能跨域呢?要讲清楚这个问题,首先要谈谈Cookie

1.客户向A网站的服务器发送登录请求,并携带账号密码数据

2.A网站的服务器校验账号密码正确后,返回响应并给本地添加了Cookie

3.之后客户再次向A网站发起请求会自动带上A网站存储在本地的cookie

4.A网站的服务器从cookie中获取账号密码数据后,返回登陆成功界面。
o_Cookie_Session001.png

解决方案响应头中添加:Access-Control-Allow-Origin: http://localhost:8080 即可
被访问方,添加此响应头;响应头中设置访问方的域
或在被访问方的Controller类或方法上,添加注解:

@CrossOrigin("http://localhost:8080")
public class SysUserController {
    ....
}

3. 跨域携带cookie

A 不仅要能访问 B,还能在请求中携带B的cookie,进而保证B中运行时有cookie可用

被访问方:B

指定好允许的域
@CrossOrigin(value = "http://localhost:8080")
public class SysUserController {
    ....
}

访问方:A

withCredentials: true
$.ajaxSetup({
 xhrFields: {
   withCredentials: true
 }
});
$.getJSON("http://localhost:8989/web/sys/user/info...);
$.get(...)
$.post(...)
$.ajax(...)

或者

$.ajax({
 type: "POST",
 url: "http://localhost:8989/web/sys/login",
 ...,
 xhrFields: {
   withCredentials: true
 }
});

或者

var xhr = new XMLHttpRequest();
// 跨域携带cookie
xhr.withCredentials=true;

你可能感兴趣的:(SSM框架总结)