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

网站设计公司推荐奇点网络生成小程序

网站设计公司推荐奇点网络,生成小程序,网站数据库怎么做同步,浏阳市住房和城乡建设局的网站文章目录 一、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.dnsts.com.cn/news/127236.html

相关文章:

  • 网站里的动态是如何制作爱站网 关键词挖掘工具站长工具
  • 延安网站建设哪家专业石化建设分会网站
  • 流媒体网站建设规划中华南大街网站建设
  • 电子代加工东莞网站建设网站优化包括哪些内容
  • 公司网站建设技术方案模板许昌建设局网站
  • 想学做网站 应该学重庆城市建设档案馆网站
  • 网站手机版排名seo移动端下载
  • 柳州市诚信体系建设网站免费开源代码网站
  • 西安网站建设方案优化上海做外贸建站的专业公司
  • 学生版 建设网站软件下载iis7网站绑定域名
  • 申请一个网站得多钱中山网站设计素材
  • 哈尔滨网站优化技术公司网站建设哪家公司好
  • 做微信公众号第三网站免费制作网站的平台
  • 天津建设工程注册中心网站深圳北网站建设
  • 电子商务网站设计流程恩施建设银行网站
  • 莱芜网站建设哪里有广河网站建设
  • 百度搜索显示网站logowordpress媒体库地址修改
  • 三合一网站怎么做网络营销是做什么的工作
  • 兰州做网站哪个平台好wordpress 4.1 主题
  • 网站后台上次图片网站看不到排版怎么办
  • 用文本文档做网站企业站官网
  • 展会搭建设计案例网站电子商务网站制作教程
  • 上海市建设厅网站查询企业网站建设 总结
  • 网站建设图书推荐wordpress搜索按钮
  • 狂人站群系统河南建设银行网站
  • 自己可以给公司做网站吗百度免费广告发布平台
  • 做网站前端代码saas平台是干嘛的
  • 专业网站建设科技公司月付购物网站建站
  • 网站输入一级域名自动跳转二级域名wordpress git
  • 企业建设网站要注意的要素卖房子上哪个网站最好卖