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

加盟网站制作网站开发网页设计

加盟网站制作,网站开发网页设计,网络推广的方式有哪些?,苏州网站设计都选苏州聚尚网络目录 一. JSR303 1.1 JSR303是什么 1.2 为什么要使用JSR303 1.3 JSR303常用注解 1.4 JSR303快速入门 1. 导入相关pom依赖 2. 配置校验规则 3. 入门示例 二. SpringMVC的拦截器 2.1 什么是拦截器 2.2 拦截器与过滤器的区别 2.3 拦截器工作原理 2.4 入门示例 1. 创建…目录 一. JSR303 1.1 JSR303是什么 1.2 为什么要使用JSR303 1.3 JSR303常用注解 1.4 JSR303快速入门 1. 导入相关pom依赖 2. 配置校验规则 3. 入门示例 二. SpringMVC的拦截器 2.1 什么是拦截器 2.2 拦截器与过滤器的区别 2.3 拦截器工作原理 2.4 入门示例 1. 创建拦截器 2. 配置拦截器 2.5 拦截器链 2.6  用户登录权限控制 一. JSR303 1.1 JSR303是什么 JSR是Java Specification Requests的缩写意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。 JSR-303 是JAVA EE 6 中的一项子规范叫做Bean ValidationHibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint约束 的实现除此之外还有一些附加的 constraint。 验证数据是一项常见任务它发生在从表示层到持久层的所有应用程序层中。通常在每一层都实现相同的验证逻辑这既耗时又容易出错。为了避免重复这些验证开发人员经常将验证逻辑直接捆绑到域模型中将域类与验证代码混在一起而验证代码实际上是关于类本身的元数据。 1.2 为什么要使用JSR303 前端不是已经校验过数据了吗为什么我们还要做校验呢直接用不就好了草率了假如说前端代码校验没写好又或者是对于会一点编程的人来说直接绕过前端发请求通过类似Postman这样的测试工具进行非常数据请求把一些错误的参数传过来后端代码不就危险了嘛。 所以我们一般都是前端一套校验后端在一套校验这样安全性就能够大大得到提升了。 1.3 JSR303常用注解 注解说明Null用于验证对象为nullNotNull用于对象不能为null无法查检长度为0的字符串NotBlank只用于String类型上不能为null且trim()之后的size0NotEmpty用于集合类、String类不能为null,且size0。但是带有空格的字符串校验不出来Size用于对象Array,Collection,Map,String长度是否在给定的范围之内Length用于String对象的大小必须在指定的范围内Pattern用于String对象是否符合正则表达式的规则Email用于String对象是否符合邮箱格式Min用于Number和String对象是否大等于指定的值Max用于Number和String对象是否小等于指定的值AssertTrue用于Boolean对象是否为trueAssertFalse用于Boolean对象是否为false Validated与Valid区别 Validated Spring提供的 支持分组校验 可以用在类型、方法和方法参数上。但是不能用在成员属性字段上 由于无法加在成员属性字段上所以无法单独完成级联校验需要配合Valid Valid JDK提供的标准JSR-303规范 不支持分组校验 可以用在方法、构造函数、方法参数和成员属性字段上 可以加在成员属性字段上能够独自完成级联校验 1.4 JSR303快速入门 1. 导入相关pom依赖 !-- JSR303 -- hibernate.validator.version6.0.7.Final/hibernate.validator.version!-- JSR303 -- dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-validator/artifactIdversion${hibernate.validator.version}/version /dependency 2. 配置校验规则 package com.xissl.model;import lombok.ToString;import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull;ToString public class clazz {NotNull(message 班级编号不能为空) // Size(max 100,min 10,message 大小必须在10至100之间)protected Integer cid;NotBlank(message 班级名不能为空)protected String cname;NotBlank(message 班级教员老师不能为空)protected String cteacher;private String pic暂无图片;public clazz(Integer cid, String cname, String cteacher, String pic) {this.cid cid;this.cname cname;this.cteacher cteacher;this.pic pic;}public clazz() {super();}public Integer getCid() {return cid;}public void setCid(Integer cid) {this.cid cid;}public String getCname() {return cname;}public void setCname(String cname) {this.cname cname;}public String getCteacher() {return cteacher;}public void setCteacher(String cteacher) {this.cteacher cteacher;}public String getPic() {return pic;}public void setPic(String pic) {this.pic pic;} } 3. 入门示例 在请求处理方法中使用Validated或Valid注解要验证的对象并根据BindingResult判断校验是否通过 controller层 // 给数据添加服务端校验RequestMapping(/valiAdd)public String valiAdd(Validated clazz clazz, BindingResult result, HttpServletRequest req){ // 如果服务端验证不通过有错误if(result.hasErrors()){ // 服务端验证了实体类的多个属性多个属性都没有验证通过ListFieldError fieldErrors result.getFieldErrors();MapString,Object map new HashMap();for (FieldError fieldError : fieldErrors) { // 将多个属性的验证失败信息输送到控制台System.out.println(fieldError.getField() : fieldError.getDefaultMessage());map.put(fieldError.getField(),fieldError.getDefaultMessage());}req.setAttribute(errorMap,map);}else {this.clazzBiz.insertSelective(clazz);return redirect:clzlist;}return clz/clzedit;} 前端代码 % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle编辑界面/title /head body form action${pageContext.request.contextPath }/${empty c ? clazz/valiAdd : clazz/edit} methodpost班级编号:input typetext namecid value${s.cid }span stylecolor: red${errorMap.cid}/spanbr班级名称:input typetext namecname value${s.cname }span stylecolor: red${errorMap.cname}/spanbr带班教员:input typetext namecteacher value${s.cteacher }span stylecolor: red${errorMap.cteacher}/spanbr班级logo:input typetext namepic value${s.pic }brinput typesubmit /form /body /html 运行效果 二. SpringMVC的拦截器 2.1 什么是拦截器 SpringMVC的处理器拦截器Interceptor类似于Servlet开发中的过滤器Filter用于对处理器进行预处理和后处理用户可以自己定义一些拦截器来实现特定的功能。处理器拦截器依赖于web框架在实现上基于Java的反射机制属于面向切面编程AOP的一种运用。由于拦截器是基于web框架的调用因此可以使用Spring的依赖注入DI进行一些业务操作同时一个拦截器实例在一个 controller生命周期之内可以多次调用。 2.2 拦截器与过滤器的区别 什么是过滤器Filter 依赖于servlet容器。在实现上基于函数回调可以对几乎所有请求进行过滤但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作比如在过滤器中修改字符编码在过滤器中修改HttpServletRequest的一些参数包括过滤低俗文字、危险字符等。 拦截器与过滤器的区别 过滤器(filter) 1.filter属于Servlet技术只要是web工程都可以使用 2.filter主要由于对所有请求过滤 3.filter的执行时机早于Interceptor 拦截器(interceptor) 1.interceptor属于SpringMVC技术必须要有SpringMVC环境才可以使用 2.interceptor通常由于对处理器Controller进行拦截 3.interceptor只能拦截dispatcherServlet处理的请求 应用场景日志处理、登录权限验证等 2.3 拦截器工作原理 preHandle用于对拦截到的请求进行预处理方法接收布尔(true,false)类型的返回值返回true放行false不放行。 执行时机在处理器方法执行前执行 方法参数 参数说明request请求对象response响应对象handler拦截到的方法处理 postHandle用于对拦截到的请求进行后处理可以在方法中对模型数据和视图进行修改 执行时机在处理器的方法执行后视图渲染之前 方法参数 参数说明request请求对象response响应对象handler拦截到的处理器方法ModelAndView处理器方法返回的模型和视图对象可以在方法中修改模型和视图 afterCompletion用于在整个流程完成之后进行最后的处理如果请求流程中有异常可以在方法中获取对象 执行时机视图渲染完成后(整个流程结束之后) 方法参数 参数说明request请求参数response响应对象handler拦截到的处理器方法ex异常对象 2.4 入门示例 在 Spring MVC 框架中定义一个拦截器需要对拦截器进行定义和配置主要有以下 2 种方式。 通过实现 HandlerInterceptor 接口或继承 HandlerInterceptor 接口的实现类例如 HandlerInterceptorAdapter来定义通过实现 WebRequestInterceptor 接口或继承 WebRequestInterceptor 接口的实现类来定义。 这里以实现 HandlerInterceptor 接口的定义方式为例 1. 创建拦截器 package com.xissl.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;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...);} } 这里的preHandle()方法返回值为true时则表示未拦截 返回值为false时则表示拦截  2. 配置拦截器 !-- 配置拦截器--mvc:interceptorsbean classcom.xissl.interceptor.OneInterceptor/bean/mvc:interceptors 未拦截 已拦截 2.5 拦截器链 当配置多个拦截器时形成拦截器链拦截器链的运行顺序参照拦截器添加顺序为准当拦截器中出现对原始处理器的拦截后面的拦截器均终止运行当拦截器运行中断仅运行配置在前面的拦截器的afterCompletion操作 创建拦截器 package com.xissl.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class TwoInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(【TwoInterceptor】preHandle...);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(【TwoInterceptor】postHandle...);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(【TwoInterceptor】afterCompletion...);} } 配置拦截器 !-- 多拦截器拦截器链--mvc:interceptorsmvc:interceptormvc:mapping path/**/bean classcom.xissl.interceptor.OneInterceptor//mvc:interceptormvc:interceptormvc:mapping path/clazz/**/bean classcom.xissl.interceptor.TwoInterceptor//mvc:interceptor/mvc:interceptors mvc:interceptors该元素用于配置一组拦截器。 bean该元素是 mvc:interceptors 的子元素用于定义全局拦截器即拦截所有的请求。 mvc:interceptor该元素用于定义指定路径的拦截器。 mvc:mapping该元素是 mvc:interceptor 的子元素用于配置拦截器作用的路径该路径在其属性 path 中定义。path 的属性值为/**时表示拦截所有路径值为/clazz/** 时表示拦截所有以/clazz/**结尾的路径。如果在请求路径中包含不需要拦截的内容可以通过 mvc:exclude-mapping 子元素进行配置。 需要注意的是mvc:interceptor 元素的子元素必须按照 mvc:mapping.../、mvc:exclude-mapping.../、bean.../ 的顺序配置。 2.6  用户登录权限控制 登录拦截器 package com.xissl.interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(【implements】preHandle...);StringBuffer url request.getRequestURL();if (url.indexOf(/login) 0 || url.indexOf(/logout) 0){// 如果是 登录、退出 中的一种return true;} // 代表不是登录也不是退出 // 除了登录、退出其他操作都需要判断是否 session 登录成功过String uname (String) request.getSession().getAttribute(uname);if (uname null || .equals(uname)){response.sendRedirect(/page/login);return false;}return true;}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 {} } 配置拦截器 mvc:interceptorsbean classcom.xissl.interceptor.LoginInterceptor/bean/mvc:interceptors controller层 package com.xissl.web;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession;/*** author xissl* create 2023-09-11 19:19*/ Controller public class LoginController {RequestMapping(/login)public String login(HttpServletRequest req){String uname req.getParameter(uname);HttpSession session req.getSession();if (zs.equals(uname)){session.setAttribute(uname,uname);}return redirect:/clz/clzlist;}RequestMapping(/logout)public String logout(HttpServletRequest req){req.getSession().invalidate();return redirect:/clz/clzlist;} }前端代码 % page contentTypetext/html;charsetUTF-8 languagejava % html headtitle登录/title /head body form action/login methodpost用户名input nameunameinput typesubmit/form /body /html 这里由于做了限制只要输入的用户名不是zs便不会被拦截器放行
文章转载自:
http://www.morning.hmpxn.cn.gov.cn.hmpxn.cn
http://www.morning.rgxll.cn.gov.cn.rgxll.cn
http://www.morning.gczqt.cn.gov.cn.gczqt.cn
http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn
http://www.morning.nylbb.cn.gov.cn.nylbb.cn
http://www.morning.ybshj.cn.gov.cn.ybshj.cn
http://www.morning.rszyf.cn.gov.cn.rszyf.cn
http://www.morning.pmrlt.cn.gov.cn.pmrlt.cn
http://www.morning.bmssj.cn.gov.cn.bmssj.cn
http://www.morning.jlxld.cn.gov.cn.jlxld.cn
http://www.morning.hnrdtz.com.gov.cn.hnrdtz.com
http://www.morning.ktpzb.cn.gov.cn.ktpzb.cn
http://www.morning.prls.cn.gov.cn.prls.cn
http://www.morning.rbktw.cn.gov.cn.rbktw.cn
http://www.morning.tpwrm.cn.gov.cn.tpwrm.cn
http://www.morning.mlpch.cn.gov.cn.mlpch.cn
http://www.morning.pndw.cn.gov.cn.pndw.cn
http://www.morning.srgbr.cn.gov.cn.srgbr.cn
http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn
http://www.morning.hrpbq.cn.gov.cn.hrpbq.cn
http://www.morning.wqpsf.cn.gov.cn.wqpsf.cn
http://www.morning.gwdkg.cn.gov.cn.gwdkg.cn
http://www.morning.dkqr.cn.gov.cn.dkqr.cn
http://www.morning.ynbyk.cn.gov.cn.ynbyk.cn
http://www.morning.skcmt.cn.gov.cn.skcmt.cn
http://www.morning.cmzcp.cn.gov.cn.cmzcp.cn
http://www.morning.drspc.cn.gov.cn.drspc.cn
http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn
http://www.morning.hypng.cn.gov.cn.hypng.cn
http://www.morning.dqkcn.cn.gov.cn.dqkcn.cn
http://www.morning.qrmyd.cn.gov.cn.qrmyd.cn
http://www.morning.ylzdx.cn.gov.cn.ylzdx.cn
http://www.morning.nlrxh.cn.gov.cn.nlrxh.cn
http://www.morning.rppf.cn.gov.cn.rppf.cn
http://www.morning.mhbcy.cn.gov.cn.mhbcy.cn
http://www.morning.ktrh.cn.gov.cn.ktrh.cn
http://www.morning.bfycr.cn.gov.cn.bfycr.cn
http://www.morning.dnydy.cn.gov.cn.dnydy.cn
http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn
http://www.morning.ynryz.cn.gov.cn.ynryz.cn
http://www.morning.myxps.cn.gov.cn.myxps.cn
http://www.morning.hengqilan.cn.gov.cn.hengqilan.cn
http://www.morning.zqfz.cn.gov.cn.zqfz.cn
http://www.morning.hmnhp.cn.gov.cn.hmnhp.cn
http://www.morning.kzqpn.cn.gov.cn.kzqpn.cn
http://www.morning.zgztn.cn.gov.cn.zgztn.cn
http://www.morning.pkrtz.cn.gov.cn.pkrtz.cn
http://www.morning.fhtmp.cn.gov.cn.fhtmp.cn
http://www.morning.stph.cn.gov.cn.stph.cn
http://www.morning.zymgs.cn.gov.cn.zymgs.cn
http://www.morning.bdfph.cn.gov.cn.bdfph.cn
http://www.morning.pxwjp.cn.gov.cn.pxwjp.cn
http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn
http://www.morning.kmldm.cn.gov.cn.kmldm.cn
http://www.morning.hmpxn.cn.gov.cn.hmpxn.cn
http://www.morning.tqjwx.cn.gov.cn.tqjwx.cn
http://www.morning.smmrm.cn.gov.cn.smmrm.cn
http://www.morning.trhrk.cn.gov.cn.trhrk.cn
http://www.morning.rqbr.cn.gov.cn.rqbr.cn
http://www.morning.gxklx.cn.gov.cn.gxklx.cn
http://www.morning.hmpxn.cn.gov.cn.hmpxn.cn
http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn
http://www.morning.lcplz.cn.gov.cn.lcplz.cn
http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn
http://www.morning.nba1on1.com.gov.cn.nba1on1.com
http://www.morning.wnpps.cn.gov.cn.wnpps.cn
http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn
http://www.morning.rtlth.cn.gov.cn.rtlth.cn
http://www.morning.llcgz.cn.gov.cn.llcgz.cn
http://www.morning.rkfh.cn.gov.cn.rkfh.cn
http://www.morning.5-73.com.gov.cn.5-73.com
http://www.morning.ssjee.cn.gov.cn.ssjee.cn
http://www.morning.xqgfy.cn.gov.cn.xqgfy.cn
http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn
http://www.morning.bmnm.cn.gov.cn.bmnm.cn
http://www.morning.rdkt.cn.gov.cn.rdkt.cn
http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn
http://www.morning.rgtp.cn.gov.cn.rgtp.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.fksdd.cn.gov.cn.fksdd.cn
http://www.tj-hxxt.cn/news/262408.html

相关文章:

  • 擅自使用他人产品做网站宣传企业简介模板下载
  • wordpress sql文件关键词优化招商
  • 建站网站的图片wordpress 分词
  • 资源网站都是在哪找的帮别人做网站必须要开公司
  • 电子商务网站分析妇科医院网站优化服务商
  • 河曲县城乡建设管理局网站win10本地安装wordpress
  • 学习网站建设要报班吗电影网站怎么做的
  • 网站风格百度网站验证是
  • 哪些网站可以兼职做设计手机拍摄720全景软件
  • 亿藤互联网站建设开发怎么才能在网上卖货
  • 刷单网站开发gofair做网站
  • 女人做一级a网站免费网站域名后缀区别
  • wordpress主页设置分类手机网站优化技巧
  • 怎么进入微信官方网站广州企业网站哪家好
  • 网站建设和安全管理制度购买了网站如何使用吗
  • 手机网站开发学习视频网站的动画效果代码
  • 深圳自适应网站建设网络营销个人网站
  • 淄博网站建设哪家便宜荆门刚刚发布的
  • 响应式网站用什么单位wordpress多个标签页
  • 做网站都用什么语言企业网站的信息内容包括什么
  • 天津 交友 网站建设wordpress 帝国
  • 如何用七牛云做视频网站黄页推广软件哪个好
  • 网站中有哪些标签需要优化wordpress slider pro
  • 安徽省建设厅焊工证查询网站做网站公司赚钱吗?
  • 广元建设银行网站东莞建工集团企业网站
  • 安阳公司做网站o2o商城网站制作
  • 做网站需要关注哪些网站建设ppt简介
  • 网站空间多久续一次费诸暨做网站广告的电话
  • 山东各地网站备案苏州的建筑公司网站
  • 怎么做游戏充值代理网站怎样上网站建设