js发请求使SpringMVC跳转页面

向服务器发请求跳转页面并不难,有很多种方法可以做到,可大部分都会在浏览器地址栏中暴露页面真实url,而且无法做到如权限校验之类的功能,SpringMVC通过扫描jsp文件包的方式通过返回一个字符串来返回一个页面。

那么,如何让springMVC返回一个页面呢?

首先我尝试使用ajax请求,可事实上,Ajax是页面局部刷新技术,它是为不跳转页面而生,但我还是试了一下

js

$.ajax({
			url:"${APP_PATH}/emps",
			type:"GET",
			async:true,
			dataType:"html",
			data:"",
			success:function(result){
				alert(result);
				$("#body").html(result);//不会改变body以外的东西
			}
			
		});

controller

@RequestMapping(value = "/emps",method = RequestMethod.GET)
	//@ResponseBody
	public String getEmps() {
		return "emp";	
	}

这样确实可以做到页面跳转,但浏览器地址栏无法改变,不符合人们对传统网站的看法,除非一些不愿意让人们直接在浏览器地址栏发请求跳转的页面,这样可以既掩饰了请求有掩饰了页面的url地址,十分安全

第二种就是通过location对象直接发请求,有些人认为应该让SpringMvc返回一个url再跳转,但这样的话放在web-info文件夹下的jsp是无法访问到的,如果放在该文件夹以外由脱离了权限控制和安全的初衷,

我是这样写的

$("#btnEmpManager").click(function(){
		
		window.location.href = "emps";
		});

@RequestMapping(value = "/emps",method = RequestMethod.GET)
	//@ResponseBody
	public String getEmps() {
		return "emp";	
	}

不需要使用Ajax,因为它是为不跳转页面而生的,跳转页面还是应该直接使用location对象

另外,history.pushState(state,title,url)方法可以改变地址栏而不刷新页面。

猜你喜欢

转载自blog.csdn.net/qq_39668086/article/details/82383990