标签:key 简单 dao 实现 扩展 序列化 obj style 重定向
SpringMVC
View 从jsp =》现代前端;
C 从Servlet =》Controller;
Model 包括数据和行为:dao+service,vo/dto
DispatcherServlet 请求分发
dispatcher程序调度
SpringMVC执行流程:
(找个清楚的图。。)
实线是MVC自动做好的事情:
虚线是自己做的部分:
注解开发SpringMVC
RESTful风格:以斜线分隔
互联网所有事物抽象为资源URI
URI资源的操作:GET、POST、DELETE、PUT 分别对应 查、增、删、改
(注意:post是增;put是改)
1)传统方式操作资源:
要写出来方法全名,同一对象不同操作写多种
2)RESTful操作资源:
通过请求的方式(GET、POST、DELETE、PUT、PATCH)来判断:
@GetMapping 查
@PostMapping 增
@PutMapping 更新服务端资源全部信息
@PatchMapping 更新服务端资源部分信息
@DeleteMapping 删除资源
@RequestMapping 范围:类中所有方法
@GetMapping("/get") public R getParam(@RequestParam Long ID){ ... return R.data(getParam()); }
@PostMapping("/post") public R PostParam(@RequestBody Map<String,Object>params){ ... return R....; }
@DeleteMapping("/delete") R remove(@RequestParam Long ID){ return R....; }
重定向和转发(url相关)
转发 重定向
重定向 redirect
可以跨域访问
相对路径:URL以 "/" 开头,相对整个WEB站点 根目录
绝对路径:"/当前Web程序根名称 /资源名"
如"/WebModule/login.jsp","/bbs/servlet/LoginServlet"
转发 forward
在web服务器内部进行的,不能跨域访问。、
相对路径:URL以 "/" 开头,相对当前WEB应用程序 根目录
相对路径用forward高效
绝对路径如:"/login.jsp"或"/servlet/LoginServlet"(比redirect少一层)
跨域:
在浏览器上当前访问的网站向另一个网站发送请求获取数据的过程就是跨域请求。
跨域访问 4种情况:
转发/重定向的实例:
注意:forward是转发!
接收请求参数
1)提交数据与方法参数一致:
2)两个名称不一致:
提交对象:
如果名字不对应,则对应属性字段显示值为null
乱码问题解决
SpringMVC中提供过滤器,直接在web.xml中 配置filter即可
encoding设置为utf-8
xml中配置filter:
/* 使包含jsp页面(不重要):
UTF-8
是Unicode的实现方式之一
对于英语字母,UTF-8 编码和ASCII 码是相同的
UTF-8是一种变长编码,由1~4个字节表示一个符号
UTF-8扩展阅读:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
Jackson
JSON解析工具:jackson和下面的fastjson都是后端用的JSON解析工具,都是第三方包。
使用流程:
1.导jackson包
2.把JSON乱码在xml里面统一配置下
3.先创建mapper对象,mapper把我们要转换的对象转成String
writeValueAsString
多个对象时,先add到list里,然后再转换成string
ps:
直接显示Date:
Date的格式处理:
处理之后:
fastjson
阿里巴巴的fastjson(工具类utils):
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
JSON对象,JSON字符串,JAVA对象
User[name=shily,sex="女",age=23]
下面是一些例子,重点看List:
简单java类转json字符串:{"password":"123456","username":"dmego"}
List<Object>转json字符串:[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]
复杂java类转json字符串:{"name":"userGroup","users":[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]}
json字符串转简单java对象:User [username=dmego, password=123456]
json字符串转List<Object>对象:[User [username=zhangsan, password=123123], User [username=lisi, password=321321]]
json字符串转复杂java对象:UserGroup [name=userGroup, users=[User [username=zhangsan, password=123123], User [username=lisi, password=321321]]]
使用:
1) JAVA对象转JSON字符串
String str001 = JSON.toJSONString(student001);
2)JSON字符串转JAVA对象
Student student001 = JSON.parseObject(str001, Student.class)
3) JAVA对象转JSON对象
JSONObject jsonObject001 =(JSONObject)JSON.toJSON(student001);
4) JSON对象转JAVA对象
Student student001 = JSON.toJavaObject(JsonObject001,Student.class)
fastjson常用API(要学会找官方API文档来开发):
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。
实例:(最好换成别的例子)
R screenExecuteByList(@RequestBody JSONObject jsonObject) { Integer page = jsonObject.getInteger("page"); Integer limit = jsonObject.getInteger("limit"); Integer startIndex = (page - 1) * limit; Long bizTypeId = jsonObject.getLong("bizTypeId"); String key = JSONArray.toJSONString(jsonObject.get("executedBy")); List<Integer> executedBy = JSON.parseArray(key, Integer.class); List<BizDrivePerformanceCMainDo> bizDrivePerformanceCMainDos = bizDrivePerformanceCMainService.screenExecuteByList(bizTypeId, executedBy, startIndex, limit); Integer total = bizDrivePerformanceCMainService.getCountByExecutedBy(bizTypeId, executedBy); return R.data(bizDrivePerformanceCMainDos).put("total", total); }
JSON字符串和JSON对象间的转换(用JS)
JSON 可以使用标准的 JavaScript 函数来解析。(JS Object Notation)
AJAX 异步无刷新请求
AJAX==> 异步JS and XML
AJAX 局部修改网页,而不用全部刷新
一般在JS代码中运用Ajax技术
通过 AJAX,JavaScript 无需等待服务器的响应,而是:
最常用的是GET 和POST,
GET 更简单也更快,
在以下情况中,请使用 POST 请求:
jQuery库,提供了Ajax封装:
$. 等价于 jQuery.
平时常用这两个:
$.get和$.post里面都深层调用$.ajax
不清楚接口就点进去看接口(如下):
例子:
当然,也可以补一个error情况的回调函数
需要对象数组,返回List<Object>
前端的$.get/$.post不变,后端直接写成这样就行了:
过滤器Filter(Servlet开发版)
用来过滤网站的数据(统一处理,不用每个地方都写):
SpringBoot里面用Shiro
处理中文乱码:
过滤器filter的xml配置:
encoding设置为utf-8
拦截器
与过滤器filter的区别:
只有访问Controller,拦截器才会拦截;
静态资源如:html/css/js/image都不会拦截,提高效率
想要自定义拦截器,就实现HandlerInterceptor接口:
原理是AOP,重写各个切面的Advice即可:
登录判断验证(拦截器运用实例)
ps:把用户的登录信息存在session中:
看下格式就好,业务逻辑看别的实际项目(不重要):
文件上传&下载(Servlet开发版)
文件上传和下载的方法都是死的,多看几遍,理解+记忆
前端
设置为 表单数据:
这样才会发送二进制流 数据到服务器。
后端
xml导入,Maven帮导入依赖的common.io包
文件上传配置(不重要):
然后写Controller:
1)方式一(看懂即可,不记忆)
2)方式二(看懂即可,不记忆)
标签:key 简单 dao 实现 扩展 序列化 obj style 重定向
原文地址:https://www.cnblogs.com/qyf2199/p/14012727.html