什么是SpringMVC
底层是servlet
- MVC是模型(Model)、视图(View)、控制器(Controller)的简历
- 是一种软件设计规范
- 是将业务逻辑、数据、显示分离的方法来组织代码
- MVC主要作用是降低了试图与业务逻辑间的双向耦合
- MVC不是一种设计模式,MVC是一种架构模式
SpringMVC特点
- 轻量级,简单易学
- 高效,基于请求响应的MVC框架
- 与Spring兼容性好,无缝结合
- 约定优于配置
- 功能强大:RESTful,数据验证,格式化,本地化,主题等
- 简介灵活
SpringMVC执行原理
RestFul风格
RestFul就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
- 资源:互联网所有的事物都可以被抽象为资源
- 资源操作:使用POST、DELETE、PUT、GET,不同方法对资源进行操作
- 分别对应 添加、删除、修改、查询。
使用RESTful风格操作资源:可以通过不同的方式来实现不同的效果!如下:请求地址一样,但是功能可以不同
- http://localhost/item/1 :查询,GET
- http://localhost/item :新增,POST
- http://localhost/item:更新,PUT
- http://localhost/item/1:删除,DELETE
主要实现方式
-
使用注解@Pathvariable
@RequestMapping("/add/{a}/{b}") public String test(@Pathvariable int a,@Pathvariable int b){ }
-
使用RequestMethod方法
@RequestMapping(value="/add/{a}/{b}",method=RequestMethod.GET) @RequestMapping(value="/add/{a}/{b}",method=RequestMethod.POST)
-
使用@GetMapping或者@PostMapping等注解
@GetMapping("/add/{a}/{b}") @PostMapping("/add/{a}/{b}")
接受请求参数与数据回显
-
@RequestParam注解接受指定参数,否则报错
public String test(@RequestParam("username") String name,Model model){}
乱码问题解决
- xml文件中配置SpringMVC的乱码过滤器
- 自定义过滤器filter
JSON
- json是一种轻量级的数据交换格式,目前使用特别广泛
- 采用完全独立于编程语言的文本格式来存储和表示数据
- 简洁和清晰的层次结构使得json成为理想的数据交换语言
- 易于人阅读和编写,同时也易于机器解析和生成,并有效的提升网络传输效率
- JavaScript语言中,任何JavaScript支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等
- 表示方法
- 对象表示为键值对,数组由逗号分隔
- 花括号保存对象
- 方括号保存数组
- 前端JSON数据转换
- JSON字符串转JavaScript对象:var obj = JSON.parse(’{“a”:“hello”,“b”:“world”}’)
- JavaScript对象转JSON字符串:var json = JSON.stringify({a:‘Hello’,b:‘world’})
Jackson
-
@Controller和@requestBody注解配合使用后,return “test”;就不会走视图解析器,直接返回字符串
-
@RestController单独使用,也不会走视图解析器
-
@requestMapping(value="/aa",producs=“application/json;charset=utf-8”)可以防止乱码
-
jackson包下 ObjectMapper可以转换json字符串
ObjectMapper mapper = new ObjectMapper(); //ObjectMapper转换后时间格式默认为时间戳(Long),关闭默认时间戳方式 mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false); //使用java语言 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); mapper.setDateFormat(sdf); return mapper.writeValueAsString(user);
-
一般使用为工具类
FastJson
fastjson.jar是一款专门用于java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象和json字符串的转换
-
JSONObject代表json对象
-
JSONArray代表json对象数组
-
JSON代表JSONObject和JSONArray的转化
//Java对象转JSON字符串 String str = JSON.toJSONString(userList); //JSON字符串转对象 User user = JSON.parseObject(str,User.class); //Java对象转JSON对象 JSONObject jsobject = (JSONObject)JSON.toJSON(user) //JSON对象转Java对象 User user2 = JSON.toJavaObject(jsobject,User.class)
ssm整合SpringMVC
- 引入web支持
- 配置web.xml文件
- 配置DispatcherServlet
- 配置乱码过滤
前端Ajax技术
- Ajax = 异步的JavaScript 和XML
- 是一种在无需加载整个网页的情况下,能够更新部分网页的技术
- 不是一种新的语言,而是一种用于创建更快更好以及交互性更强的web应用程序的技术
- 传统网页更新或者提交一个表单,都需要重新加载整个网页
- 使用ajax技术的网页,通过在后台服务器进行少量的数据交换,就可以实现异步局部更新
- 使用ajax,用户可以创建接近本地桌面应用的直接、高可用、更丰富、更动态的web用户界面
- jQuery是一个库,js的大量函数(方法)
拦截器
- 拦截器是AOP思想的具体应用
- 拦截器是SpringMVC自己的,只有使用了SpringMVC框架的工程才能使用
- 拦截器只会拦截访问的控制器方法(controller层),自动过滤jsp/html/css/image/js
- 自定义拦截器,实现HandlerInterceptor接口 ,就叫拦截器
- 方法中return true是放行进入下一个拦截器的意思