当前位置: 首页 > news >正文

湖南省建设工程造价管理总站东阳市建设局网站

湖南省建设工程造价管理总站,东阳市建设局网站,腾讯企业邮箱登录入口网址,wordpress文章分类目录文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例#xff08;开发与Json相关接口#xff09; 三层架构三层架构介绍 JSON JSON#xff08;JavaScript Object Notation#xff09; 是一种轻量级的数据交换格式#xff0c;是存… 文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例开发与Json相关接口 三层架构三层架构介绍 JSON JSONJavaScript Object Notation 是一种轻量级的数据交换格式是存储和交换文本信息的一种语法它与XML具有相同的特性是一种数据存储格式却比 XML 更小、更快、 更易于人编写和阅读、更易于生成和解析。为了更好的做前端和后端之间的交互 常用的JSON解析 fastjson是阿里巴巴的开源JSON解析库Gson是Google提供的JSON解析库Jackson是SpringBoot默认序列化JSON解析库性能方面Jackson和FastJson差距很小Jackson是SpringBoot默认的序列化库也是最稳定的一个 分别对应的依赖 !--Gson-- dependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.9/version /dependency!--fastjson-- dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.73/version /dependency!--jackson-- dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.13.3/version /dependencyJackson的常规使用 实例化一个Jackson中用来做序列化的对象ObjectMapper ObjectMapper objectMapper new ObjectMapper();使用ObjectMapper提供的方法完成转换 方法名参数返回值说明writeValueAsString(Object object):StringObject被转换的对象String转换的结果将Object转换为JSONStringreadValue(String content,ClassT valueType):TString content:被转换的字符串ClassT valueType:指定接收返回值的类型泛型在第二个参数被指定的类型将JSONString转换为指定转换类型 eg bean目录 /*** {* name:中国,* province:[{name:黑龙江,”cities”:[哈尔滨,大庆]},* {name:广东,cities:[广州,深圳,珠海]},* {name:辽宁,cities:[沈阳, 大连]},* {name:新疆,cities:[乌鲁木齐]}* ]* }*/ Data AllArgsConstructor NoArgsConstructor public class Country {String name;ListProvince province; }/*** {name:黑龙江,”cities”:[哈尔滨,大庆]}*/ Data AllArgsConstructor NoArgsConstructor public class Province {String name;String[] cities; }Execution目录 public class JsonParseExecution {SneakyThrowspublic static void main(String[] args) {Country country new Country();country.setName(中国);// ListProvince provinces new ArrayList();Province province1 new Province(黑龙江, new String[]{哈尔滨, 大庆});Province province2 new Province(广东, new String[]{深圳, 珠海, 广州});Province province3 new Province(辽宁, new String[]{沈阳, 大连});Province province4 new Province(新疆, new String[]{乌鲁木齐});ListProvince provinces Arrays.asList(province1, province2, province3, province4);country.setProvince(provinces);ObjectMapper objectMapper new ObjectMapper();// 序列化将country对象转化为字符串String jsonStr objectMapper.writeValueAsString(country);System.out.println(jsonStr);/*** {name:中国,province:[{name:黑龙江,cities:[哈尔滨,大庆]},* {name:广东,cities:[深圳,珠海,广州]},* {name:辽宁,cities:[沈阳,大连]},{name:新疆,cities:[乌鲁木齐]}]}*/// 反序列化将字符串转换为country对象Country jsonCountry objectMapper.readValue(jsonStr, Country.class);System.out.println(jsonStr);} }指定日期格式 语句objectMapper.setDateFormat(new SimpleDateFormat(yyyy-MM-dd)); eg 在User中增加一个成员变量Date birthday Data NoArgsConstructor AllArgsConstructor public class User {Integer id;String username;String password;Integer age;Date birthday;Date createDate;String mobile;UserDetail userDetail; }Data NoArgsConstructor AllArgsConstructor public class UserDetail {Integer id;String email;String mobile; }Execution目录 public class JsonParseExecutionTest {SneakyThrowspublic static void main(String[] args) {UserDetail userDetail new UserDetail(1, 1234163.com, 12345678909);User user new User(1, zs, 123456, 22, new Date(), new Date(), 12345678900, userDetail);ObjectMapper objectMapper new ObjectMapper();// 解决日期格式的语句objectMapper.setDateFormat(new SimpleDateFormat(yyyy-MM-dd HH:mm:ss));String userJsonStr objectMapper.writeValueAsString(user);System.out.println(userJsonStr);/*** {* id: 1,* username: zs,* password: 123456,* age: 22,* birthday: 1711811845446, // 2024-03-30* createDate: 1711811845446,* mobile: 12345678900,* userDetail: {* id: 1,* email: 1234163.com,* mobile: 12345678909* }* }*/} } MVC设计模式 这个Servlet可以称之为控制器 → Controller查询student信息就是处理数据逻辑 → Model 另外这部分工作是在ServletController中进行的将数据和jsp共享 → 在Controller中将Model封装的数据准备就绪ServletController设置转发的jsp视图View并且在jsp视图中渲染出Model提供的信息 MVC介绍 三个核心部件 模型Model应用程序中用于处理应用程序数据逻辑的部分 获得一些具体的对象比如说User的对象、Order的list 视图View应用程序中处理数据显示的部分就是页面的展示采集用户数据控制器Controller应用程序中处理用户交互的部分。接收用户端的请求指的是Servlet的功能根据界面传递过来不同的值进行不同的增删改查操作之后再跳转到不同的界面显示。做一个承上启下的作用。 比如说request和response所处的位置就是servlet 强制性地使应用程序的输入、处理和输出分开。它们各自处理自己的任务。最典型的MVC就是JSP Servlet JavaBean的模式。MVC其实说的就是一个事情解耦。 前后端分离 通过js向后端发起Ajax异步请求然后请求到Server服务器找到对应的控制器由控制器和Model层和View做交互最终服务器处理的结果以Json的形式交给JSJS可以直接解析这个Json对象在前端页面上呈现最终的效果 也就是我们在Servlet中完成开发之后响应体中响应的是Json字符串 案例开发与Json相关接口 请求相关信息 请求URLhttp://localhost:8080/demo3/auth/account/check请求方法POST请求参数请求参数是JSON字符串{userAccount:admin123}提供Postman构造Json数据 提供filder抓取的请求报文 业务传入的用户名信息然后完成一些业务需要在数据库user_t表中根据用户名查询id信息 如果用户名长度小于6响应一段JSON数据 {data:null,errmsg:字符串长度至少6位,errno:400 }如果用户不存在响应一段JSON数据 {data:null,errmsg:用户不存在,errno:502 }如果用户存在响应一段JSON数据 {data:user的json字符串,errmsg:用户存在,errno:200 }eg bean目录下 NoArgsConstructor Data public class ResponseVo {JsonProperty(data)private Object data;JsonProperty(errmsg)private String errmsg;JsonProperty(errno)private Integer errno;/*** {* data:null,* errmsg:字符串长度至少6位,* errno:400* }*/ }servlet目录下 WebServlet(/auth/account/*) public class AuthAccountCheckServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {process(req, resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {process(req, resp);}SneakyThrowsprivate void process(HttpServletRequest request, HttpServletResponse response) {DispatchUtil.dispatch(request, response, this);}SneakyThrowsprivate void check(HttpServletRequest request, HttpServletResponse response) {// JSON字符串{userAccount:admin123}// 首先获得Json字符串并解析它String jsonStr request.getReader().readLine();ObjectMapper objectMapper new ObjectMapper();Map map objectMapper.readValue(jsonStr, Map.class);String userAccount (String) map.get(userAccount);String responseStr null;// 判断长度if (userAccount null || userAccount.length() 3) {// 不符合要求/*** {* data:null,* errmsg:字符串长度至少6位,* errno:400* }*/ResponseVo responseVo new ResponseVo();responseVo.setErrmsg(字符串长度至少6位);responseVo.setErrno(400);responseStr objectMapper.writeValueAsString(responseVo);}UserMapper userMapper MybatisUtil.getSqlSession().getMapper(UserMapper.class);ListUser users userMapper.selectByUserName(userAccount);if (users ! null users.size() 0) {// user存在/*** {* data:user的json字符串,* errmsg:用户存在,* errno:200* }*/ResponseVo responseVo new ResponseVo();responseVo.setData(users.get(0));responseVo.setErrmsg(用户存在);responseVo.setErrno(200);responseStr objectMapper.writeValueAsString(responseVo);} else {// user不存在/*** {* data:null,* errmsg:用户不存在,* errno:502* }*/ResponseVo responseVo new ResponseVo();responseVo.setErrmsg(用户不存在);responseVo.setErrno(502);responseStr objectMapper.writeValueAsString(responseVo);}response.setContentType(application/json;charsetutf-8);response.getWriter().println(responseStr);} }三层架构 三层架构这里和MVC并不是冲突的概念而是在MVC的基础上进一步解耦之前在Controller控制层直接调用了Model为了后续业务上的解耦在中间增加增加了一层业务逻辑层在业务逻辑层中处理大部分业务 三层架构介绍 三层架构表示层、业务逻辑层、数据访问层 避免了表示层直接访问数据访问层表示层只和业务逻辑层有联系提高了数据安全性如果切换B/S、C/S架构直接替换表示层即可比如替换Servlet项目结构更清楚分工明确增加可维护性 实际在开发过程中的体现就是控制层Servlet中直接调用Service业务逻辑层在Service中调用Dao数据访问层
http://www.w-s-a.com/news/364843/

相关文章:

  • 做中医药网站有前景吗企业网站优化公司
  • 四川建设设计公司网站海南澄迈县
  • 邳州做网站梵克雅宝项链官网价格图片
  • dede网站收录滦平县建设局网站
  • 上海网站建设开发公注册公司要求什么条件
  • 安徽汽车网网站建设wordpress 知乎
  • 网站建设的功能都需要有哪些在线平台
  • 湖南岳阳网站开发网络公司石家庄做网站的公司哪个好
  • 西安市做网站的公司门户网站对应序号是什么
  • 太原网站域名开发什么是网页界面设计
  • 做产品类网站有哪些做一百度网站吗
  • 在线视频网站建设国外最新创意产品网站有哪些方面
  • 在一个网站下建设多个子网站宣传册画册设计公司
  • 潍坊网站建设公司排名网站建设预付
  • 手机和wap网站建设crm客户管理系统模板
  • 微商城网站建设市场唐山地方志网站建设
  • 想象力做网站网站301跳转代码
  • 做暧暧小视频有声音的网站太原网页搜索排名提升
  • 公众号链接的手机网站怎么做动易2006学校网站
  • 网站网上推广网站推他网站
  • 如何进行网站建设分析济宁做企业网站
  • 长沙网站seo技巧wordpress插件头像
  • appserv做网站教程微信信息流广告案例
  • 前端网站开发兼职长春火车站地下停车场收费标准
  • 苏州推广网站建设概况大连公交app
  • 移动互联网站开发与维护招聘网站建设计入什么费用
  • 郑州营销型网站建设erp系统有什么用
  • 公司网站开发费怎么入账投放广告网站
  • 企业网站开发文献综述加盟网网站建设策划书
  • 最便宜的网站空间网站建设和app开发