【SSM】【4】前端后端数据流转

前后端数据流转图:

业务流转图

  1. 前端控制器接受用户请求响应
    1.         doJsonRequest("/ursuser/login.json", json, function (data) {
                  if (getUrlParam("session") == 1) {
                      history.back();
                  } else {
                      if (data.msgCode == 10007) {
                          openDiv("password_edit.html", "edit", function () {
                              $("#alert").append("初次登录请修改密码");
                          });
                      }
                      if (data.msgCode == 10004) {
                          window.location.href = "index.html"
                      }
                  }
              }, "POST");
  2. 根据url查找controller(handle):由注解@RequestMapping指定url
  3.  @RequestMapping(value = "/login.json", method = {RequestMethod.POST,
                RequestMethod.GET}, produces = "application/json;charset=UTF-8")
        public
        @ResponseBody
        Object login(@RequestBody UrsUserQuery ursUserQuery, HttpServletRequest request, HttpServletResponse httpServletResponse, HttpSession session) throws Exception {
            //update-20180614-LuoLiang-添加查询所属机构
            String sql = "select uu.*,ur.role_id,ur.role_desc,regexp_replace(tt.comname,'^\\d+','') as comname from t_urs_user uu " +
                    "left join t_urs_user_role uur on uur.user_id=uu.user_id " +
                    "left join t_urs_role ur on ur.role_id=uur.role_id " +
                    "left join v_pub_company tt on substr(uu.comcode,0,8) = substr(tt.comcode,0,8) " +
                    "where uu.enable='1' and ur.enable='1' and uu.user_id='%s' and uu.user_password='%s'";
            sql = String.format(sql, ursUserQuery.getUserId(), MD5Util.MD5(ursUserQuery.getUserPassword(), ""));
            Object object = commonServiceImp.find(sql);
            if (object != null) {
                Map<String, Object> ursUser = (Map<String, Object>) object;
                Object obj = ursUser.get("COMCODE");
                if (obj != null) {
                    String comcode = String.valueOf(obj);
                    if (comcode.length() > 6) {
                        ursUser.put("COMCODE", comcode.substring(0, 6));
                    }
                }
                //ursUser.put("M_PASSPORT", CognosUtil.getPassportId());
                String ursUserStr = JsonUtil.toJson(ursUser);
                LOGGER.info("{}登录成功", ursUserStr);
                logLoginServiceImp.loginlog(ursUserQuery.getUserId(), request.getRemoteAddr());
                ursUserStr = URLEncoder.encode(ursUserStr, CharEncoding.UTF_8);
                CookieUtil.addCookie(httpServletResponse, CookieKeyConstant.USER_KEY, ursUserStr);
                session.setAttribute("user_session", ursUser);
                if (ursUser.get("DESCRIPTION") == null) {
                    return new RestBean(MsgCodeConstant.MUST_EDITPASSWORD);
                }
                return new RestBean(MsgCodeConstant.LOGIN_SUCCESS);
            } else {
                throw new RestException(-1, "账户名或密码错误");
            }
        }

    返回json:@ResponseBody会返回一个json串,将返回的数值直接返回给HTTP Response Body,通过Ajax异步传值,前台会的到返回的HTTP Response Body  也就是就送串

猜你喜欢

转载自blog.csdn.net/liangayang/article/details/83090742