当前位置: 首页 > news >正文

深圳疫情最新消息中高风险地区seo网络推广公司排名

深圳疫情最新消息中高风险地区,seo网络推广公司排名,知识库wordpress,你会回来感谢我的正能量视频SpringMVC拦截器 介绍 拦截器(interceptor)的作用 SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器 进行预处理和后处理 将拦截器按一定的顺序连接成一条链,这条链称为拦截器链(Interception Ch…

SpringMVC拦截器

介绍

拦截器(interceptor)的作用

SpringMVC的拦截器类似于Servlet开发中的过滤器Filter,用于对处理器 进行预处理后处理

将拦截器按一定的顺序连接成一条链,这条链称为拦截器链(Interception Chain)。在访问被拦截的方法或字段时,拦截器链中的拦截器链就会按其之间定义的顺序被调用。拦截器也是AOP思想的具体实现

拦截器和过滤器之间的区别

区别过滤器(Filter)拦截器(Interceptor)
使用范围是servlet规范中的一部分,任何java web工程都可以使用是SpringMVC框架自己的,只有使用来了SpringMVC框架的工程才可以使用
拦截范围在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截在<mvc:mapping path=“”/>中配置了/**之后,也可以对所有的资源进行拦截,但是可以通过<mvc:exclude-mapping path=“” />标签排除不需要拦截资源

快速入门

自定义拦截器只有三步:

  • 创建拦截器类实现HandlerInterception接口
  • 配置拦截器
  • 测试拦截器的拦截效果

代码实现

1、创建拦截器类实现HandlerInterceptor接口

public class MyhandlerInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle running....");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandler running...");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion running...");}
}

2、配置拦截器

    <mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean class="interceptor.MyhandlerInterceptor"/></mvc:interceptor></mvc:interceptors>

3、测试拦截器的拦截效果(编写目标方法)

@Controller
public class TestController {@RequestMapping("/test")@ResponseBodypublic String save() {System.out.println("目标方法执行...");return "index";}
}

http://localhost:8080/test

img

多拦截器操作

同上,在编写一个MyHandlerInterceptor1操作,测试执行顺序

img

拦截器方法说明

方法名说明
preHandler()方法将在请求处理之前进行调用,该方法的返回值是布尔值Boolean类型的,当它返回为false时,表示请求结束,后续的Interceptor和Controller都不会再执行;当返回值为true时就会继续调用下一个Interceptor的preHandle方法
postHandler()该方法是在当前请求进行处理之后被调用,前提是preHandler方法的返回值为true时才能被调用,且它会在DispatcherServlet进行视图返回渲染之前被调用,所以可以在这个方法中对Controller处理之后的ModelAndView对象进行操作
afterCompletion()该方法将在整个请求结束之后,也就是在DispatcherServlet渲染了对应的视图之后执行,前提是preHandler方法的返回值为true时才能调用

案例

用户登录权限控制

需求:用户没有登录得情况下,不能对后台菜单进行访问操作,点击菜单跳转到登录页面,只有用户登录成功之后,才能进行后台功能得操作

public class PrivilegeInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 逻辑:判断 用户是否登录 本质:判断session中有没有userHttpSession session = request.getSession();User user = (User) session.getAttribute("user");if (user == null) {// 没有登录response.sendRedirect(request.getContextPath() + "/login.jsp");return false;}// 放行 访问目标资源return true;}
}

拦截器配置

    <mvc:interceptors><mvc:interceptor><!--配置那些资源需要拦截--><mvc:mapping path="/**"/><!--配置那些资源需要排除--><mvc:exclude-mapping path="/user/login"/><bean class="com.dc.interceptor.PrivilegeInterceptor"/></mvc:interceptor></mvc:interceptors>

UserController

@RequestMapping("/user")
@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("/login")public String login(String username, String password, HttpSession session) {User login = userService.login(username, password);System.out.println(login);if (login != null) {session.setAttribute("user", login);return "redirect:/index.jsp";}return "redirect:/login.jsp";}
}

Service

public interface UserService {User login(String username, String password);
}public class UserServiceImpl implements UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic User login(String username, String password) {try {return userDao.login(username, password);} catch (EmptyResultDataAccessException e) {return null;}}
}

Dao层

public interface UserDao {User login(String username, String password);
}public class UserDaoImpl implements UserDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate){this.jdbcTemplate = jdbcTemplate;}@Overridepublic User login(String username, String password) throws EmptyResultDataAccessException {User user = jdbcTemplate.queryForObject("select * from sys_user where username = ? and password = ?", new BeanPropertyRowMapper<User>(User.class), username, password);return user;}
}

img

http://www.hkea.cn/news/438515/

相关文章:

  • 网站建设课程设计摘要生活中的网络营销有哪些
  • 简单网站建设优化推广100个电商平台
  • 网站建设的仿站seo顾问收费
  • 珠宝行业做网站的好处株洲seo排名
  • java web开发网站开发cpa推广接单平台
  • 广西南宁网络营销网站网站权重优化
  • 黄山网站设计公司营销网站建设多少钱
  • 网站建设招标评分表湖南关键词优化推荐
  • 淘宝上成都网站建设如何制作视频网站
  • 最吃香的男生十大手艺5g网络优化
  • 河源哪里做网站网络项目怎么推广
  • 网站闭关保护怎么做广州百度seo 网站推广
  • 可以在线做动图的网站近期重大新闻事件
  • 伊犁州建设局网站怎么做微信小程序
  • 做网站需要买主机那新媒体营销方式有几种
  • 网络推广seo公司seo排名的方法
  • 南山做网站多少钱百度资讯
  • 西安哪里有做网站的小学生收集的新闻10条
  • 做游戏网站有几个要素seo网站关键词优化报价
  • 蓬业东莞网站建设技术支持东莞做网站公司首选
  • 网站版式设计获客渠道有哪些
  • 今日军事新闻简短扬州seo优化
  • 国外好看的教育类网站模板下载东莞做网站最好的是哪家
  • 微擎与wordpress快速优化seo软件推广方法
  • 英文网站设计哪家好免费网站搭建
  • 网站建设公司 销量深圳谷歌seo公司
  • 新蔡哪有做网站建设的全球疫情今天最新消息
  • 怎么做平台网站百度seo报价方法
  • 帮人做网站 怎么收费怎么用网络推广
  • 网站排名优化建设百度广告投放技巧