struts2详解相关知识
-
Hibernate整合struts2学习项目笔记Struts与Hibernate整合 1.项目简介 答:(1)Struts2+Hibernate4实现简单的CRUD案例; (2)完成功能:后台登陆、学生表的增删改查; (3)环境:struts2+Hibernate4+Mysql6.0; 注意:CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能; 2.Struts与Hibernate整合 答:详见下图:(1)配置struts2过滤器:(2)struts2的核心jar包:(3)struts2的模板获取及配置:(4)Hibern
-
Struts2【与Spring整合】tags: Struts2 前言 本博文主要讲解Spring怎么与Struts2框架整合... Struts2和Spring的整合关键点: action对象交给Spring来创建 搭建环境 进入jar包 引入jar文件: 1)引入struts .jar相关文件 2)spring-core 相关jar文件 3)spring-web 支持jar包 spring-web-3.2.5.RELEASE.jar 【Spring源码】 struts2-spring-plugin-2.3.4.1.jar 【Struts源码】 写配置文件 struts.xml 【struts路径与action映射配置】 bean.xml 【spring ioc容器配置】 web.xml 【核心过滤器:
-
Struts2的环境需求...Struts2的环境需求:1、Servlet API 2.4及以上;2、JSP API 2.0及以上;3、JDK5及以上<br> PS:在Struts2中会用到Annotation(注解),所以JDK版本需要1.5及以上<br> 搭建Struts2环境步骤如下: [ 查看全文 ] ...................................................................................
-
struts2 json jquery 集成详解荐 Struts2下使用jsonplugin及jquery完成ajax功能 1. 从以下网址[url]http://code.google.com/p/jsonplugin/downloads/list[/url]下载JSON插件的JAR包(新版本是0.32),并加到工程的相应目录下。从如下网址[url]http://docs.jquery.com/Downloading_jQuery[/url]下载jquery所需文件。(建议下载稳定版本,不然会出现莫名其妙的错误)2. 配置相应的xml文件,为ajax请求提供数据:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC &nbs
struts2详解相关课程
-
Mybatis缓存详解 基于mybatis 3.5.1版本,全面介绍mybatis一级缓存、二级缓存以及自定义缓存的使用方法、实现原理、应用场景、优缺点等,并进行现场验证
讲师:西昆仑 初级 7503人正在学习
struts2详解相关教程
- 2. 注解的详解 在我们详细讲解注解之前,首先明确一点:注解配置和 xml 配置实现的功能都是一样的,只不过实现的方式不同,那么也就是说,xml 文件可以实现的,通过注解都可以完全办得到。比如实例化对象,设置属性,设置作用范围,生命周期的方法执行等等…
- Gradle Wrapper 详解 前面一小节《Android项目Gradle配置详解》中我们介绍了 Android 项目的目录及 Gradle 配置,我们提到有个目录是/gradle/wrapper。今天这篇文章我们来学习 Gradle Wrapper。通过这篇文章我们将了解什么是 Gradle Wrapper?为什么需要用 Gradle Wrapper?以及 Gradle Wrapper 的重要性。
- 4. 语法详解 sed 语法格式如下图所示:sed [option] 'address command' [file …]sed 的语法格式主要分为四个字段,options 选项,引号内有地址定界 / 命令,以及要处理的文件,接下来让我们详细讲解每一个语法字段,更全面的认识 sed 这个脚本利器。
- 3.3 HystrixCommand 注解详解 @HystrixCommand 注解,是 Hystrix 注解中的核心注解,可以说,只要想使用 Hystrix 的功能特性,就必须要使用该注解。@HystrixCommand 注解提供了丰富的属性,来让我们配置 Hystrix 的功能特性,我将经常用到的属性汇总成了一个表格,如下表所示:我们在了解了这些属性之后,就可以使用 HystrixCommand 属性来配置 Hystrix 的功能特性了。属性名称属性类型默认值作用fallbackMethodString空字符串配置服务容错机制defaultFallbackString空字符串配置默认服务容错机制threadPoolKeyString空字符串配置线程池隔离策略threadPoolPropertiesHystrixProperty[]空数组配置线程池详细策略接下来,我们来看看这几个属性的详细信息fallbackMethod 属性该属性的作用就是配置项目中,服务的容错机制(什么是容错机制已在前面文章中有所介绍,这里不再赘述),我们直接看用法。这里以一个简单的 helloWorld 请求为例,我们先来看正常请求。@RequestMapping(value = "hello", method = RequestMethod.GET)@ResponseBodypublic String hello() { return "helloWorld";}代码解释:第 1-2 行,我们使用 SpringBoot 中的注解,将请求暴露出去,即添加 helloWorld 请求的路径。第 3-5 行,我们编写代码,实现 helloWorld 请求,其请求的响应结果是返回 helloWorld 字符串。以上代码中,我们没有添加任何 Hystrix 的注解,只是一个很普通的正常请求,我们先来看下返回结结果。请求返回结果可以看到,请求已经正常返回了 helloWorld 。接下来,让我们模拟以下请求错误的情况,即在请求时,我们认为设置一个延时时间,来让 Hystrix 捕捉到这一异常,并应用 Hystrix 的容错机制。@RequestMapping(value = "hello", method = RequestMethod.GET)@ResponseBody@HystrixCommand(fallbackMethod = "helloFail")public String hello() throws InterruptedException { Thread.sleep(1000); return "helloWorld";}public String helloFail(){ return "helloFailed";}代码解释:第 3 行,我们使用 HystrixCommand 注解的 fallbackMethod 属性来定义当请求不能正常响应时的应急方案,fallbackMethod 属性的值就是请求不能正常响应时,所返回的方法,这里的 helloFail 就是方法名。第 5 行,我们手动加入了一个延时时间,该延时时间可以在响应请求时,延迟一秒响应,这就是我们手动实现的一个服务异常情况,该情况会被 Hystrix 的容错机制捕捉到。第 9-11 行,我们编写代码,实现了一个当请求 helloWorld 失败时,所返回的应急方法,该方法返回 helloFailed 字符串。以上代码中,我们加入了 Hystrix 的容错机制,让我们来看看效果。请求响应失败从上图中我们可以看到,我们还是请求的 helloWorld 请求,但是返回的确是 helloFailed ,这就表明,我们通过 HystrixCommand 注解的 fallbackMethod 属性来配置的服务容错起作用了。defaultFallback 属性defaultFallback 属性和 fallbackMethod 属性所实现的功能是基本相同的,只不过 defaultFallback 属性是用来配置默认的应急方法,即当我们的项目中存在多个应急方法时,我们给其中一个请求所配置的默认应急方法。defaultFallback 属性所实现的效果和 fallbackMethod 属性是相同的,这里不再赘述。threadPoolKey 和 threadPoolProperties属性threadPoolKey 属性是用来配置线程池隔离策略的属性。threadPoolProperties 属性,则是用来配置线程池详细策略的属性,例如,核心线程数量、最大线程数量等。@RequestMapping(value = "hello", method = RequestMethod.GET)@ResponseBody@HystrixCommand(fallbackMethod = "helloFail", threadPoolKey = "HelloHystrix")public String hello() throws InterruptedException { Thread.sleep(1000); return "helloWorld";}public String helloFail(){ return "helloFailed";}第 3 行,我们使用 HystrixCommand 的 threadPoolKey 属性来配置线程池隔离,即我们将 helloWorld 请求划到了名为 HelloHystrix 的线程池下,这样就和主线程分离开了。我们来看一下 threadPoolProperties 属性的具体用法。@RequestMapping(value = "hello", method = RequestMethod.GET)@ResponseBody@HystrixCommand(fallbackMethod = "helloFail", threadPoolProperties = { @HystrixProperty(name = "coresize", value = "2"), @HystrixProperty(name = "allowMaximumSizeToDivergeFromCoreSize", value = "true"), @HystrixProperty(name = "maximumSize", value = "2")})public String hello() throws InterruptedException { Thread.sleep(1000); return "helloWorld";}public String helloFail(){ return "helloFailed";}代码解释:第 4 行,我们为 threadPoolProperties 定义了几个常用的线程池隔离策略,它们分别是:核心线程数、开启最大线程数、最大线程数。至于还有哪些其他的配置项,由于不再本套课程内,同学们可以自行查阅资料了解。Tips: 1. 在实际工作中,defaultFallback 属性相对而言很少会用到,一般会手动使用 fallbackMethod 属性来直接指定相关请求所对应的应急方法; 2. threadPoolProperties 属性经常使用,这里只是将最经常使用的几个配置策略给同学们做了介绍,剩下不常用的希望同学们可以自行查阅了解; 3. 在使用 threadPoolProperties 属性时,如果我们的核心线程数量和最大线程数量相等,此时又有超过该数量的请求来请求服务了,那么,在这种情况下,请一定要配置 Hystrix 的降级策略,否则,后台服务会直接报错。
- 3.5 HystrixCollapser 注解详解 @HystrixCollapser 注解在 Spring Cloud 中,发挥着重要的作用。我们可以把他简单理解为:它是可以进行请求合并的注解,什么是请求合并呢?正常情况下,我们的每一个请求都会请求到我们的服务中,且最后服务会返回给我们对应的响应结果,如果我们存在多个请求,且每个请求都是一样的,在这种情况,我们的服务也是一个请求一个请求的去处理,很是浪费资源。针对于上述这种再正常不过的情况,Hystrix 对此做了很好地优化。当有多个相同的请求来请求我们的服务时,Hystrix 会将这些请求进行合并,并最终实现多个相同请求请求服务,服务只接收一次请求的目的,这就是请求合并。请求合并相对于传统请求处理而言,大大节省了服务器的资源消耗,降低了服务器的使用和维护成本。在微服务项目中,使用请求合并功能,已经成了业界主流的方案。接下来,先让我们看一下,HystrixCollapser 注解中都有哪些属性。collapserKey 属性,即请求合并时的 key ,字符串类型,默认是 HystrixCollapser 注解所应用的方法名。batchMethod 属性,需要使用请求合并功能的方法,字符串类型,值是需要使用请求合并功能的方法名。scope 属性,即请求合并的作用范围,Scope 类型,默认只作用在当前请求下,可以设置成全局响应。collapserProperties 属性,即请求合并的详细配置策略,HystrixProperty 数组类型,其内容为 Hystrix 官网所规定内容,使用方法同上 HystrixProperty 注解使用方法。最后,我们使用官网的一个例子,来介绍一下 HystrixCollapser 注解如何使用。@HystrixCollapser(batchMethod = "getUserByIds")public List<User> getUserById(String id) { return null;}@HystrixCommand(fallbackMethod = "getUserByIdsFail")public List<List<User>> getUserByIds(List<String> ids) {List<List<User>> users = new ArrayList<User>(); for (String id : ids) { users.add(new User(id, "name: " + id)); } return users; }代码解释:第 1 行,我们使用 HystrixCollapser 注解的 batchMethod 属性,来指定需要使用请求合并的方法。第 6 行,我们使用 HystrixCommand 注解的 fallbackMethod 属性,来指定 getUserByIds 方法请求失败时所返回的应急方法。Tips: 1. 使用 HystrixCollapser 注解时,其注解作用的方法的返回类型,必须是 list 类型,这是 Hystrix 的规定,所以,上述代码中 getUserById 的方法的返回值是一个 User 类型的 list ; 2. 使用 HystrixCollapser 注解时,必须要搭配 HystrixCommand 注解,来配置对应请求的应急方法,这也是 Hystrix 所规定的,所以,上述代码中我们在 getUserByIds 方法上定义了应急方法; 3. HystrixCollapser 注解在实际工作中经常使用,是提升项目吞吐量最简单、最直接的配置。
- 5. 堆内存结构详解 讲解完分代的概念,我们来对堆内存中的不同的代,不同的内存空间的作用进行更加详细的讲解。讲解之前,我们来看下如下示意图,更加直观的了解堆内存结构。堆内存每个模块之间的关系及各自的特点概述如下:JVM 内存划分为堆内存和非堆内存,堆内存分为年轻代(YoungGen)、老年代(OldGen);年轻代又分为 Eden 和 Survivor 区。Survivor 区由 FromSpace 和 ToSpace 组成。Eden 区占大容量,Survivor 两个区占小容量,默认比例是 8:1:1;堆内存存放的是对象,垃圾收集器就是收集这些对象,然后根据 GC 算法回收;新生成的对象首先放到年轻代 Eden 区,当 Eden 空间满了,触发 Minor GC,存活下来的对象移动到Survivor0 区,Survivor0 区满后触发执行 Minor GC,Survivor0 区存活对象移动到 Suvivor1 区,这样保证了一段时间内总有一个 survivor 区为空。经过多次 Minor GC 仍然存活的对象移动到老年代;老年代存储长期存活的对象,GC 期间会停止所有线程等待 GC 完成,所以对响应要求高的应用尽量减少发生 Major GC,避免响应超时。Tips:关于上文提到的垃圾回收部分的知识,我们会在后边的章节做专门的、详细的讲解,此处我们主要关注在堆内存的每个模块的概念,特点及作用。对于垃圾回收部分的知识,我们后续再进行学习。
struts2详解相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议