拦截器检测网址中参数+依据参数重定向到制定页面

这边用到两个拦截器

描述:

1.直接访问网址 /hello,检测网址中无id参数,检测结果为未登录,拒绝访问,目标页面定向为 deny,jsp
2、访问网址 /hello?id=user,检测结果为“普通用户”,目标页面定向为user,jsp
3、访问网址 /hello?id=admin, 检测结果为“管理员”,目标页面定向为admin,jsp

我在这里提供两种方法

方法一:

主要代码:创建一个控制类

package com.xl.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
	/**
	 * 页面跳转
	 */
	@RequestMapping(value="/hello")
	public String Hello(HttpServletRequest request, HttpServletResponse response,Model model) {
		String id = request.getParameter("id");		
		if(id.equals("user")) {
			return "redirect:user";//重定向
		}
		if(id.equals("admin")) {
			return "redirect:admin";
		}
		 return "redirect:deny";
		return "deny";
	}
	@RequestMapping(value="/user")
	public String toUser(Model model) {
		return "user";
	}
	@RequestMapping(value="/admin")
	public String toAdmin(Model model) {
		return "admin";
	}
	@RequestMapping(value="/deny")
	public String toDeny(Model model) {
		return "deny";
	}
}

拦截器1主要代码:

	@Override
	public boolean preHandle(HttpServletRequest request, 
		HttpServletResponse response, Object handler) throws Exception {		
		String id = request.getParameter("id");//获取参数
		//检测参数是否为空
		if(id!= null) {
			return true;	
		}
		 System.out.println( "检测结果:未登录,拒绝访问!");//控制台输出
		 response.sendRedirect("deny");//重定向到登陆界面
		return false;//拒绝访问
	}

拦截器2主要代码:

@Override
	public boolean preHandle(HttpServletRequest request, 
		HttpServletResponse response, Object handler) throws Exception {
		String id = request.getParameter("id");
		if(id.equals("user")) {
			System.out.println( "检测结果:普通用户!");//控制台输出
			return true;	//这边返回统一由控制类方法控制	
		}
		if(id.equals("admin")) {
			 System.out.println( "检测结果:管理员!");//控制台输出
			return true;		
		}				
		return false;
	}

方法二:拦截器直接操作

1.控制类方法改为:

package com.xi.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
	/**
	 * 页面跳转
	 */
	@RequestMapping(value="/hello")
	public String Hello() {
		return "deny";
	}
	@RequestMapping(value="/user")
	public String toUser(Model model) {
		return "user";
	}
	@RequestMapping(value="/admin")
	public String toAdmin(Model model) {
		return "admin";
	}
	@RequestMapping(value="/deny")
	public String toDeny(Model model) {
		return "deny";
	}
}

拦截器2改为:

	public boolean preHandle(HttpServletRequest request, 
		HttpServletResponse response, Object handler) throws Exception {
		String id = request.getParameter("id");
		if(id.equals("user")) {
			System.out.println( "检测结果:普通用户!");//控制台输出
			response.sendRedirect("user");
			return true;		
		}
		if(id.equals("admin")) {
			 System.out.println( "检测结果:管理员!");//控制台输出
			 response.sendRedirect("admin");
			return true;		
		}				
		return false;
	}

其它不变
运行结果如:http://localhost:8080/hello
在这里插入图片描述
运行结果如:http://localhost:8080/hello?id=user
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值