sshb笔记复习.doc

上传人:罗晋 文档编号:11036311 上传时间:2021-06-19 格式:DOC 页数:18 大小:74KB
返回 下载 相关 举报
sshb笔记复习.doc_第1页
第1页 / 共18页
sshb笔记复习.doc_第2页
第2页 / 共18页
sshb笔记复习.doc_第3页
第3页 / 共18页
sshb笔记复习.doc_第4页
第4页 / 共18页
sshb笔记复习.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《sshb笔记复习.doc》由会员分享,可在线阅读,更多相关《sshb笔记复习.doc(18页珍藏版)》请在三一文库上搜索。

1、Struts 2一、Struts2的产生:通过webwork社区与struts社区的合并,并继承了webwork框架,产生struts2。二、Struts1与struts2的区别:1、Action类:(1)struts1的Action类继承Action类。(2)Struts2的action类可以是任意一个普通的java类,只要该类有execute方法即为一个action类。或者实现Action接口或者继承自ActionSupport类2、线程模型:(1)Struts1的action是单例模式存在线程安全问题(2)Struts2的action是多例的,因此不会出现线程安全问题。3、Servlet

2、依赖:(1)Struts1必须依赖Servlet API。(2)Struts2可以不依赖Servlet API。4可测性(1)struts1测试必须使用web服务器.(2)Struts2测试可以脱离web容器单独进行测试。5、输入捕获:(1)struts1通过ActionForm来注入表单数据,ActionForm与Vo类有许多重复代码。(2)strurs2可以通过vo类或者基本属性获得用户的输入。6、表达式语言(1)struts1支持el(2)struts2即支持el又允许使用ognl(Object graphics notation language)。7、类型转换(1)struts1的a

3、ctionForm通过comments-beanutil包完成转换(2)struts2提供了内置的转换器。8、试图支持:一、Struts2上传:1、环境搭建: commons-fileupload.jar commons-io.jar 其他必须包 2、定义文件上传表单,使用struts2的文件上传表单组件: 3、定义表单对应的领域对象FileInfo fileInfo: (1)定义File 类型的属性 名字与上传组件名相同 (2)定义一个获得上传文件的文件名的属性,规则是以上传文件表单名开头以FileName结尾 (3)定义一个获得上传文件类型的属性,规则是上传文件表单名字开头,以Conten

4、tType结尾。 4、在action中定义领域对象fileInfo,并提供setXxx/getXxx方法,修改上传表单 5、配置struts.xml (1)修改上传文件的大小 (2)修改fileUpload拦截器的默认配置 20971520 image/jpeg,application/octet-stream,image/bmp,image/gif /download.jsp /upload.jsp二、文件下载:1、在下载的action类中定义一个返回InputStream类型的方法一般命名getTargetFile2、配置action image/jpeg,application/octe

5、t-stream,image/bmp,image/gif attachment;fileName=$fileName targetFile 4096 一、OGNL:Object Graph navigation language:1、应用场景:(1)在jsp页面中使用调用对象的方法、调用类的静态方法、调用构造方法创建对象、遍历集合、访问值栈等(2)在struts.xml配置文件中使用比如传值2、值栈(ValueStack):是Struts2中是一个对象,这个对象用来表示action空间对象,如果多个action之间的跳转方式是chain,这些action共享 同一个值栈对象。在action中,

6、action类的成员变量都会被放入值栈 (1)获取action的值栈:通过ActionContext获取值栈 (2)在页面中使用ognl: 调用Action中的静态方法 调用jdk java.lang包中的静态方法: 调用jdk java.lang包中的静态方法: 调用jdk的不是java.lang包中的类的静态方法 调用类中的静态成员: 调用类中的构造方法: 访问值栈中的集合 访问值栈中List集合的某一个元素 访问值栈中的Set集合 访问值栈中的Set集合的某一个元素 访问值栈中的Map: 获得map中所有的key: 获得map中所有的value: (3)在页面中使用ognl遍历集合时使用

7、投影和选择, 通过ognl的投影显示所有部门的地址 通过ognl的投影显示第一个部门的地址 通过ognl选择部门编号大于20的部门:20/ 通过ognl选择部门编号大于20的第一个部门的部门编号:20.deptno0/ 通过ognl选择部门编号大于20的第一个部门的部门编号:20.deptno/ 通过ognl选择部门编号大于20的最后一个部门的部门编号:20.deptno/ (4)ognl访问范围对象里的值 -在各个范围对象中寻找,找到后返回 (5)#parameters:获取参数。 3、action重定向到action的传值 一、Struts2的异常处理: (1)try.catch处理 (2

8、)声明式的处理方式: 如果在action中产生运行时异常,可以通过声明的方式进行处理,配置如下 1)如果是局部异常:在某一个特定的action中产生的异常,可以在此action的配置中进行异常配置 2)全局异常:如果多个aciton都产生同一个运行时异常,可以将该异常配置为全局异常。在pacakge标记下进行配置 实现多个action共享。 配置如下 /loginException.jsp 3) 非运行时异常,(Struts2中对于非运行时异常声明式处理遗留问题。)一、在Action中使用范围对象(request,session,application)的非Servlet API(HttpSe

9、rvletRequest/HttpSession/ServletContext):1、非IoC(控制反转)方式:范围对象需要在应用程序中创建: 使用ActionContext对象获得范围对象:(1)获得requst对象:Map request = (Map) ActionContext.getContext().get(request);(2)获得session对象:Map session = ActionContext.getContext().getSession();(3)获得Application对象:Map application = ActionContext.getContext

10、().getApplication();2、IoC(控制反转)方式:范围对象需要在应用程序中创建:(1)需要action类实现RequestAware、SessionAware、ApplicationAware(2)定义Map类型的范围对象: Map request Map session Map application(3)在实现的接口中将对应的对象返回。二、在action中使用范围对象的Servlet API以及HttpServletResponse对象等1、范围对象的非IoC方式: (1)定义范围对象并是通过ServletActionContext实现的,代码如下: HttpServle

11、tRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); ServletContext application = ServletActionContext.getServletContext(); /HttpServletResponse response = ServletActionContext.getResponse();2、范围对象的非IoC方式:三、拦截器:1、拦截器的概念:Struts2的核心功能都是由不同的拦截器来完成的。2、如果在acti

12、on中自定义配置拦截器,那么继承的拦截器将被屏蔽3、自定义拦截器:(1)实现Interceptor接口(2)继承MethodFilterInterceptor:可以根据配置在action某些方法执行时拦截,某些方法执行时不拦截, 1)excludeMethods:指定不被拦截的方法 2)includeMethods:指定被拦截的方法 注意: 在使用通配符配置action时,使用excludeMethods无效。 当使用excludeMethods和includeMethods指定同一个方法时includeMethods优先级高。 一、回顾:1、工程环境的搭建(1)拷贝jar包commons-c

13、ollections-3.1.jarcommons-digester-2.0.jarcommons-fileupload-1.3.jarcommons-io-2.0.1.jarcommons-lang3-3.1.jarcommons-logging-1.1.3.jarfreemarker-2.3.19.jarjavassist-3.11.0.GA.jarjson-lib-2.3-jdk15.jarognl-3.0.6.jarstruts2-core-2.3.15.3.jarxwork-core-2.3.15.3.jar(2)拷贝struts.xml配置文件(3)在web.xml配置核心控制器f

14、ilter配置2、在Action类中对输入的捕获:(1)基本属性取值:(2)领域对象取值:(3)模型驱动3、Action的创建:(1)任何一个带有String execute()方法的类都可以作为action使用(2)实现Action的类可以作为action(3)继承ActionSupport类4、defutlt.properties:- (1)struts.xml通过 (2)struts.properties: (3)web.xml的filter配置中通过初始化参数更改 web.xmlstruts.propertiesstruts.xmldefault.properties5、struts-

15、default.xml:6、详细配置:struts标记的子标记配置 (1)constant标记 (2)include标记 (3)bean标记了解 (4)package标记: 1)package属性: name:包名,用于区分多个包和为其他包提供继承的标示。 extends:继承其他包,在默认情况下必须继承自struts-default包或该包的子包。 abstract:抽象的,如果该属性的值为true,则在这个包中不能配置action,配置了也不可见 namespace:在配置package时可以指定名称空间,作用是解决命名冲突 注意:如果在指定的名称空间中找不到对应的action,会到默认的

16、名称空间中寻找,找到了执行,找不到报404错误 (5)package中子标记配置 1)配置:用来配置默认action,必须是package中的第一个配置,当用户访问不存在action时可以自动转入默认action 2)forward Action的配置:只需配置action,可以不指定action类,这样的action就是forward Action,只做转发 /error.jsp (6)常用action的配置 1)name属性:用户请求的action的名字,作为url一部分。 2)class属性:action的类名。 3)method:标示请求道action后执行的action方法的名字,如

17、果没有配置,默认执行execute方法。在action类中允许定义多个调用业务逻辑的方法 4)使用通配符简化action的配置,减少action配置数量,struts配置文件支持使用通配符“*”,标示任意字符串 例如 请求的url save_User.action 执行的方法的名字 saveUser 跳转的页面名字 saveSuc.jsp 如果匹配第一个*,则1,如果匹配第二个*,2,如果完全匹配*_*,则使用0. 5)动态方法调用:在请求action时,可以在action后加!方法名.action来调用指定的方法(7)result配置: 1)name属性:name值表示与执行的action方

18、法的返回值相同的结果。返回结果可以是任意的字符串,也可以是Action接口中定义的值(SUCCESS ERROR INPUT LOGIN NONE) 如果没有配置name属性,那么name属性的默认值是success 2)type属性:表示跳转类型,包括action转发或者重定向到页面、action转发或重定向到action、stream等 ,具体分为如下情况: a、action转发到页面:值是dispatcher,如果type的值没有配置,默认就是dispatcher b、action重定向到页面:type值是redirect c、action转发至action:type的值是chain,具

19、体的配置如下: two . d、action重定向到action:type的值redirectAction,配置如下: two . e、文件下载时返回类型:stream。后面章节介绍。 三、Struts工程环境的搭建:1、拷贝jar包:commons-fileupload-1.3.jarcommons-io-2.0.1.jarcommons-lang3-3.1.jarcommons-logging-1.1.3.jarfreemarker-2.3.19.jarjavassist-3.11.0.GA.jarlog4j-1.2.17.jarognl-3.0.6.jarstruts2-core-2.3

20、.15.3.jarxwork-core-2.3.15.3.jar2、拷贝struts.xml配置文件,也可以自己创建,将struts核心包中的struts-default.xml的头部拷贝到文件中3、在web.xml中配置核心控制器StrutsPrepareAndExecuteFilter类,如果是2.18之前,FilterDispatcher.(1)struts2.18之后的配置核心控制器配置如下: filter org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter filter /*(2)如果是strut

21、s2.18之前的版本,请参考ppt或者教材。四、表单数据的捕获1、在action类中使用基本属性捕获表单数据: (1)表单元素的名字必须与Action类中基本属性名字相同,否则获取不到表单数据的值 (2)action类中必须提供基本属性的setXxx方法,否则获取不到表单数据的值 2、领域对象(VO对象)的方式取值:(1)定义vo类,如果使用该类的对象捕获表单输入,该类的成员变量名必须与表单名相同(2)在action类中定义该vo类对象成员,并提供setXxx、getXxx方法(3)表单元素的名称必须以vo类对象名字作为前导,例如user.username3、模型驱动:(1)定义vo类,vo类

22、的数据成员的名字与表单元素的名字相同(2)在action中定义该类的对象成员并调用该类的无参数构造方法直接初始化(3)action类实现ModelDriven接口,实现接口中的方法将该对象成员返回(4)表单元素的名字与使用基本名称无需对象名引导。更正:struts默认配置中允许使用模型驱动获取表单输入数据。五、关于Action的定义:Action类是业务逻辑控制器,该类在struts2中可以是一个普通类,并定义execute方法,该类就可以作为一个action使用。 但是如果要使用struts2框架提供的一些支持,需要实现Action接口或者继承ActionSupport类。 注意:通常情况下

23、,定义Action最好继承自ActionSupport。 六、Struts2的详细配置:1、默认配置:默认的配置分布在struts-default.xml、default.properties文件中。(1)struts-default.xml:struts2框架的默认配置,有个这个默认的配置,struts2才能完成控制器功能。(2)default.properties: 1)struts.action.extension=action,默认配置,定义了struts2的action被请求时的扩展名, 注意:当使用原始的html时请求action必须带扩展名.action,当使用struts2的标

24、签时以及struts2的配置文件中 不使用扩展名 2)struts.enable.DynamicMethodInvocation = false:struts2.3默认情况下不允许使用动态方法调用,如果想 使用动态方法调用,必须设置其值为true 3)struts.multipart.maxSize=2097152:允许上传文件的最大尺寸是2MB,如果上传的文件大于2MB,需要更改这个配置。否则 抛异常。 4)struts.objectFactory = spring当struts与spring框架整合后,action的实例的创建交给spring(IoC)(3)struts.xml配置文件:是

25、struts框架的配置文件,用户配置文件: 1)在标记内配置如下: a、:用来配置struts框架的扩展组件,一般无需扩展,不用配置 b、:用来配置常量,常量就是用来设置或者更改default.properties中struts默认属性配置 注意:关于常量的配置的优先级 web.xml struts.propertiesstrutsdefault.properties 总结:关于struts的常量配置可以在以下文件中配置: b-1)web.xml:在核心控制器中通过初始化参数进行配置常量更改默认属性配置,其配置的优先级最高。 b-2)在struts.properties:该文件是用户配置文件,

26、其优先级低于web.xml。通过key=value. b-3)在struts.xml中通过配置。 b-4)使用默认配置,default.properties。 其优先级是b-1b-2b-3b-4. c、:包含其他的struts框架的配置文件,Hibernate思考:对象如何存储?1、内存中2、序列化到硬盘中3、存储到数据库中,在java中数据以对象的方式存在-保存到-关系型数据库中 object-持久化-关系型数据库 开发步骤:1、环境搭建,拷贝jar包,在src目录下(classpath路径)创建hibernate.cfg.xml配置文件,完成连接配置2、创建vo(pojo)类3、在vo包下

27、创建vo与表的映射文件,类名.hbm.xml4、将映射文件加入到hibernate.cfg.xml中一、Hibernate核心API1、与配置相关的API:(1)Configuration:对象用来加载hibernate框架的配置文件,通过该对象调用configure(),如果配置文件命名为hibernate.cfg.xml,默认被加载,否则使用带参数的方法(2)SessionFactory接口:该接口提供获得session对象的方法,如果要获得SessionFactory实例,通过Configuration的对象调用buildSessionFactory()方法。(3)Session:该对象

28、提供了对对象的CRUD操作,获得Session对象通过SessionFactory的实例调用openSession()实现。 1)save(Object obj):添加操作 2)get(Class,Serializable):通过指定的持久化标识获得对应的表中记录的对象。如果查不到返回null.不管是否调用返回对象的方法,都会发送查询语句,也称为立即加载 3)load(Class,Serializable):通过指定的持久标识获得对应的对象,如果表中记录不存在会抛异常,默认情况下,如果不调用返回对象的方法,不会发送sql语句 4)delete(Object obj): 5)update(Obj

29、ect obj)(4)Hibernate中对象的三种状态及转换 1)瞬时状态:当使用new调用构造方法创建的对象时,该对象是瞬时对象 2)持久化状态:当该对象获得持久化标识,并纳入session管理,该对象与表中的某一条记录实时联动,该对象就处于持久化状态,对于这个对象的操作实时联动表记录 3)脱管状态:对象具有持久化标识,但是没有纳入session管理,该对象并不与表中的记录实时联动。2、补充:Junit单元测试:程序员在开发后对模块进行的测试,当项目代码提交后测试代码要删除,单元测试环境步骤如下:(1)拷贝junit.jar包(2)定义一个测试类,该类需继承自TestCase(3)在类中编

30、写测试方法,测试方法名必须在开头或者结尾含有test,并且方法的返回值是void,没有参数。(4)执行测试方法一、hibernate:ORM工具或者框架,支持以面向对象的方式操作数据库,实现了对象和关系的映射,通过映射实现对象与关系的转换。属于数据持久化技术(数据访问层)。1、hibernate环境搭建:2、hibernate的核心api: (1)与hibernate环境相关的api: Configuration:该类对象使用configure()方法负责加载hibernate配置信息(hibernate.cfg.xml),如果配置文件没有按照规范命名,需要将配置文件名作为参数传入。 Sess

31、ionFactory:该接口的初始化在Configuration类中buildSessionFactory()方法实现 Session:该接口可以实现简单的CRUD或者支持复杂的使用标准SQL或者HQL语句实现CRUD。 save(Object obj)/保存对象 delete(Object obj)/删除对象 update(Object obj)/修改对象 saveOrUpdate(Object obj)/保存或者添加对象 get(Class c,id)/无延迟的查询指定持久化标识的对象,如果查到返回对象,如果没查到返回null load(Class c,id)/默认情况下延迟查询对象,如果

32、没查到对象抛出ObjectNotFoundException异常,如果找到对象,在返回的对象调用其成员方法时,会发出查询 指令,否则不发送查询指令。 (2)对象的三种状态: 1)瞬时状态:通过new 调用构造方法创建的对象,或者处于持久化状态的对象被delete。 |-save |-get Session |-load |-iterate |-persist |-update/saveOrUpdate 2)持久化状态:该对象具有持久化标识,并纳入session管理,该对象处于持久化状态,此时对象与表中对应的记录实时关联。 |-clear |-close Session |-evict 3)脱管

33、状态:具有持久化标识,但是没有纳入session管理。 3、Hibernate配置文件: (1)框架的配置文件可以是xml,也可以是properties,主要是完成连接配置、方言配置、加载映射文件、c3p0数据库连接池等. (2)映射文件,实现某个vo类与表的映射关系 二、hibernate的映射 1、主键生成策略: generator的class属性用来定义主键值的生成策略 (1)increment:首先查询表中主键的最大值,新添加的记录的 主键值在最大值基础上+1,限定条件主键必须是数值型,不适用与集群或者是多用户并发操作时。 (2)native:根据底层数据库的不同自主的采用identity、sequence等策略 (3)identity:适用于MySQL、SQL Server数据库,当以上两种数据库的表中主键值采用了identit

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1