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

商城网站建设解决方案自适应网站建设选哪家

商城网站建设解决方案,自适应网站建设选哪家,如何查看网站做没做百度推广,网页网站建设的ppt模板下载文章目录 一、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/907441/

相关文章:

  • 北京南昌网站建设网站查看空间商
  • 网站建设人员职责分布乐清市网站建设设计
  • 网站建设etw网站建设陕西
  • 网站文章页内链结构不好可以改吗wordpress英文模板下载
  • 北京天通苑 做网站哈尔滨快速网站排名
  • 网站开发负责人是什么职位试剂网站建设
  • 什么是展示型网站wordpress链接视频
  • 佳木斯城乡建设局网站过年做哪个网站能致富
  • 石家庄快速网站搭建设计公司属于什么企业
  • 中小学智慧校园建设平台网站sem竞价推广
  • 想创建一个网站官方网站建设推广
  • 江门网站优化民间it网站建设
  • 科研实验室网站建设wordpress加载模板
  • 用r做简易的网站软件园二期做网站的公司
  • 菏泽网站建设价格长春高档网站建设
  • PHP网站开发与管理设计心得网站流量图怎么做
  • 苏州做网站企业wordpress点击文字弹出层
  • 做网站必要性中山古镇做网站
  • 增城住房和城乡建设局网站2021网站你懂我意思正能量
  • seo优秀网站深圳企业医疗网站建设
  • 单页 网站 模板重庆微信网站制作专家
  • 石家庄网站定制制作企业所得税优惠政策最新2022文件
  • 免费推广网站途径有哪些郑州企业型网站建设
  • wap网站建设设计wordpress首页名称
  • wordpress网站换空间南宁网站设计可以找我
  • 期货贵金属网站建设招远网站建设哪家专业
  • 上海网站排名个人网站可以做百度推广
  • 网站主题及样式优化个人网站 可以做论坛吗
  • 中企动力 网站推广一级域名免费申请
  • 山东专业的网站建设博罗做网站哪家强