分布式项目 11 在项目中使用jsonp发送请求并且处理

news/2025/3/24 1:16:04/

在项目中使用jsonp技术
01.相关子系统的搭建
第一步:创建一个新的子系统,叫做jt-sso
选中jt父级项目,然后鼠标右键进行new,然后选中maven Model,进行项目的创建,具体操
作如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第二步:编辑pom.xml文件
01.引入jt-common项目资源依赖坐标

<dependencies>
<dependency>
<groupId>com.jt</groupId>
<artifactId>jt-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

02.添加插件

<build>
<plugins>
<!--跳过测试类打包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

第三步:创建封装用户信息的实体类(是实现用户注册)
01.在jt-common中创建POJO,具体代码如下所示:

@TableName("tb_user")
@Data
@Accessors(chain =true)
public class User extends BasePojo{
@TableId(type =IdType.AUTO)
private Long id;
private String username;
private String password;
private String phone;
private String email;
}

02.创建UserMapper接口
说明:在jt-sso项目下,创建一个数据层接口。

public interface UserMapper extends BaseMapper<User>{
}

第四步:资源整合
说明:将jt-manage项目中的src/main/resources目录下的所有的资源复制到jt-sso项目下的
src/main/resources目录里。然后接下来,进行资源修改
01:将将mappers目录下的ItemMapper改为UserMapper
在这里插入图片描述

02:将properties目录下的image.properties删掉,此模块不涉及图片上传的业务,因为不需要
image.properties中的配置信息。
03:修改application.yml文件中的tomcat服务器端口号改成8093
04:将jt-manage中的主启动类复制一份到jt-sso中。

@SpringBootApplication
@MapperScan("com.jt.mapper")
public class SpringBootRun {
public static void main(String[] args) {
SpringApplication.run(SpringBootRun.class, args);
}
}

第五步:创建UserService接口,用户服务接口

package com.jt.service;
public interface UserService{
}

第六步:创建接口实现类UserServiceImpl

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
}

第七步:创建UserController类

@RestController
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getMsg")
public String test() {
return "单点登录项目搭建成功";
}
}

然后启动jt-sso项目,打开浏览器,访问:http://localhost:8093/getMsg

之后使用Nginx,代理说明:将sso.jt.com 反向代理到localhost:8093服务器中。

#配置前台管理服务器
server {
listen 80;
server_name sso.jt.com;
location / {
#实现http请求的转发
proxy_pass http://localhost:8093;
}
}

02.入门案例:
用户信息校验
业务需求
说明:当用户跳转到注册页面时,输入注册信息时,应该实现实时的数据校验. 如果后台数据已经存在该值,告
诉用户 用户名已存在.反之 告知可以使用
在这里插入图片描述
页面url分析
在这里插入图片描述
说明:如果需要定位JS,则可以利用搜索工具快速定位.
ctrl+h指令
在这里插入图片描述
展现搜索的结果:
在这里插入图片描述
页面ajax相关说明:

$.ajax({
url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?r=" +
Math.random(),
dataType : "jsonp",
success : function(data) {
checkpin = data.data?"1":"0";
if (!data.data) {
validateSettings.succeed.run(option);
namestate = true;
}else {
validateSettings.error.run(option, "该用户名已占用!");
namestate = false;
}
}
});

01.编辑jt-sso的UserController

/**
* 根据web中传递的参数,实现数据校验
* url:http://sso.jt.com/user/check/{param}/{type}
* 参数:param/type
* 返回值: SysResult对象
* JSONP跨域访问 需要数据的封装
*/
@RequestMapping("/check/{param}/{type}")
public JSONPObject checkUser(@PathVariable String param,
@PathVariable Integer type,
String callback) {
//查询后台数据库,检查数据是否存在.
Boolean flag = userService.checkUser(param,type);
//封装返回值结果
SysResult sysResult = SysResult.success(flag);
return new JSONPObject(callback, sysResult);
}
}

02.编辑jt-sso的UserService实现类

@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMaper;
/**
* 需要根据参数,查询数据库.
* type:1 username、2 phone、3 email
* 返回值: true用户已存在,false用户不存在,
*/@Override
public Boolean checkUser(String param, Integer type) {
//String column = type==1?"username":(type==2?"phone":"email");
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1, "username");
map.put(2, "phone");
map.put(3, "email");
QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.eq(map.get(type), param);
int count = userMaper.selectCount(queryWrapper);
//返回值:true用户已存在,false用户不存在
return count==0?false:true;
}
}

这样就完成了jsonp

文章来源:https://blog.csdn.net/qq_38757863/article/details/130882784
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/89369.html

相关文章

平板用什么远程操控电脑

现在的第三方专业远程软件大部分支持跨平台连接&#xff0c;要使用平板电脑远程控制电脑&#xff0c;还是很简单的。一般来说按照以下步骤操作即可。 确保两台设备都连接到互联网 确保您要控制的电脑和平板电脑都通过 Wi-Fi 或移动数据连接到互联网。 安装远程控制应用程序 …

手持式网络性能测试仪应用于哪些领域及可以完成什么工作?

首先明辰智航国产网络一点通有千兆和万兆以手持式网络性能测试仪&#xff0c;两款仪器可以应用于以下领域&#xff1a; 电信运营商&#xff1a;用于测试网络质量、信号强度、带宽、时延、丢包率等参数&#xff0c;以便优化网络性能和提高用户满意度。 企业网络管理&#xff1a…

如何使用高扩展组件制作APP原型的标签栏?

原型项目中的组件&#xff08;亦称元件、控件&#xff09;&#xff0c;是指通过基础图层拼装而成&#xff0c;可供用户进行交互或用于展示复杂内容的元素。 在原型设计工作中&#xff0c;组件的使用是非常重要的部分&#xff0c;其不仅关乎项目内容的呈现&#xff0c;更会影响…

Git的安装及基础命令

一. 安装Git 首先请前往Git官网去下载最新的安装包:https://git-scm.com/download/win 运行下载好的 .exe 文件&#xff0c;一路next即可。 右击桌面出现以下两个就算是成功。 安装完成后,需要设定用户名和邮箱来区分不同的用户。右击屏幕&#xff0c;选择“Git Bash Here”…

leetcode 31. 下一个排列

题目链接&#xff1a;leetcode 31 1.题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下…

创建多线程常用的三种方式

三种常用多线程实现方式 1. 继承Thread类 继承Thread线程类并且重写run方法无线程任务返回值 2. 实现Runnable接口 实现Runnable接口并且重写run方法无线程任务返回值 3. 实现Callable接口和通过Futrue接口实现类(FutrueTask) 实现Callable接口(泛型数据类型对应call方法的返回…

android 12.0 第三方输入法app设置系统默认输入法

1.概述 在12.0的产品开发中,有功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置输入法的相关功能需求,然后根据输入法包名来设置默认输入法 2.第三方输入法app设置系统默认输入法的核心代码 frameworks/base/packages/SettingsProvider/src/com/and…

openGauss Developer Day 2023 | 邀您参加南大通用分论坛

聚数成峰 共赢未来 面向数据库开发者的年度技术盛会 openGauss Developer Day 2023 将于5月25-26日在北京召开 GBASE南大通用将携创新数据库产品及行业解决方案亮相本届大会。 5月26日 &#xff0c;更设有南大通用 “多模多态分布式数据库助力数字化转型” 专场论坛&am…