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

永州网站建设网站中国东方营销网站

永州网站建设网站,中国东方营销网站,广州地铁最新运营调整,wordpress多站点换域名文章目录 一、JSR3031.1 JSR303是什么1.2 JSR 303的好处包括1.3 常用注解1.4 实例1.4.1 导入JSR303依赖1.4.2 规则配置1.4.3 编写校验方法1.4.4 编写前端 二、拦截器2.1 拦截器是什么2.2 拦截器与过滤器的区别2.3.应用场景2.4 快速入门2.5.拦截器链2.6 登录拦截权限案例2.6.1 L… 文章目录 一、JSR3031.1 JSR303是什么1.2 JSR 303的好处包括1.3 常用注解1.4 实例1.4.1 导入JSR303依赖1.4.2 规则配置1.4.3 编写校验方法1.4.4 编写前端 二、拦截器2.1 拦截器是什么2.2 拦截器与过滤器的区别2.3.应用场景2.4 快速入门2.5.拦截器链2.6 登录拦截权限案例2.6.1 LoginController.java2.6.2 配置拦截器2.6.3 创建拦截器2.6.4 测试 一、JSR303 1.1 JSR303是什么 JSR 303是Java规范请求Java Specification Request的编号它定义了Java Bean验证的标准规范。JSR 303的全称是Bean Validation它提供了一种在Java应用程序中进行数据验证的机制。 Bean Validation是一种基于注解的验证框架它允许开发人员在Java Bean的属性上添加验证规则以确保数据的合法性和完整性。通过使用Bean Validation开发人员可以在数据输入阶段就捕获错误避免后续可能出现的潜在问题。 1.2 JSR 303的好处包括 简化验证逻辑通过使用注解开发人员可以在Java Bean的属性上直接添加验证规则而不需要编写繁琐的验证代码。统一验证规范JSR303定义了一组常用的验证注解使得不同的开发人员在验证过程中可以使用相同的规范提高了代码的可读性和可维护性。提高代码质量通过在Java Bean中添加验证规则可以在数据输入阶段就捕获错误避免了后续可能出现的潜在问题。可扩展性JSR303提供了自定义注解的能力开发人员可以根据自己的需求定义新的验证注解。 1.3 常用注解 NotNull用于验证属性值不能为null。Size用于验证字符串、集合或数组的大小是否在指定范围内。Min用于验证数字属性的最小值。Max用于验证数字属性的最大值。Pattern用于验证字符串属性是否符合指定的正则表达式。Email用于验证字符串属性是否符合电子邮件格式。NotBlank用于验证字符串属性是否非空且长度大于0。NotEmpty用于验证字符串、集合或数组属性是否非空。Range用于验证数字属性是否在指定范围内。Valid用于嵌套验证验证关联对象。 1.4 实例 1.4.1 导入JSR303依赖 !-- JSR303 -- hibernate.validator.version6.0.7.Final/hibernate.validator.version!-- JSR303 -- dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-validator/artifactIdversion${hibernate.validator.version}/version /dependency1.4.2 规则配置 package com.xqx.model;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.validator.constraints.Length;import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull;Data//相当于set get toString方法 AllArgsConstructor //有参构造器 NoArgsConstructor //无参构造器 public class Book{NotBlank(message “书本信息不能为空!)private String bookName;NotNull(message “书本价格不能为空!)private Float bookPrice:private String bookType;}1.4.3 编写校验方法 /*** 书本新增* 请求路径 SSM/book/editBook* param book* return*/RequestMapping(/addBook)public String addBook(Validated Book book, BindingResult bindingResult){System.out.println(进入新增方法);//判断是否验证成功if(bindingResult.hasErrors()){System.out.println(验证失败);//验证失败return book/addBook;}else {//验证成功bookService.insert(book);return redirect:queryBookPage;}}/*** ModelAttribute 所标记的方法为非请求处理方法在所有请求方法之前被调用* odelAttribute 在所有的RequestMapping的方法之前被调用** 作用数据预加载* 特点无返回值*/ModelAttributepublic void init(Model model){System.out.println(非请求处理方法);//必须操作model.addAttribute(book,new Book());}1.4.4 编写前端 % page contentTypetext/html;charsetUTF-8 languagejava % % taglib prefixfmt urihttp://www.springframework.org/tags/form % html head%include file/common/head.jsp%titleTitle/title /head style.cl{color: red;}/style body h1书本新增/h1fmt:form modelAttributebook action${ctx}/book/addBook methodpostlabel书本名称/labelinput typetext namebookNamefmt:errors cssClasscl path*/br/label书本价格/labelinput typetext namebookPrice%--fmt:errors cssClasscl pathbookPrice/--%br/label书本类型/labelselect namebookTypeoption value神话神话/optionoption value教育教育/optionoption value文学文学/optionoption value玄幻玄幻/option/selectbr/input typesubmit value添加/fmt:form/body /html二、拦截器 2.1 拦截器是什么 SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter用于对处理器进行预处理和后处理。依赖于web框架在实现上基于Java的反射机制属于面向切面编程AOP的一种运用。由于拦截器是基于web框架的调用因此可以使用Spring的依赖注入DI进行一些业务操作同时一个拦截器实例在一个controller生命周期之内可以多次调用。 2.2 拦截器与过滤器的区别 拦截器Interceptor通常是指一种拦截和处理请求的组件或模块。它可以在请求到达目标之前或之后进行拦截并对请求进行修改、记录或处理。拦截器通常用于实现横切关注点cross-cutting concerns如日志记录、安全认证、性能监控等。拦截器可以在应用程序的不同层级中使用例如在网络层、业务逻辑层或数据访问层。 过滤器Filter则是一种用于过滤和处理数据的组件或模块。它可以在数据流经过时对数据进行过滤、转换或处理。过滤器通常用于对数据进行预处理或后处理以满足特定的需求或要求。常见的应用包括数据清洗、数据转换、数据压缩等。过滤器可以在不同的数据处理环节中使用例如在输入输出流、数据库查询、图像处理等。 2.3.应用场景 日志记录记录请求信息的日志以便进行信息监控、信息统计、计算PVPage View等。权限检查如登录检测进入处理器检测是否登录如果没有直接返回到登录页面性能监控有时候系统在某段时间莫名其妙的慢可以通过拦截器在进入处理器之前记录开始时间在处理完后记录结束时间从而得到该请求的处理时间如果有反向代理如apache可以自动记录通用行为读取cookie得到用户信息并将用户对象放入请求从而方便后续流程使用还有如提取Locale、Theme信息等只要是多个Controller中的处理方法都需要的我们就可以使用拦截器实现。 2.4 快速入门 创建拦截器 package com.xqx.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/* 1. 定义拦截器类实现HandlerInterceptor接口 2. 注意当前类必须受Spring容器控制*/ public class OneInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(【OneInterceptor】preHandle...);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(【OneInterceptor】postHandle...);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(【OneInterceptor】afterCompletion...);} }配置拦截器 在spring-mvc.xml中配置 !--配置拦截器--mvc:interceptorsbean classcom.xqx.interceptor.OneInterceptor/bean/mvc:interceptors2.5.拦截器链 如果多个拦截器能够对相同的请求进行拦截则多个拦截器会形成一个拦截器链主要理解拦截器链中各个拦截器的执行顺序。拦截器链中多个拦截器的执行顺序根拦截器的配置顺序有关先配置的先执行。 在spring-mvc.xml中配置多个拦截器 !--2) 多拦截器拦截器链--mvc:interceptorsmvc:interceptor!--拦截所有--mvc:mapping path/**/bean classcom.xqx.interceptor.OneInterceptor//mvc:interceptormvc:interceptor!--拦截users下的controller--mvc:mapping path/book/**/bean classcom.xqx.interceptor.TwoInterceptor//mvc:interceptor/mvc:interceptors使用了拦截器链的效果 2.6 登录拦截权限案例 2.6.1 LoginController.java package com.xqx.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;Controller public class LoginController {/*** 跳转到登录页面* return*/RequestMapping(tologin)public String toLogin(){return login;}/*** 登录方法* param username 账号* param password 密码* return*/RequestMapping(/userLogin)public String userLogin(String username, String password, HttpSession session, Model model){if(admin.equals(username)|| password.equals(123)){session.setAttribute(username,username);//这里的/是跳转的RequestMapping配置的值return redirect:/;}model.addAttribute(msg,账号或者密码错误);return login;}/*** 安全退出* param session* return*/RequestMapping(/userLogout)public String userLogout(HttpSession session){//清空sessionsession.invalidate();return redirect:tologin;}}2.6.2 配置拦截器 mvc:interceptorsbean classcom.xqx.interceptor.LoginInterceptor/bean /mvc:interceptors2.6.3 创建拦截器 package com.xqx.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession;public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//获取请求路径String url request.getRequestURI();System.out.println(url);//判断是否是跳转登录页面的请求 放行if(url.indexOf(/tologin)0)return true;//判断是否是用户登录 放行if(url.indexOf(/userLogin)0)return true;//获取sessionHttpSession session request.getSession();//获取session中的用户对象String username (String) session.getAttribute(username);//判断session中的用户对象是否存在存在放行不存在跳转登录页面if(username!null)return true;request.setAttribute(msg,您还没有登录请登录);request.getRequestDispatcher(/WEB-INF/jsp/login.jsp).forward(request,response);return false;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {} }2.6.4 测试 账号密码错误的情况下 在未登录的情况下访问首页
http://www.w-s-a.com/news/534319/

相关文章:

  • 创意品牌网站云服务
  • 个人备案网站可以做商城展示如何制作网页二维码
  • 网站建设php教程视频百度seo 站长工具
  • 外包小程序两个相同的网站对做优化有帮助
  • 网站备案主体修改wordpress 导航图片
  • 怎么建设网站数据库用vs代码做网站
  • 运营企业网站怎么赚钱动漫制作专业概念
  • 宜春网站建设推广网络推广工作好干吗
  • 网站程序0day平顶山市做网站
  • 企业网站名称怎么写哔哩哔哩网页版官网在线观看
  • 直播网站建设书籍阿里巴巴网站建设销售
  • 肇庆企业自助建站系统郴州网站建设解决方案
  • 长沙专业做网站排名游戏开发大亨内购破解版
  • 网站推广适合女生做吗网站如何开启gzip压缩
  • 做外单阿里的网站建站平台那个好
  • 全国性质的网站开发公司关于网站开发的请示
  • 齐齐哈尔住房和城乡建设局网站生物科技公司网站模板
  • 中国建设协会官方网站前端培训的机构
  • 网站建设套餐是什么北京孤儿院做义工网站
  • 网站如何做微信支付链接做暧小视频xo免费网站
  • SEO案例网站建设重庆建站模板平台
  • 上海seo网站推广公司wordpress 小米商城主题
  • 搭建服务器做网站什么网站可以请人做软件
  • 上海建筑建材业网站迁移公家网站模板
  • 仿制别人的网站违法吗网站防火墙怎么做
  • 杨浦网站建设 网站外包公司如何进行网络推广
  • wordpress+仿站步骤超详细wordpress常用函数
  • 浙江手机版建站系统哪个好怎样黑进别人的网站
  • 企业网站搜索引擎推广方法装修网络公司
  • 网站运营优化建议wordpress 添加媒体