springmvc modelview 返回数据与页面交互处理

本文介绍了SpringMVC中Controller层处理前端请求的两种常见方式:一种是通过JSON对象响应数据,由前端页面进行解析处理;另一种是直接重定向或打开新窗口,适用于异常情况,不需要前端进一步处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springmvc controller层在与前端页面进行数据交互时,根据页面处理需要对modelview响应数据做处理,
举例说明:

@RequestMapping(params = "action=jumpEduproduct")
    public void getEduProduct(HttpServletRequest request, HttpServletResponse response) throws IOException {

        logger.info("action=jumpEduproduct=====>");
        Map<String,String> paramsMap = new HashMap<String, String>();
        String jsonStr = "";
        JSONObject jsonObject =  new JSONObject();
        response.setHeader("Content-type", "text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");


//  ====处理方式1:
         if (StringUtils.isBlank(userId)) {
                    logger.error("error userid!");
                    jsonObject.put("ret",-1);
                    jsonObject.put("msg", "用户ID不能为空!");
                    response.getWriter().print(jsonObject.toString());
                    return;
         }

        if (resq.getRet() != 0){
                jsonObject.put("msg","处理异常, 返回错误数据!");
                jsonObject.put("ret",resq.getRet());
                jsonObject.put("msg", resq.getMsg());
                response.getWriter().print(jsonObject.toString());
                return;
        }
........
// ====处理方式2:

    YdEduResp resq = JSON.parseObject(jsonStr, YdEduResp.class);
            if ((appFlag == 0 || appFlag == 1)){
                if (resq.getRet() == 0){
                    directUrl = resq.getCallbackurl() + "&accesstoken=" + resq.getAccesstoken() + "&random=" + Math.random();
                    System.out.println("success direct:" + directUrl);
                    response.getWriter().write("<script>window.location.href=\'" + directUrl + "\';</script>");
//              response.getWriter().write("<script>window.open(\'" + directUrl + "\','_blank')</script>");
                    return;
                }else{
                    directUrl="http://www.baidu.com";
                    System.out.println("==>fail direct2:" + directUrl+"__fail reason:"+resq.getMsg());
                    response.getWriter().write("<script>window.alert(\'接口响应异常,返回XXX首页!\');window.location.href=\'" + directUrl + "\';</script>");
                    return;
                }




对应方式1 对应某页面page发起请求,响应json对象数据到page页面,page进行解析处理:

 page页面先发起ajax请求:
   $('.govdiv').click(function(){
//          $.getScript(  $(this).attr('data-url') );
            $.ajax({
                url : $(this).attr('data-url'),
                type : "POST",
                data : JSON.stringify(data), //转JSON字符串
                dataType: 'json',
                contentType:'application/json;charset=UTF-8',
                success : function(result) {
                    dispatch(result);
                }
            });

result为controller的响应数据,click()提交请求响应成功后对响应数据进行解析:

function dispatch(data){
        if(data.ret!=0)
            alert(data.msg);
        else{
            if (data.accessToken != null && data.accessToken != ""){
//              window.location.href = data.callbackurl +"&accesstoken=" + data.accesstoken+"&tmp="+Math.random();
                window.open(data.callbackurl +"&accesstoken=" + data.accessToken+"&tmp="+Math.random());
            }else{
//              window.location.href = data.callbackurl;
                window.open(data.callbackurl);
            }
        }

对应方式2:
直接打开新窗口或重定向到某页面,不与页面进行交互,一般用于异常场景,响应数据不需要前端解析直接对用户进行提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值