java web 前后台json传值

1.前端代码(Login.jsp)

注意== 之间的代码

            
            $(function(){
                //如果当前窗口不是最顶级窗口,就表示当前窗口被嵌套了
                if(window.top != window){
                    window.top.location.href = "/s/login";
                }
                //===================================================================
                //id选择器,选择btn-login对象,为此对象添加点击事件
                $("#btn-login").click(function () {
                    //$("#loginFrom")[0].submit();//使用js代码来同步请求提交表单
                    //发送请求,            将此表单转成json格式        从后台得到数据
                    $.post("/singin/login",$("#loginFrom").toJSON(),function (data) {
                        if(data.status == 500){
                            //为标签的内容填值
                            $("#errorMsg").text(data.msg);
                        }else{
                            //JS代码跳转页面
                            location.href = "/singin/index.jsp";
                        }
                    },"json");
                });
                //===================================================================

                //回车键登录,添加按键监听,document对象是页面对象,全局按键效果
                $(document).keypress(function (event) {
                    if(event.keyCode == 13){//13是enter键
                        //触发一下btn-login按钮的点击事件
                        $("#btn-login").click();//生效标签一次点击事件
                        //$("#btn-login").trigger("click");
                    }
                });
            });

2.后台代码(Controller)

接收后台代码进行判断,返回ResulJson对象数据,将此数据转成json数据(@ResponseBody)传到前端

    
    @ResponseBody//得到json数据,再传到前台
    /*点击提交是使用的是post请求,运行下面代码*/
    @RequestMapping(value="/login",method = RequestMethod.POST)
    public ResultJson login2(String username, String password, ModelMap modelMap){
        try {
            Subject subject = SecurityUtils.getSubject();//得到用户对象,此对象拥有数据对象
            if(!subject.isAuthenticated()){//如果没有登录就登录
                //传入从前端传过来的数据(username、password),创建数据对象
                UsernamePasswordToken token = new UsernamePasswordToken(username,password);
                //验证登录,将数据对象传入用户对象的登录方法
                subject.login(token);//传入后,用户对象的登录状态可能变化
                //如果成功就跳转到首页
                if(subject.isAuthenticated()){
                    return new ResultJson(200,"ok");//ResultJson类待会看看
                }
            }
        }catch (UnknownAccountException e){//Unknown未知的  Account账户
            e.printStackTrace();
            return new ResultJson(500,"this account is unknown");
        }catch (IncorrectCredentialsException e){
            e.printStackTrace();
            return new ResultJson(500,"this password is error");
        }catch (AuthenticationException e) {
            e.printStackTrace();
        }
        //登录失败再回到登录页面
        return new ResultJson(500,"something has wrong");
    }

3.ResultJson.java(utils类)

两个字段

package com.capcom.utils;

public class ResultJson {

    private Integer status;

    private String msg;

    public ResultJson() {
    }

    public ResultJson(Integer status, String msg) {
        this.status = status;
        this.msg = msg;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

4.再回来看看前台代码

上面说了,后台传一个json数据到前台,这里使用“data”接收

此时的data就拥有两个字段,这两个字段就是在Controller里面设置的

data的msg可以是“账号错误”等等的值

data的status是设置的状态码,根据这个值判断是否跳转到页面

                $("#btn-login").click(function () {
                    //$("#loginFrom")[0].submit();//使用js代码来同步请求提交表单
                    $.post("/s/login",$("#loginFrom").toJSON(),function (data) {
                        if(data.status == 500){
                            $("#errorMsg").text(data.msg);
                        }else{
                            //JS代码跳转页面
                            location.href = "/s/index.jsp";
                        }
                    },"json");
                });

5.在java代码中写json代码传到 页面直接显示

void writer(){
    response.setContextType("text/html;charset:utf-8");
    response.getWriter().write("<script type=""> top.localtion.href=' 请求路径 '; </script>");
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值