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结尾!!

<servlet>
    <servlet-name>mvc9</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>mvc9</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

当然,这里我们也不选择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(spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点...
    乐格阅读 32,633评论 0 4
  • 用 ssm 为框架做了一个系统的后台,今天做一下关于 ssm 的总结。 一、Spring Spring是一个开源框...
    其实我很菜啊阅读 10,331评论 3 2
  • 要加“m”说明是MB,否则就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505阅读 10,339评论 0 53
  • 对于java中的思考的方向,1必须要看前端的页面,对于前端的页面基本的逻辑,如果能理解最好,不理解也要知道几点。 ...
    神尤鲁道夫阅读 4,235评论 0 0
  • 识别的过程其实是自我怀疑的过程,否定自我的过程,是一个重新认定的过程。这个过程是一个痛苦的、恐惧的过程! 一个人为...
    高墙冥思_5a44阅读 4,037评论 1 2