这边用到两个拦截器
描述:
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