Java三大框架(ssh)总结_第1页
Java三大框架(ssh)总结_第2页
Java三大框架(ssh)总结_第3页
Java三大框架(ssh)总结_第4页
Java三大框架(ssh)总结_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hibernate框架第一章 数据结构1.1认识数据结构Ø 数据:是信息的载体,是能够被计算机识别、存储、计算的符号集合是计算机处理的对象的总称;Ø 数据元素:也称为结点,是组成数据的基本单位;Ø 数据项:是数据的最小单位;Ø 数据对象:是具有相同特征的数据元素的集合,它是数据的子集;Ø 数据结构:计算机存储、组织数据的方式;l 逻辑结构:指从逻辑关系上描述数据,与数据的存储无关,且独立于语言;n 线性结构:有且仅有一个开始结点和一个终端结点,所有结点最多只有一个前驱结点和一个直接后继结点;n 非线性结构:指一个结点可能有多个直接前驱和直接后继

2、结点。l 存储结构:指数据元素及其关系在计算机存储时如何表示,依赖于语言;l 数据运算:通茶昂贵定义在数据的逻辑结构上。1.2算法Ø 是为求解一个问题需要遵循的,被清晰的制定的简单指令的集合;正确的算法有如下特点:l 用待处理问题的相关信息作为输入数据l 对一个既定的合法输入,多次执行同一算法,总返回同一个结果(随机算法除外)l 算法中的指令是可行的,即每个指令都可以实现l 算法中指令的数量是有限的l 算法执行完毕后,能够输出正确的数据集合1.3算法分析Ø 目的在于选择合适的算法,算法分析是从复杂度来考虑的。复杂度:衡量一个算法好坏的重要手段;l 时间复杂度:以算法执行时间

3、长短来衡量l 空间复杂度:以算法执行占用的存储空间来衡量第二章 算法第三章 设计模式3.1面向对象设计原则Ø 单一职责原则:要求每个对象应该只有一种责任;Ø 开闭原则:设计程序时对扩展开放,对修改关闭;Ø 里氏替换原则:任何情况下,子类替换父类,不会影响程序运行;Ø 依赖倒置原则:提倡高层不依赖底层,二者都依赖抽象;Ø 接口隔离原则:把多个功能分开声明,不强迫客户实现不需要的功能;Ø 迪米特原则:最少只是原则尽可能的降低访问级别;Ø 组合/聚合复用原则:尽量不用继承达到复用类的目的,而是使用组合和聚合。3.2设计模式分类&#

4、216; 创建型模式:如何创建对象以及何时创建对象,工厂模式,单例模式Ø 结构型模式:对象该如何组织以及采用什么样的结构更合理Ø 行为型模式:规定了各个对象应该具备的职责以及对象间的通信模式3.3什么是框架Ø 应用程序骨架;框架技术的优势在于:l 不用再考虑公共问题,框架已经帮我们做好了l 可以专心在业务逻辑上,保证核心业务逻辑的开发质量l 结构统一,便于学习、维护l 框架集成的前人的经验有助于写出稳健、性能优良并且结构优良的高质量程序3.4主流框架3.4.1 Struts框架Ø 最早的Java开源框架之一,定义了通用的Controller(控制器),通

5、过配置文件(一般是struts-config.xml)隔离了Model(模型)和View(视图),以Action的概念对用户请求进行了封装,是代码更清晰易读。3.4.2 Struts2框架Ø 新的框架特性:l 从逻辑中分离出横切关注点的拦截器l 减少或者消除配置文件l 贯穿整个框架的强大表达式语言l 支持可变更和可重用的基于MVC模式的标签API3.4.3 Hibernate框架Ø 对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合3.4.5 Spring框架Ø 轻量级框架,主要作为依赖注入容器和AOP实现存在,还提供了声明式事务、对DAO层的

6、支持等简化开发功能。其优点有:l 低侵入式设计,代码污染极低l 独立于何种应用服务器,可以真正实现“Write Once,Run Anywhere”l Spring的DI机制降低了业务对象替换的复杂性l Spring开发并不完全依赖于Spring的所有组件,开发者可以自由选择使用Spring框架的部分或全部组件。 第四章Hibernate实现数据操作4.1 Hibernate概述一个优秀的Java持久化层解决方案,是当今主流的对象-关系映射(ORM)工具4.1.1 理解持久化l 瞬时状态:程序退出,数据就不存在了l 持久状态:在程序退出后,以文件的形式保存在硬盘中。l 持久化:将程序中的数据在

7、瞬时状态和持久之间转换的机制4.1.2 对象-关系映射:能在对象和关系型数据库两者之间进行数据转换的机制4.2 搭建Hibernate项目环境l 加载Hibernate驱动包;l 创建Hibernate.cfg.xml文件,指定数据库连接信息及其映射文件路径l 创建持久化类和映射文件,并在Hibernate.cfg.xml中指定映射文件路径l 创建Hibernate连接工具类4.3 在Hibernate中执行持久化操作的步骤1) 读取并解析配置文件,读取并解析映射文件,创建SessionFactory,打开sessionSession session=new Configuration().c

8、onfigure().buildSessionFactory().openSession();2) 开启事务(增删改必须)Transaction tx=session.beginTransaction();3) 持久化操作session.save(emp);4) 提交事务mit();5) 关闭sessionsession.close();4.4 实体对象的生命周期Ø 由产生到被GC回收的一段过程1) 自由状态(Transient)2) 持久状态(Persistent)3) 游离状态(Detached) 第五章 Hibernate关联映射及高级查询5.1 配置对象关联属性5.1.1对象

9、关联关系种类Ø 一对多(多对一)关联Ø 一对一关联Ø 多对多关联5.1.2 一对多(多对一)配置1) 删除外键2) 持久化类添加关联类的相关属性及getter/setter方法3) 映射文件中建立该属性和数据库表字段的映射信息<set name="emps" cascade="all" lazy="false"><key column="DNO"></key><one-to-many class="cn.wang.entity.Emp

10、" /></set><many-to-one name="dept" class="cn.wang.entity.Dept"column="DNO" lazy="false" />5.1.3 一对一配置<many-to-one name="resume" class="cn.wang.entity.Resume" unique="true" column="rid" lazy="f

11、alse"></many-to-one><one-to-one name="userInfo" class="cn.wang.entity.UserInfo"property-ref="resume" ></one-to-one>5.1.3 多对多配置Ø 创建中间表、两端数据库表的持久化类,针对中间表的持久化类分别和两端的数据库表的持久化类创建一对多的关联<set name="teas" table="tea_stu_temp"

12、 lazy="false" inverse="true"><key column="SNO"></key><many-to-many column="TNO" class="cn.wang.entity.Teacher" /></set><set name="stus" table="tea_stu_temp" cascade="all" lazy="false&qu

13、ot;inverse="false"><key column="TNO"></key><many-to-many column="SNO" class="cn.wang.entity.Student" /></set>5.2 HQL查询Ø 步骤:得到Session编写HQL语句创建Query对象执行查询,得到结果Ø 属性查询:直接指定属性:select eno,ename from Emp通过构造方法:select new Emp(eno,e

14、name) from EmpØ 实体更新:update Emp set ename=xxxwhere eno=10001Ø 实体删除:delete from Emp where eno=10001Ø 占位符:from Emp where eno=?Ø 命名参数:from Emp where eno=:enoØ 查询排序:默认升序:from Emp order by eno 指定降序:from Emp order by eno desc 升序 :ascØ 分页:Query接口提供的方法:setFirstResult(); setMaxR

15、esult();第六章 Criteria查询及命名查询6.1 Criteria查询概述Ø Criteria查询又称对象查询,采用对象的方式封装查询条件,并提供Restrictions等类型做辅助,是传统SQL的对象化表示:Criteria c=sesson.createCriteria(Emp.class);c.list();获取所有数据;Ø Restrictions限制结果集:按薪资降序:c.addOrder(Order.desc("salary");按编号查询:c.add(Restrictions.eq("dept.dno", d

16、no);按薪资区间查询c.add(Restrictions.between("salary", minSalary, maxSalary);查询指定属性:ProjectionList p = PjectionList();p.add(Property.forName("eno");p.add(Property.forName("ename");p.add(Property.forName("salary");c.setProjection(p);查询最高工资:c.setProjectio

17、n(Projections.max("salary");分页并排序:c.setFirstResult(pageIndex - 1) * pageSize); c.setMaxResults(pageSize); c.addOrder(Order.desc("salary");6.2 命名HQL查询Ø 修改相应的映射文件(与class标签并列):<query name=”aaa”><!CDATAHQL语句></query>Ø 在程序中使用session对象的getNamedQuery()方法获取在映射

18、配置文件中添加的HQL插叙语句Query query=session.getNamedQuery(“aaa”);6.3 本地sql查询String sql=”select e.* from Emp where e.ename=ccc”SQLQuery query=session.createSQLQuery(sql).addEntity(“e”,Emp.class)6.4 命名sql查询<sql-query name=”aaa”><!CDATASelect e.* from Emp e where e.ename=”nn”><return alias=”e” cl

19、ass=”cn.wang.entity.Emp”></sql-query>Query query=session.getNamedQuery(“aaa”);6.5 定制SQLclass节点下:<sql-insert>sql语句</sql-insert><sql-update>sql语句</sql-update>第七章 缓存与注解7.1 缓存简介7.1.1 缓存分类:l 一级缓存:Sessionl 二级缓存:SessionFactoryl 查询缓存:依赖于二级缓存7.1.2 缓存作用范围:与三类缓存一一对应l 事务范围l 进程范围

20、l 集群范围7.2 一级缓存作用:减少访问数据库的频率保证数据库中的相关记录与缓存中的相应对象保持同步7.3 二级缓存Ø 配置步骤:l 添加JAR包,ehcache-1.2.3.jar和commons-loging-1.1.1.jarl 添加ehcache.xml到src目录l 在Hibernate.cfg.xml中指定提供商和开启二级缓存l 配置实体类映射文件,class节点下添加<cache usage=”/>Ø 应用场景:l 很少被修改的数据l 不是很重要的数据,允许出现偶尔并发问题l 不会被并发访问的数据l 应用参考的常量数据。极少实例或从来不会被修改&

21、#216; 以下数据不适合放进二级缓存:l 经常被修改的数据l 财务数据l 与其他应用共享的数据7.4 查询缓存步骤:l 在Hibernate.cfg.xml中开启查询缓存l 在程序中手动启用查询缓存query.setCacheable(true);7.5 注解简介使用Hibernate注解步骤:l 添加jar包l 使用注解配置持久化类以及对象关联关系l 使用AnnotationConfiguration建立会话工厂Session session=new AnnotationConfiguration().configure().builSessionFactory().openSession

22、();l 在Hibernate配置文件中声明持久化类<mapping class=”cn.wang.entity.Emp”>7.6 命名查询NamedQuery(name = "getGradeByGno", query = "from Grade where gno>:gno")Query query=session.getNamedQuery(“getGradeByGno”);7.7 本地查询NamedNativeQuery(name = "getGrades", query = "select g.*

23、 from grade g where g.gno>:gno", resultSetMapping = "all")SqlResultSetMapping(name = "all", entities = EntityResult(entityClass = cn.wang.entity.Grade.class) )Query query = session.getNamedQuery("getGrades");Struts2框架第一章 Web前端与MVC1.1 初识jQueryØ jQuery是一个优秀的J

24、avaScript框架。它是轻量级的JavaScript库。Ø 宗旨:”Write Less, Do More”。Ø jQuery能满足如下需求:n 取得页面中的元素。n 修改页面的外观。n 改变页面内容。n 响应用户的页面操作。n 为页面添加动态效果。n 不需刷新页面即可从服务器获取信息。n 简化常见的JavaScript任务。Ø 常见JavaScript库:n prototype。n YUI。n ExtJS。n jQuery。Ø jQuery特色:n 利用css优势n 支持扩展n 抽象浏览器不一致性n 总算面向集合n 将多行操作集于一行1.2 jQu

25、ery基本语法1.2.1 准备工作Ø 下载jQuery库(jQ).Ø 在页面<head>元素中引入jQuery库<script type=”text/javascript” src=”js/jquery-xxx.min.js”/>1.2.2 jQuery对象及基本语法Ø $(this).hide():隐藏当前元素。Ø $(“p”).hide:隐藏所有<p>标签。Ø $(“p.test”).hide:隐藏所有class=”test”的<p>标签。Ø $(“#test”).hide:隐藏所有

26、id=”test”的元素。1.2.3 jQuery对象与DOM对象的区别与转换Ø $(“#test”);相当于document.getElementById(“test”);Ø $(“#test”).html(“新内容”);相当于document.getElementById(“test”).innerHTML=”新内容”;Ø DOM对象转为jQuery对象:$( document.getElementById(“test”);Ø jQuery对象转为DOM对象:$(“#test”).get(0);1.3 jQuery选择器及筛选1.3.1 元素选择器&

27、#216; $(“p”):选取页面中的<p>元素。Ø $(“#demo”):选取页面中id=”demo”的元素。Ø $(“.intro”):选取页面中class=”intro”的元素。1.3.2 属性选择器Ø 语法:attribute = value 。Ø 例1:$(“inputname=userName”):选取页面中name=”userName”的input元素。Ø 例2:$(“formname=regForm>inputname=userName”):选取name=”regForm”的<form>标签中,na

28、me=”userName”的input元素。1.3.3 jQuery筛选Ø $(“#demo”).children(exp):匹配ID为demo的元素的子元素集合。Ø $(“#demo”).find(exp):匹配ID为demo的元素的后代元素集合。Ø $(“#demo”).parent(exp):匹配ID为demo的元素的父元素集合。Ø $(“#demo”).parents(exp):匹配ID为demo的元素的上级元素集合。Ø $(“#demo”).siblings(exp):匹配ID为demo的元素的同辈元素集合。1.4 jQuery属性操

29、作、CSS操作和内容操作1.4.1 属性操作Ø 获取属性值:attr(name);Ø 修改属性值:attr(key , value);Ø 删除属性:removeAttr(name);1.4.2 CSS操作1)操作CSSØ 获取样式:css(name);Ø 修改单个样式:css(key , value)Ø 修改多个样式:css(key1:value1 , key2:value2.);2)操作类样式Ø 添加类样式:addClass(className);Ø 移除类样式:removeClass(className);1.

30、4.3 内容操作Ø 获取或设置HTML内容:html()、html(val)。Ø 获取或设置对象的值:val()、val(val)。Ø 追加内容:append(content)。Ø 删除节点:remove()。1.5 jQuery时间处理1.5.1 绑定事件Ø 语法:bind(type , fn); type-事件类型;fn-函数。Ø 例:<input type=”button” id=”btn” value=”提交”/>$(function()$(“#btn”).bind(“click” , function()aler

31、t(“测试”);););1.5.2 触发事件Ø 语法:trgger(type); type-触发事件的类型;Ø 例:<form id=”regForm”><input type=”text” name=”userName” /><input type=”button” id=”btnSubmit” value=”提交” /></form>$(function()$(“# btnSubmit”).bind(“click” , function()$(“#regForm”).trigger(“submit”); /可以替换为:$(

32、“#regForm”).submit(); ); );1.5.3 绑定活动事件Ø 语法:live(type , fn); type-事件类型;fn-函数。1.6 jQuery效果1.6.1 显示隐藏效果 1)显示效果语法:show(speed , callback);Ø speed:动画时长(毫秒),取值有:slow、fast、normal。Ø callback:指定的回调函数(动画执行完毕,执行函数)。2)隐藏效果语法:hide(speed , callback);1.6.2 滑动效果原理:改变对象的高度、透明度及显示状态。1)向上滑动效果:slideUp(sp

33、eed , callback);2)向下滑动效果:slideDown(speed , callback);1.6.3 淡入淡出效果1)淡入效果语法:fadeIn(speed , callback);2)淡出效果语法:fadeOut(speed , callback);1.6.4 自定义动画语法:animate(params , duration , callback );Ø params:要实现的最终状态,指css效果。n Json对象:font-size:16px , Ø duration:执行动画所用的时间(毫秒)。Ø callback:执行完动画之后要执行的

34、函数。1.7 jQuery Ajax请求1.7.1 $.post( )方法语法:$.post(url , data , callback);Ø url:用户要请求的页面地址。Ø data:要发送的数据。Ø 执行完Ajax请求后要回调的函数。1.7.2 其他方法Ø $.get(url , data , callback);Ø $.load(url , data , callback);Ø $.getJSON(url , data , callback);Ø $.getScript(url , callback);Ø

35、$.ajax(options)。第二章 Struts2基础2.1 Struts2简介Struts2是基于WebWork和Struts 1的MVC框架,优点:Ø 架构清晰,使开发者只关注业务逻辑实现即可;Ø 提供了丰富的标签,大大提高了开发效率;Ø 提供页面导航,通过配置文件把握整个系统各个部分之间的联系,便于后去维护;Ø 不在依赖Servlet API,便于测试。2.2 搭建Struts2开发环境2.2.1 下载Struts2网址:/download.cgi.Ø apps:包含了基于Struts2的

36、事例应用。Ø docs:帮组文档。Ø lib:核心类库和第三方插件类库(jar包)。Ø src:源代码2.2.3 搭建Struts2开发环境的步骤1)在项目中导入Struts2必须jar包:Ø commons-fileupload-1.2.2.jar:Struts文件的上传和下载。Ø commons-io-2.0.1.jar:文件读取。Ø commons-lang3-3.1.jar:为java.lang包提供扩展。Ø freemarker-2.3.19.jar:模板引擎。Ø ognl-3.0.5.jar:支持OGN

37、L表达式。Ø Struts2-core-.jar:Struts2核心包。Ø xwork-core-.jar:xwork核心包。Ø Javassist-3.11.0.GA.jar:分析、编辑和创建Java字节码的类库。2)修改web.xml配置文件。(<web-app>节点下)<!Struts2核心控制器 -><filter><filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.disp

38、atcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>Struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>3)添加struts.xml配置文件到src目录下<?xml version="1.0" encoding="UTF-8"?&

39、gt;<!DOCTYPE struts PUBLIC"-/Apache Software Foundation/DTD Struts Configuration 2.3/EN""/dtds/struts-2.3.dtd"><struts></struts>2.3 Action类的实现方法1)使用普通的Java类,编写public String execute()方法。2)实现Action接口,实现execute()方法。3)继承ActionSupport类,重写execut

40、e()方法。有点:Ø 不需要强制实现execute()方法。Ø 自带验证方法validate().2.4 Action接收参数的三种实现方式1)属性方式接收参数。Ø 在Action中定义属性来接收客户端上传的参数,并提供getter和setter方法,jsp页面中用属性名表示2)JavaBean方式接收参数Ø 用java实体类封装属性信息,在Action中定义实体类对象为属性,并提供gtter和setter方法,jsp页面用 对象.属性名。3)ModelDriven方式接收参数Ø 用java实体类封装属性信息,在Action中实现ModelDr

41、iven接口,实例化实体类,调用getModel()方法,返回实体类对象,jsp页面直接用属性名。2.5 <result>的配置1)result的name属性Ø SUCCESS:Action执行成功,显示结果视图给用户。Ø NONE:Action执行成功,不显示结果视图给用户。Ø ERROR:Action执行失败,显示错误页面给用户。Ø INPUT:执行Action需要更多的输入信息,回到INPUT对应的页面。Ø LOGIN:因用户没有正确登录而没有正确执行,将返回改登录试图。2)result的type属性Ø dispat

42、cher:请求转发到指定的URL。Ø redirect:请求重定向到指定的URL。Ø redirectAction:请求重定向到指定的Action。Ø chain:Action链式处理,请求转发到指定的Action。Ø json:实现Ajax时,返回JSON对象。2.6 全局结果配置<global-results><result name="error" type="redirect">/login.jsp</result></global-results>第三章OG

43、NL和Struts2标签3.1 访问session作用域的三种方法3.1.1 使用ActionContext访问Servlet APIMap<String,Object> session=ActionContext.getContext().getSession();3.1.2 以IoC方式访问Servlet API3.1.3 以耦合方式访问Servlet APIHttpSession session=ServletActionContext.getRequest().getSession();3.2 OGNL表达式Ø 导入taglib指令:<%taglib uri

44、=”/struts-tags” prefix=”s” %>Ø 在页面中获取并输入Action属性:<s:property value=”userName” />Ø 在页面中获取并输出session中保存的数据:<s:property value=”#session.userName” />Ø OGNL表达式具有以下功能和特点:l 能存取对象的属性,也能调用对象的方法。l 能访问静态方法、静态属性。l 能访问值栈及Stack Context。l 能操作集合对象。l 支持赋值、运算操作、字段类型转化。3.3 Struts2标签3.1.1数

45、据标签Ø 添加taglib指令:<%taglib uri=”/struts-tags” prefix=”s” %>Ø 主要作用是对各种数据访问的相关功能1)<s:property>:用来输出值栈和Stack Context中所有能访问的值。Ø value:用来获取值的OGNL表达式。(输出字符串<s:property value=”Hello”/>)Ø defualt:默认输出内容。Ø escapeHtml:是否转义HTML,默认取值为true。2)<s:debug>会在页面生成一个链接,单击这个

46、链接可以查看值栈和Stack Context中所能访问的值,常用于程序排错。3)<s:date>:用于格式化输出一个日期。Ø name:被格式化的值,必须设置,本身是一个OGNL表达式。Ø format:用于指定日期显示的格式,如:yyyy-MM-dd HH:mm:ss。Ø <s:date name=”house.addDate” format=”yyyy-MM-dd” />4)<:set>:可以对设置的表达式求值,并将结果赋值给特定作用域的某个变量,简单的说,就是定义一个变量,并赋值。Ø var:变量名。Ø

47、 value:设置给变量的值,可以是常量和OGNL表达式。Ø scope:变量的生存周期。Ø <s:set var=”streetName” value=”street.streetName” scope=”session” />5)<:url>:用来生成一个URLØ var:该URL的引用名称,如果指定这个属性,则不会再页面生成字符串。Ø action:要访问的Action的名称。Ø value:要访问的目标,不过不提供action,就用value作为URL的地址值。6)<s:a>:用来生成HTML的<

48、;a>标签。<s:a href=”>百度</s:a>Ø href可以是字符串常量,也可以是OGNL表达式。7)<s:param>:用来为其他标签添加参数化设置。8)<s:include>:可以把其他页面包含到当前页面上<s:include value=”include.jsp”/>3.1.2 控制标签Ø 主要用来完成流程控制1)<s:if>、<s:elseif>和<s:else>Ø <s:set name=”score” value=”80” />&#

49、216; <s:if test=”#score>=90” >尖子生</s:if>Ø <s:elseif test=”score>=60” />普通学生</s:elseif>Ø <s:else>差生</s:else>2)<s:iterator>:主要用于对集合实现循环访问功能。Ø value:被循环访问的集合,OGNL表达式。Ø var:变量名称,用来引用当前循环访问的集合元素。Ø status:返回当前循环的各种信息。u count:集合含有多少个对

50、象。u index:正在循环的这一项的索引。u even:当前遍历到的对象是否处于列表的偶数索引位置。u odd:当前遍历到的对象是否处于列表的奇数索引位置。3.1.3 UI标签Ø 用来生成UI界面,或者为Web提供某些功能支持。基于模板和主题。1)<s:form>:对应HTML的<form>,用于向服务器端提交数据。Ø name:表单的名称。Ø action:处理改表单数据的URL。Ø method:提交方式。2)<s:textfield>:单行文本框。Ø name:文本框名称。Ø value:文

51、本框中显示的文字。Ø maxlength:文本框中的最大字符数。Ø readonly:是否为只读。3)<s:textarea>:多行文本域。Ø name:文本域名称。Ø value:文本域中显示的文字。Ø cols:文本域的宽度,以字符数表示。Ø rows:文本域的高度,以字符行数表示。Ø readonly:是否为只读。4)<s:submit>:提交表单按钮。Ø value:按钮上显示的文字。5)<s:select>:用于生成一个下拉框。Ø name:下拉框名称。

52、16; list:生成下拉框的集合。Ø listKey:生成下拉框的value属性。Ø listValue:生成下拉项显示的文字。Ø <s:select name=”houseType” list=”typeList” listKey=”typeId” listName=”typeName”/>6)<s:doubleselect>:生成两个联动的下拉框。Ø name/doubleName:第一个/第二个下拉框的名称。Ø list/doubleList:生成第一个/第二个下拉框集合。Ø listKey/doubl

53、eListKey:生成第一个/第二个下拉框的选项的value属性。Ø listValue/doubleListValue:生成第一个/第二个下拉框的选项显示的文字。3.1.4 Ajax标签datetimepicker是一个日历控件,使用步骤如下:1) 在项目中引入struts2-dojo-plugin-.jar。2) 导入<% taglib uri=”/struts-dojo-tags” prefix=”sx” %>3) 在<head>中添加<sx:head parseContent=”true” />。4) 添加标签<sx:

54、datetimepicker name=”timer” label=”发表时间” />3.4 使用ActionSupport编码实现验证3.4.1 在Action类的业务方法中直接验证。Action类的execute方法中:/ 验证用户名if(null=user.getUserName()this.addFieldError(“user.userName”,”用户名不能为空”);3.4.2 重写validate()方法实现验证。Overridepublic void validate()/ 验证用户名if(null=user.getUserName()this.addFieldError

55、(“user.userName”,”用户名不能为空”);3.4.3 使用validateXxx()方法实现验证。/ 验证注册方法public void validateRegister()/ 验证用户名if(null=user.getUserName()this.addFieldError(“user.userName”,”用户名不能为空”);3.5 使用验证框架实现验证1)编写jsp数据输入页面。2)编写Action类及其配置文件。3)在与Action同级目录下创建文件ActionName-validation.xml,其中ActionName与要验证的Action类名相同。5) 编写验证规

56、则。第四章 拦截器和文件上传4.1 使用Java实现国际化Ø 国际化是指应用程序运行时,可以根据客户端中设置的国家/地区、语言的不同,而在界面上显示不同的语言4.1.1 Java中内置的国际化支持Ø 获取Java所支持的地区/语言的代码:Locale locales=Locale.getAvailableLocales ( );for(Locale locale : locales)for(Locale l : locales)/返回该语言环境的国家或地区名及代码System.out.print(l.getDisplayCountry()+” ”+l.getCountry(

57、);/返回该语言环境的语言名称及代码System.out.println(l.getDisplayLanguage+” ”+l.getLanguage();4.1.2 JSP页面的国际化1)添加语言资源文件。2) 配置资源文件的引用(两种方式)。a) 在struts.xml中配置:<constant name=”struts.custom.i18n.resources” value=”wdz” />b) 在perties中配置:struts.custom.i18n.resource=wdz。3)在JSP页面输出资源文件中的内容。<s:text name=”

58、key”/>4.1.3 Action类的国际化1)继承ActionSupport。2)使用getText(String key)方法获取资源文件内容。public String execute()addActionMessage(getText(“userName”);return SUCCESS;4.2 拦截器简介以Action接收参数和实现数据效验为例,简单说明拦截器的工作原理:Ø Struts2接收到请求后,创建Action的实例,此时Action中还没有接收上传的参数,也没有对参数进行验证。Ø Struts2运行名称为params的拦截器,把请求中附带的参数转存到Action的属性中。Ø Struts2再运行名称为va

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论