乐趣区

关于java:第四阶段day16

1. 实现用户模块的跳转
需要阐明
当用户点击登录注册按钮时 须要跳转到指定的页面中

url 地址 1:http://www/jt.com/user/regist…
2:http://www.jt.com/user/login….

实现代码如下
1. 编辑 UserController
@Controller // 须要进行页面跳转
@RequestMapping(“/user”)
public class UserController {

/**
 * 实现用户模块页面跳转
 * url1: http://www.jt.com/user/login.html     页面:login.jsp
 * url2: http://www.jt.com/user/register.html  页面:register.jsp
 * 要求: 实现通用页面跳转
 * restFul 形式: 1. 动静获取 url 中的参数, 之后实现通用的跳转.
 */
@RequestMapping("/{moduleName}")
public String module(@PathVariable String moduleName){return moduleName;}

}
页面展现成果

创立单点登录我的项目
jt-sso 我的项目创立
1. 增加继承 依赖 插件
<!– 默认的打包形式就是 jar 不写也没有关系 –>

<packaging>jar</packaging>

<parent>
    <artifactId>jt</artifactId>
    <groupId>com.jt</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<!--2. 增加依赖信息 -->
<dependencies>
    <!-- 依赖本质依赖的是 jar 包文件 -->
    <dependency>
        <groupId>com.jt</groupId>
        <artifactId>jt-common</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

<!--3. 增加插件 -->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

</project>
2. 编辑 User 的 POJO 对象
@TableName(“tb_user”)
@Data
@Accessors(chain = true)
public class User extends BasePojo{

@TableId(type = IdType.AUTO)// 设定主键自增
private Long id;            // 用户 ID 号
private String username;    // 用户名
private String password;    // 明码 须要 md5 加密
private String phone;       // 电话号码
private String email;       // 临时应用电话代替邮箱

}
3. 测试 JT-SSO 我的项目
用户通过 sso.jt.com/findUserAll 获取 user 表中的信息 json 返回
编辑 UserController
@RestController
public class UserController {

@Autowired
private UserService userService;

/**
 * 实现测试按钮
 * 1.url 地址 :findUserAll
 * 2. 参数信息: null
 * 3. 返回值后果: List<User>
 *
 */
@RequestMapping("/findUserAll")
public List<User> findUserAll(){return userService.findUserAll();
}

}
4. 编辑 UserService
@Service
public class UserServiceImpl implements UserService{

@Autowired
private UserMapper userMapper;

@Override
public List<User> findUserAll() {return userMapper.selectList(null);
}

}
5. 批改 nginx 配置

** 跨域实现
跨域拜访测试
1. 同域测试
剖析:
1. 浏览器地址 http://manage.jt.com/test.html
2.ajax 申请地址
http://manage.jt.com/test.json
论断
当浏览器地址与 ajax 申请的地址 (协定:// 域名: 端口) 雷同时能够实现失常的业务调用

JSON 跨域申请测试
1. 跨域测试
剖析
1. 浏览器地址 http://www.jt.com/test.html
2.ajax 申请地址 http://manage.jt.com/test.json
论断 如果申请地址 (协定:// 域名: 端口) 不雷同则导致申请调用失败
2. 浏览器 - 同源策略阐明
阐明 浏览器规定 发动 ajax 申请时如果申请协定 / 域名 / 端口号 如果 3 者有一个与以后的浏览器的地址不雷同时 则违反了同源策略的规定 则浏览器不予解析返回值
跨域问题 违反同源策略的规定就是跨域申请

跨域 1 –JSONP

1.JSONP 的跨域原理
1. 利用 JavaScript 中的 src 属性实现跨域申请
2. 自定义回调函数 function callback(xxx);
3. 将返回值后果进行非凡的格局封装 callback(json);
4. 因为利用 src 属性进行调用 所以只能反对 get 申请类型

封装返回值
hello({“id”:”1″,”name”:”tom”})

页面 js 的编辑
<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
<title> 测试 JSON 跨域问题 </title>

<script type="text/javascript">
    /*JS 是解释执行的语言  */
    /* 定义回调函数  */
    function hello(data){alert(data.name);
    }
</script>
<!-- 该 json 始终保留到浏览器中期待调用, 然而没有函数名称无奈调用  -->
<script type="text/javascript" src="http://manage.jt.com/test.json"></script>
<script type="text/javascript" src="http://manage.jt.com/js/jquery-easyui-1.4.1/jquery.min.js"></script>

</head>
<body>

<h1>JS 跨域问题 </h1>

</body>
</html>

JSONP

JSONP(JSON with Padding)是 JSON 的一种 ” 应用模式 ”, 可用于解决支流浏览器的跨域数据拜访的问题, 因为同源策略 一般来说位于 server1.example.com 的网页无奈与不是 server1.example.com 的服务器沟通

JSONP 的优化

<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
<title>JSONP 测试 </title>
<script type=”text/javascript” src=”http://manage.jt.com/js/jquery-easyui-1.4.1/jquery.min.js”></script>
<script type=”text/javascript”>

$(function(){alert("测试拜访开始!!!!!")
    $.ajax({
        url:"http://manage.jt.com/web/testJSONP",
        type:"get",                //jsonp 只能反对 get 申请
        dataType:"jsonp",       //dataType 示意返回值类型
        jsonp: "callback",    // 指定参数名称
        jsonpCallback: "hello",  // 指定回调函数名称
        success:function (data){   //data 通过 jQuery 封装返回就是 json 串
            console.log(data);
        }
    });    
})

</script>
</head>
<body>

<h1>JSON 跨域申请测试 </h1>

</body>
</html>

编辑后端 Controller

@RestController
public class JSONPController {

/**
 * 实现 JSONP 跨域申请
 * url 地址: http://manage.jt.com/web/testJSONP?callback=xxxxxx
 * 参数:    临时没有能够不接
 * 返回值:  callback(JSON);
 */
 @RequestMapping("/web/testJSONP")
 public String testJSONP(String callback){ItemDesc itemDesc = new ItemDesc();
     itemDesc.setItemId(1000L).setItemDesc("JSONP 测试!!!");
     String json = ObjectMapperUtil.toJSON(itemDesc);
     return callback+"("+json+")";
 }

}
控制台输入

JSONPObject 阐明

@RequestMapping(“/web/testJSONP”)

public JSONPObject testJSONP(String callback){ItemDesc itemDesc = new ItemDesc();
    itemDesc.setItemId(1000L).setItemDesc("JSONP 测试!!!");
    return new JSONPObject(callback, itemDesc);
}

cors 的跨域形式

退出移动版