jsp+js+servlet实现前后端分离

一、案例演示

输入账号密码点击提交弹出窗口,首先js获取前端jsp输入账号密码的信息,传递给servlet,返回后回调到js页面,返回结果到jsp页面
在这里插入图片描述

二、代码演示方法一

1、demo01.jsp

<%--
  Created by IntelliJ IDEA.
  User: Dell
  Date: 2022/9/30
  Time: 16:57
  To change this template use File | Settings | File Templates.
--%>
<%@ page isELIgnored= "false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script type="text/javascript"></script>
<script type="text/javascript" src="../js/jquery02.js"></script>
<body>

<script type="text/javascript">
    function json(){
        //获取用户名密码
        var username=$("#username").val();
        var password=$("#password").val();
        $.ajax({
            url:"${pageContext.request.contextPath}/testJson",
            type:"post",
            // 通过serialize() 方法,可以对表单内容进行序列化。以键值对的方式进行呈现。
            // 发送的数据
            data:JSON.stringify({username:username,password:password}),
            // 发送的格式
            contentType:"application/json",
            //回调响应的字符串
            dataType:"json",
            success:function (data){
                if (data!=null){
                    alert("账号"+data.username+"密码"+data.password);
                }
            },
            error:function (){
                alert("error");
            }
        })
    }
</script>

<form>
    账号:<input name="username" type="text" id="username"/><br>
    密码:<input name="password" type="text" id="password"/><br>
    <input  type="button" value="测试json交互01" onclick="json()"/>
</form>
</body>
</html>

2、UserController

//@RequestBody的作用是将前端传来的json格式的数据转为自己定义好的javabean对象
//@ResponseBody的作用是将后端以return返回的javabean类型数据转为json类型数据。
@Controller
public class UserController {
    @RequestMapping("/testJson")
    @ResponseBody
    public User testJson(@RequestBody User user){
        System.out.println(user);
        return user;
    }
}

3、User

package com.example.text.vo;

public class User {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

三、代码演示方法二

1、demo02.jsp

<%--
  Created by IntelliJ IDEA.
  User: Dell
  Date: 2022/9/30
  Time: 16:57
  To change this template use File | Settings | File Templates.
--%>
<%@page isELIgnored= "false" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<script type="text/javascript" src="../js/jquery02.js"></script>
<script type="text/javascript" src="../js/js_demo02.js"></script>
<body>


<form id="form">
    账号:<input name="username" type="text" id="username"/><br>
    密码:<input name="password" type="text" id="password"/><br>
    <input  type="button" value="测试json交互02" onclick="json()"/>
</form>
</body>
</html>

2、js_demo02.js

function json(){
    var $form = $('form');
    console.log($form.serialize());
    $.ajax({
        url:"http://localhost:8080/javaee_war_exploded/login",
        // url:$("#PageContext").val()+'/login',
        type:"post",
        // 发送的数据
        // 通过serialize() 方法,可以对表单内容进行序列化。以键值对的方式进行呈现。
        data:$('form').serialize(),
        // 发送的格式
        // contentType:"application/json",
        //回调响应的字符串
        dataType:"json",
        success:function (data){
            if (data!=null){
                alert(data.username);
            }
        },
        error:function (){
            alert("error");
        }
    })
}

3、UserController

@Controller
public class UserController {
    //以前以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,
    // 一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串。
    // 然而ajax请求默认传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。
    // 同时ajax请求的时候也要指定dataType: "json",contentType:"application/json"
    // 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者Lis
    @RequestMapping("/login")
    @ResponseBody
    public String login(User user) throws JsonProcessingException {
        System.out.println(user);
        //创建Jackson的核心对象ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //	将obj对象转换成json字符串
        String json = mapper.writeValueAsString(user);
        return json;
    }
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑伴你而行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值