电厂建设审批进度网站国外用什么做网站

张小明 2026/1/10 9:02:11
电厂建设审批进度网站,国外用什么做网站,wordpress换主题模板,优化大师win10下载1 对比组件核心用途主要应用场景‌过滤器 (Filter)‌在请求到达Servlet之前或响应返回客户端之前#xff0c;对原始的ServletRequest和ServletResponse进行预处理或后处理。字符编码设置、敏感词过滤、URL级别的权限认证、请求日志记录。‌12‌拦截器 (Interceptor)‌在请求进…1 对比组件核心用途主要应用场景‌过滤器 (Filter)‌在请求到达Servlet之前或响应返回客户端之前对原始的ServletRequest和ServletResponse进行预处理或后处理。字符编码设置、敏感词过滤、URL级别的权限认证、请求日志记录。‌12‌拦截器 (Interceptor)‌在请求进入Controller方法前后以及视图渲染前后对请求进行拦截和处理。它基于Spring的反射机制。权限认证、审计日志、请求参数预处理、响应数据包装。‌12‌切面 (AOP)‌通过“切面”技术在不修改目标方法代码的情况下横向切入业务逻辑实现功能的扩展和解耦。它基于动态代理如JDK Proxy或CGLIB。方法级别的权限控制、日志记录、事务管理、缓存操作、方法执行时间监控。‌13‌ControllerAdvice‌全局异常处理和数据绑定/预处理专门用于增强Controller层。也是基于AOP统一的全局异常处理、统一的数据格式化、统一的请求参数预处理。‌13使用过程中需要注意执行顺序和和优先级。2 Servlet在Java Web应用程序中Servlet是处理HTTP请求和响应的核心组件Servlet的生命周期:1 加载和实例化当服务器启动时会加载web.xml中配置的Servlet或者在注解为WebServlet的类。服务器将为每个Servlet创建一个实例。2. 初始化在Servlet实例创建后会调用init(ServletConfig config)方法进行初始化。这个方法通常用于执行仅需执行一次的初始化操作比如加载资源文件、打开数据库连接等。3. 请求处理当客户端发送请求到服务器时服务器会调用Servlet的service(ServletRequest req, ServletResponse res)方法。在Servlet 3.0及更高版本中推荐使用doGet(HttpServletRequest request, HttpServletResponse response)和doPost(HttpServletRequest request, HttpServletResponse response)等方法来分别处理GET和POST请求。4. 服务在每次接收到新的请求时service方法或相应的doXxx方法会被调用用于处理请求并生成响应。5. 销毁当Web应用被卸载或服务器关闭时会调用Servlet的destroy()方法。这个方法用于释放资源比如关闭数据库连接、停止线程等。注意事项‌单例性‌默认情况下Servlet是单例的即整个Web应用生命周期内只会有一个Servlet实例。这意味着所有的客户端请求将共享同一个Servlet实例。如果Servlet需要处理大量并发请求应确保其线程安全。‌多线程‌由于Servlet是单例的多个请求可能会并发地执行service方法或其子方法如doGet, doPost。因此编写Servlet时需要考虑线程安全。可以使用同步块或并发工具类来管理共享资源的访问。‌生命周期管理‌可以通过覆盖init和destroy方法来管理资源的初始化和清理工作。对于非单例的Servlet可以使用WebServlet(value/path, loadOnStartup1)注解来控制加载顺序和时机3 动态代理‌维度‌‌Java动态代理‌基于JDK‌CGLIB代理‌基于ASM‌实现原理‌通过反射机制生成实现目标接口的代理类通过ASM字节码操作生成目标类的子类‌适用场景‌目标类必须实现接口目标类无需实现接口支持类级别的代理‌性能‌通常稍逊于CGLIB但差异可忽略性能更优尤其在无接口场景下‌限制‌无法代理final类或方法无法代理final类‌实现方式‌java.lang.reflect.ProxyInvocationHandlernet.sf.cglib.proxy.Enhancer‌使用场景‌接口多、结构清晰的项目无接口类、老项目或性能敏感场景JDK Proxy反射和接口import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; // 定义目标接口 interface TargetInterface { void doSomething(); } // 实现目标接口 class TargetImpl implements TargetInterface { Override public void doSomething() { System.out.println(TargetImpl method); } } // 代理处理器 class TargetProxy implements InvocationHandler { private TargetInterface targetInterface; public TargetProxy(TargetInterface targetInterface) { this.targetInterface targetInterface; } Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(method.getName() 前置处理); Object result method.invoke(targetInterface, args); System.out.println(method.getName() 后置处理); return result; } public TargetInterface getProxyInstance() { return (TargetInterface) Proxy.newProxyInstance( TargetProxy.class.getClassLoader(), targetInterface.getClass().getInterfaces(), this ); } } // 测试类 public class JDKDynamicProxyExample { public static void main(String[] args) { TargetInterface target new TargetImpl(); TargetProxy proxyHandler new TargetProxy(target); TargetInterface proxy proxyHandler.getProxyInstance(); proxy.doSomething(); } }CGLIbSM字节码操作生成目标类的子类public class TargetClass { public void doSomething() { System.out.println(TargetClass.doSomething()执行); } public String getValue(String input) { return 处理结果: input; } } import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method; public class MyMethodInterceptor implements MethodInterceptor { Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { System.out.println(前置增强: method.getName()); Object result proxy.invokeSuper(obj, args); // 调用父类方法 System.out.println(后置增强: method.getName()); return result; } } import net.sf.cglib.proxy.Enhancer; public class CglibProxyDemo { public static void main(String[] args) { // 创建Enhancer对象 Enhancer enhancer new Enhancer(); // 设置父类 enhancer.setSuperclass(TargetClass.class); // 设置回调 enhancer.setCallback(new MyMethodInterceptor()); // 创建代理对象 TargetClass proxy (TargetClass) enhancer.create(); // 调用方法 proxy.doSomething(); String result proxy.getValue(CGLIB测试); System.out.println(result); } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

企业网站推广哪个公司好视频网站制作费用

终极指南:如何为AI应用快速打造移动端全场景体验 【免费下载链接】ruoyi-ai RuoYi AI 是一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。 项目地址: https://gitcode.com/ageerle/ruoyi-ai 在当今移动优先的时代&#xf…

张小明 2026/1/9 17:58:16 网站建设

中原免费网站建设用ps怎么做网站效果图

Monaco Editor终极调优:让你的代码提示响应速度实现性能飞跃 【免费下载链接】monaco-editor A browser based code editor 项目地址: https://gitcode.com/gh_mirrors/mo/monaco-editor 你的编辑器响应速度达标了吗?在快节奏的开发工作中&#x…

张小明 2026/1/8 20:25:42 网站建设

哪个网站做ppt好外贸流程询盘发盘

Daily Report — Day 9 (Beta)📅 日期:2025/12/16👥 参与人:zc、lzy、shr、zmj、xhy✅ 昨日完成工作(Day 8 落地成果)推荐模块稳定性修复(zc)对现有权重计算逻辑进行边界检查与异常兜…

张小明 2026/1/10 1:08:04 网站建设

中国建设部网官方网站华为物联网开发平台

1900-0711-81 是一种工业用触摸屏面板,通常用于人机界面(HMI)系统,负责显示设备状态、操作界面以及与控制系统交互。它常用于自动化生产线、数控机床、包装机械等场景。基本特点人机界面功能显示设备运行状态、参数和报警信息。支…

张小明 2025/12/27 5:26:24 网站建设

哪些网站可以做邀请函网站首页幻灯片代码

让机器人像人一样推理,能更像人一样行动。 从走路、跳舞到后空翻,动作模仿教会了机器人「怎么动」,到端盘子、分拣水果、热食物等复杂操作时,机器人不能只模仿,更要深度决策——识别复杂环境,理解「为什么做…

张小明 2025/12/27 5:26:25 网站建设

网站开发设计论文上海网络seo

Swift Markdown UI:企业级应用中的富文本渲染革命 【免费下载链接】swift-markdown-ui Display and customize Markdown text in SwiftUI 项目地址: https://gitcode.com/gh_mirrors/sw/swift-markdown-ui 还在为iOS应用中的富文本显示问题而头疼吗&#xff…

张小明 2026/1/6 16:35:29 网站建设