springMVC的@responsebody注解:在后台返回数据和动态跳转页面

(1)在controller里面的函数和mapping相关映射注解和@responsebody注解

(2)在做了数据交互之后使用response对象中的sendRedirect重定向或者请求转发动态跳转页面

 

具体的代码如下:

@GetMapping("/logout")
	@ResponseBody
	public void logout( String username,String password,
			HttpServletRequest request,HttpServletResponse response) {
		//操作数据
		request.getSession().removeAttribute("sessionUser");
		//页面跳转
		try {
            //地址栏路径,再次请求登录
			response.sendRedirect(request.getContextPath()+"/users/login.action");
			
		} catch (IOException e) {
			
			e.printStackTrace();
		} 
		
	}

 我是做了一个注销之后删除用户session值的操作之后返回到登录界面,由于我做了一个拦截器:如果用户的session值为空的话,则直接返回到登录界面。(拦截器自行在springmvc配置文件自己配置)

拦截器代码如下:

@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		
		String requestUrl = request.getRequestURI();
		requestUrl=requestUrl.replaceAll(request.getContextPath(), "");
		// 判断是否针对匿名路径需要拦截,如果包含,则表示匿名路径,需要拦截,否则通过拦截器
		if (unCheckUrls.contains(requestUrl)){
			// 包含公开url,直接跳过
//			System.out.println(request.getSession().getAttribute("sessionUser"));
			return true;
		}
		
		if(null == request.getSession().getAttribute("sessionUser")){
//			System.out.println(request.getSession().getAttribute("sessionUser"));
//			System.out.println("捕获!" + requestUrl);
			response.sendRedirect(request.getContextPath()+"/users/login.action"); 
			
			return false;
		}
		
		// 放行
		return true;
	}

 最终通过拦截器跳转到登录界面。

数据也传回前台。

 

你可能感兴趣的:(SpringMVC)