springMVC定义拦截器判断用户是否为管理员
📅 2026/7/28 17:16:46
👁️ 阅读次数
📝 编程学习
首先是数据库的设计
CREATE table tb_user( uId int(11) primary key auto_increment, uName varchar(20) not null, uPassword varchar(20) not null, uPhone varchar(30) not null, uAddress VARCHAR(100) not null, isManager int(1) default '0' -- 1:为管理员 0:不为管理员 ); 我们需要一个字段来判断用户是否为管理员,当数据库设计玩成后就是我们的代码了 首先创建一个类,在类中定义一个根据用户名查询数据的方法 /** * 根据用户名查询数据库信息 */ @RequestMapping("selectUser") public String user(Map map,String uName,String uPassword) { User user = userService.findUserByName(uName); map.put("user", user); //全查 List<Student> liStudents = studentService.liStudents(); map.put("liStudents", liStudents); return "user/userList"; } 其次我们要先定义一个自己的拦截器:其中**preHandle方法**是在进入你的方法名之前进行拦截,我们可以在里面处理提交乱码问题 ,它默认的返回值为fales,我们需要把他改为true
postHandle方法是在返回页面之前执行的方法,在这里写我们的主要逻辑
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView view) throws Exception { //创建map对象 Map<String, Object> map = view.getModel(); //接收map中user的值 User user = (User) map.get("user"); //判断IsManager是否为:1 ,如果时跳转到管理员界面 ,不是回到UserController.java中的selectUser方法中 if (user.getIsManager()==1) { //跳转到管理员界面view.setViewName("要跳转的页面") view.setViewName("manager/userList"); } }最后我们需要在Spring.xml中定义一个拦截器:
<!-- 配置springMVC拦截器 --> <mvc:interceptors> <mvc:interceptor> <!--拦截登入请求 --> <mvc:mapping path="/user/selectUser"/> <bean class="com.hp.interceptor.LoginInter(你要进那个拦截器 包名+类名)"></bean> </mvc:interceptor> </mvc:interceptors>其中<mvc:mapping path=“写的是你要拦截的方法名”/>
这样就成功了!!!
2019/8/26 19:32:36
编程学习
技术分享
实战经验