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

wordpress编辑我合肥优化排名推广

wordpress编辑我,合肥优化排名推广,泰安创益网络科技有限公司,平面设计师求职网目录 JSR303 什么是JSR303 JSR303的作用 JSR303常用注解 入门使用 拦截器是什么 拦截器的工作原理 拦截器的作用 拦截器的使用 JSR303 什么是JSR303 JSR303是Java为Bean数据合法性校验提供给的标准框架,已经包含在JavaEE6.0中1。 JSR303通过在Bean属性中标…

目录

JSR303

什么是JSR303

JSR303的作用

JSR303常用注解 

入门使用 

 拦截器是什么

 拦截器的工作原理

拦截器的作用

拦截器的使用


JSR303

什么是JSR303

JSR303是Java为Bean数据合法性校验提供给的标准框架,已经包含在JavaEE6.0中1。

JSR303通过在Bean属性中标注类似@NotNull、@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证1。JSR303的参考实现是HibernateValidator,除了支持所有标准的校验注解外,HibernateValidator还具有JSR-380的实现12。

JSR303的作用

JSR303是Java为Bean数据合法性校验提供给的标准框架,其主要作用是提供一种可插拔的验证机制,用于在Java EE和Java SE环境中对Java Bean进行数据校验12。

JSR303通过在Bean属性中标注标准的注解来指定校验规则,并通过验证接口对Bean进行验证。其参考实现是HibernateValidator,除了支持所有标准的校验注解外,HibernateValidator还具有JSR-380的实现12。

JSR303常用注解 

入门使用 

导入依赖

<!-- JSR303 -->
<hibernate.validator.version>6.0.7.Final</hibernate.validator.version><!-- JSR303 -->
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>${hibernate.validator.version}</version>
</dependency>

在实体类相对应的属性中增加注解用来指定校验  

 @NotNull(message = "班级编号不能为空")
//    @Size(max = 100,min = 10,message = "大小必须在10至100之间")protected Integer book_id;@NotBlank(message = "班级名不能为空")protected String book_name;@NotBlank(message = "班级教员老师不能为空")protected Float price;private String image="暂无图片";

增加以下方法

@RequestMapping("/valiAdd")public String valiAdd(@Validated Bookxx bookxx,BindingResult result,HttpServletRequest req){
//        如果服务端验证不通过,有错误if(result.hasErrors()){
//            服务端验证了实体类的多个属性,多个属性都没有验证通过List<FieldError> fieldErrors = result.getFieldErrors();Map<String,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.bookxxBiz.insertSelective(bookxx);return "redirect:list";}return "clz/edit";}

 在我们的编辑页面修改一下代码

<h1>编辑界面</h1>
<form action="${pageContext.request.contextPath }/clz/${empty book?'valiAdd' : 'edit'}" method="post">书籍编号:<input type="text" name="book_id" value="${book.book_id }"><span style="color: red;">${errorMap.book_id}</span><br>书籍名字:<input type="text" name="book_name" value="${book.book_name }"><span style="color: red;">${errorMap.book_name}</span><br>价格:<input type="text" name="price" value="${book.price }"><span style="color: red;">${errorMap.price}</span><br><input type="submit">
</form>

 测试

 拦截器是什么

拦截器(Interceptor)是一种设计模式,主要用于在方法调用之前、之后或异常抛出时执行一些额外的逻辑操作。拦截器可以用于实现一些公共的横切关注点,例如日志记录、性能监测、事务管理等。

在Java开发框架中,如Spring框架,拦截器是常见的组件,用于在请求处理的不同阶段进行拦截和处理。主要通过实现拦截器接口或扩展拦截器类来定义拦截器逻辑。拦截器可以在请求到达控制器之前、之后或视图渲染之前、之后进行处理。

使用拦截器可以实现各种功能,如身份认证、授权验证、参数校验、异常处理等。它们提供了一种灵活且可重用的方式来扩展和定制应用程序行为。

在Java中,常见的拦截器实现方式包括Java动态代理、Servlet过滤器、Spring AOP(面向切面编程)等。这些拦截器可以帮助开发人员轻松地实现横切关注点的功能,并提供了一种优雅的解决方案来处理公共的业务逻辑。

 拦截器的工作原理

拦截器的作用

  1. 日志记录:拦截器可以用于记录系统运行时的关键信息或操作日志,帮助开发人员进行故障排查、性能优化和系统监测。

  2. 认证和授权:拦截器可以实现身份认证和授权验证,确保只有经过认证的用户能够访问受限资源,并根据用户权限决定其可执行的操作。

  3. 参数校验和数据转换:拦截器可以拦截请求,并对请求参数进行验证和转换,确保数据的合法性和正确性,提高系统的稳定性和安全性。

  4. 统一异常处理:拦截器可以捕获和处理应用程序中的异常,提供统一的异常处理逻辑,避免在每个业务方法中都处理相同的异常情况。

  5. 缓存和性能优化:拦截器可以用于缓存数据或计算结果,提高系统的响应速度和性能。

  6. 日志审计:拦截器可以记录用户的操作行为、业务流程等关键信息,用于审计和追踪系统的操作历史。

  7. 事务管理:拦截器可以控制事务的开启、提交或回滚,确保数据库操作的一致性和完整性。

拦截器的作用不仅限于以上几点,实际上可以根据具体的业务需求定制拦截器的功能和逻辑。它们为应用程序提供了一种灵活和可扩展的方式,实现公共的横切关注点,并提高系统的可维护性和可复用性

拦截器的使用

创建一个名为 Interceptor 的包,存放创建自定义拦截器 再创建一个创建自定义拦截器,名为 : OneInterceptor

package com.xiaoxu.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...");}
}

配置自定义拦截器

 <mvc:interceptors><bean class="com.xiaoxu.interceptor.OneInterceptor"></bean></mvc:interceptors>

 在 Interceptor 的包里,创建一个拦截器 TwoInterceptor。

package com.xiaoxu.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...");}
}

 创建一个名为 : LoginInterceptor 的拦截器

package com.xiaoxu.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 {}
}

创建一个名为 : LoginController 的控制器 

package com.xiaoxu.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;/*** @author小徐* @site www.veryedu.cn* @company xu集团* @create 2023-09-12 13:27*/
@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/list";}@RequestMapping("/logout")public String logout(HttpServletRequest req){req.getSession().invalidate();return "redirect:/clz/list";}
}

创建一个 login.jsp 的显示页面,进行测试效果 

<%--Created by IntelliJ IDEA.User: 86155Date: 2023/9/12Time: 13:26To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head><body>
<h1>登录</h1>
<form action="/login" method="post">用户:<input name="uname"><input type="submit"></form>
</body>
</html>

测试

http://www.15wanjia.com/news/51227.html

相关文章:

  • 渐变网站河南怎样做网站推广
  • 什么网站专做面粉批发邯郸网站seo
  • 合肥网站建设=388元百度指数数据分析报告
  • 运动分类的网站设计论文北京seo的排名优化
  • 单页网站上传教程安年软文网
  • html5 网站建设营销网站建设大概费用
  • 泸州百度做网站联系百度小说排行
  • 网站日常流量统计外贸推广方式
  • 有经验的佛山网站建设seo自动推广工具
  • 11108给换成119333做网站南宁seo关键词排名
  • 河南网站搭建百度关键词排名十大排名
  • 移动网络建设郑州网站建设方案优化
  • 网站现在怎么做排名自己有货源怎么找客户
  • dw个人网页制作教程学生做网站怎么优化
  • 做网站交互一般的电脑培训班要多少钱
  • 网站开发有前途整站优化代理
  • 站内营销推广方式软文如何推广
  • 互联网创业项目网站苏州手机关键词优化
  • 网络销售怎么做才能有业务seo排名技术软件
  • 从0到建网站网络推广方法怎么做
  • 做跨境电商网站报价最近发生的新闻大事
  • 万网做网站给网站源码nba最新消息球员交易
  • 网站建设汇报材料沧州搜索引擎优化
  • 网站竞品拦截广告怎么做怎么找到当地的微信推广
  • 论坛门户网站开发百度关键词优化专家
  • 内蒙古国土资源门户网站建设百度应用市场下载安装
  • 自己做网站怎么租服务器百度关键词搜索优化
  • 淘宝客推广网站怎么做收录网站是什么意思
  • 大连承接网站制作成都网络营销品牌代理机构
  • 温州网站建设模板seo整站怎么优化