J2EE复习资料.docx
- 文档编号:15411497
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:23
- 大小:885.06KB
J2EE复习资料.docx
《J2EE复习资料.docx》由会员分享,可在线阅读,更多相关《J2EE复习资料.docx(23页珍藏版)》请在冰点文库上搜索。
J2EE复习资料
Struts2:
1、第一章Struts入门:
【复习点】struts2的工作流程。
struts2是MVC框架,并作出说明。
1.struts2的工作流程:
1>浏览器端发出请求给核心拦截器(StrutsPreparedAndExecuteFilter),核心拦截器会从struts.xml中找到与请求匹配的Action组件
2>Action组件处理请求(调用Model层处理业务逻辑),根据处理的结果返回逻辑视图名。
3>核心拦截器会从struts.xml中找到与逻辑视图名匹配的物理视图名,进而返回到浏览器端。
、
2.Struts2框架是MVC框架。
M:
Model,业务逻辑层。
javaBean对象来担当。
V:
View,视图层。
jsp\css\js\html来担当。
C:
Controller,控制器层。
StrutsPreparedAndExecuteFilter\struts.xml\Action来担当。
3创建action的三种方式
1>无需实现任何的接口或继承任何类,只需添加publicvoidexecute()处理即可
2>实现Action接口;
3>继承ActionSipport;
2、第二章Action访问servletAPI
【复习点】Action访问servletAPI(jsp内置对象中的request、session和application)的常用方法。
复习ActionContext、ServletActionContext类的使用。
【复习点】:
创建Action有几种方式?
项目中常用的创建Action的形式是什么,在Action中能够使用的Action接口中的常量是什么?
【复习点】:
一个Action处理多个业务,有哪几种方式可以完成指定方法的调用
2>怎么访问ServletApi?
ServletApi:
HttpServletRequest,HttpSesion,ServletContext
1》方法一:
通过ActionContext类
Struts2将ServletApi:
HttpServletRequest,HttpSesion,ServletContext,分别封装成3个Map对象。
Action通过访问这3个Map对象,完成完成SerlvetApi
优点:
Action不会和ServletAPI耦合在一起,提高软件的维护性
具体方法:
//获取request的Map对象:
publicObjectget(“request”);
//获得封装了HttpSession的Map对象
publicMapgetSession()
publicMapgetApplication()
//获取封装了ServletContext的Map对象
//存放值:
通过Map中的put方法,完成存放值到request,session,application中。
案例:
完善登录功能:
如果登录成功则迁移到index.jsp界面上,显示欢迎你,****。
如果登录失败,则迁移到login.jsp上显示错误信息。
2》方法二:
通过ServletActionContext访问到ServletApi:
HttpServletRequest,HttpSesion,ServletContext
缺点:
Action会和ServletAPI耦合在一起,软件的维护性不好
具体方法:
publicstaticHttpServletRequestgetRequest()
得到HttpServletRequest对象
[注意]:
得到Session对象的方法:
HttpServletRequest.getSession();
publicstaticHttpServletResponsegetResponse()
得到HttpServletResponse对象
publicstaticServletContextgetServletContext()
得到ServletContext对象
案例:
完善登录功能:
如果登录成功则迁移到index.jsp界面上,显示欢迎你,****。
如果登录失败,则迁移到login.jsp上显示错误信息。
3》方法三:
编写Action类实现RequestAware\SessionAware\ApplicationAware接口。
【推荐项目中使用】
寻找Action组件中的自定义的方法的方式:
方法一:
动态调用方法。
语法:
在jsp界面上发出请求:
loginAction!
login
struts.xml中的配置:
方法二:
【推荐使用】
在jsp界面上发出请求:
loginAction
struts.xml中的配置:
3、第三章struts2标签—表单标签及fielderror标签
【复习点】:
熟悉表单标签中有哪些标签
会判断是否是struts标签
4、第四章OGNL表达式的使用
【复习点】:
怎么用OGNL表达式完成对象图的遍历。
怎么编写OGNL表达式。
OGNL表达式的作用。
1.OGNL概念:
OGNL的全称是ObjectGraphNavigationLanguage(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。
2.OGNL的增强原理:
Strut2中提供了数据共享区,完成界面和Action的数据交互。
数据共享区:
ActionContext,也是Action中OGNL的上下文。
具体数据共享区的结构:
值栈:
存放OGNL的根对象。
如访问的Action对象。
且当前访问的Action对象永远存放在栈顶。
OGNL表达式:
访问值栈中的属性的方法:
Action中的属性名。
不用添加根对象的名称。
如user.username'
OGNL表达式:
访问非根对象的属性的语法为:
#key
访问request\session\application中的属性。
request对象:
用于访问HttpServletRequest属性,例如,【#request.name】相当于调用HttpServletRequest对象的getAttribute("name")方法
session对象:
用于访问HttpSession对象,例如,【#session.name】相当于调用HttpSession对象的getAttribute("name")方法
application对象:
用于访问ServletContext对象,例如,【#application.name】相当于调用ServletContext的getAtrribute("name")方法
案例:
在UserAction中的insertUser方法中向request、session、application中存放属性,迁移到insertUser.jsp界面上取出。
OGNL:
访问Action中的属性为数组、List、Set、Map集合等的元素。
具体语法:
访问数组元素:
array[0]
访问List元素:
{'name1','name2'}[0]
访问map元素:
mymap[‘key’]或者mymap.key
访问set中元素:
userSet
选择和投影:
验证访问数组的值
propertyvalue="array[0]"/> 验证访问List的值 propertyvalue="nameList[0]"/> 验证访问Map的值 propertyvalue="salayMap.zhangsan"> property> 验证访问Set的值 propertyvalue="s1"/> 测试投影,取出userList中所有对象的相同属性的值组成的集合 propertyvalue="userList.{username}"/> 测试选择,取出userList中符合条件的对象组成的集合 propertyvalue="userList.{? #this.userId>1}"> property> propertyvalue="userList.{^#this.userId>1}"> property> propertyvalue="userList.{$#this.userId>1}"> property> 5、第五章struts2标签—数据标签、控制标签 【复习点】: 数据标签、控制标签中有哪些 【复习点】: s: if/s: else/s: elseif,s: s: set;s: iterator。 详见以前案例。 1.数据标签: s: set,s: bean,s: property,s: param 测试property标签 propertyvalue="'username'"/> propertyvalue="username"default="zhangsan"> property> 测试bean标签,如果var不指定,则创建的JavaBean对象放在值栈的栈顶 beanname="com.inspur.entity.Person"> paramname="name"value="'zhangsan'"> param> paramname="age"value="18"> param> 姓名: propertyvalue="name"/> 年龄: propertyvalue="age"/> bean> 测试bean标签,如果var指定,则创建的JavaBean对象放在非值栈的actionContext中 beanname="com.inspur.entity.Person"var="p"> paramname="name"value="'zhangsan'"> param> paramname="age"value="18"> param> bean> 姓名: propertyvalue="#p.name"/> 年龄: propertyvalue="#p.age"/> 测试set标签,设置值到某个范围中.scope如果不指定,则变量放在非值栈区ActionContext,如果指定则放在指定的范围中 setvar="p1"value="#p"> set> propertyvalue="#p1.name"/> propertyvalue="#p1.age"/> setvar="p2"value="#p"scope="session"> set> propertyvalue="#session.p2.name"> property> propertyvalue="#session.p2.age"> property> 2: 控制标签s: if/s: elseif/s: else setvar="score"value="99"> set> iftest="#score<60"> 不及格 if> elseiftest="#score>=60&score<80"> 及格 elseif> elseiftest="#score>=80&score<90"> 及格 elseif> else> 优 else> 3: 迭代标签: s: iterator <% //测试list ListnameList=newArrayList(); nameList.add("tom"); nameList.add("lucy"); request.setAttribute("nameList",nameList); ListuserList=newArrayList(); userList.add(newUser("1","张三","123")); userList.add(newUser("2","李四","22")); userList.add(newUser("3","王五","32")); request.setAttribute("userList",userList); //测试Map MapsalaryMap=newHashMap(); salaryMap.put("tom",20000); salaryMap.put("jerry",10000); request.setAttribute("salaryMap",salaryMap); %> <%--遍历nameList--%> iteratorvalue="#request.nameList"> property/> iterator> iteratorvalue="#request.nameList"var="name"status="sta"> propertyvalue="#sta.index"> property> propertyvalue="#sta.odd"> property> propertyvalue="#sta.even"> property> propertyvalue="#sta.first"> property> propertyvalue="#sta.last"> property> propertyvalue="#name"> property> iterator> <%--遍历用户信息--%> 用户ID 用户名 用户密码 iteratorvalue="#request.userList"var="user"> propertyvalue="#user.userId"> property> propertyvalue="#user.username"> property> propertyvalue="#user.password"> property> iterator> 用户姓名 工资 iteratorvalue="#request.salaryMap"var="map"> propertyvalue="#map.key"/> propertyvalue="#map.value"/> iterator> 6、第七章struts2输入校验与校验框架 【复习点】: 有几种形式可以完成校验,分别是什么。 手动校验和框架校验 Hibernate: 1、第一章Hibernate入门 【复习点】: Hibernate优点、对象关系映射(ObjectRelationalMapping,简称ORM)、Hibernate的工作原理或者工作步骤;Hibernate的第一个入门案例 1.Hibernate简介: 2.Hibernat优点 3.ORM(对象关系映射ObjectRelationalMapping) 4.Hibernate开发步骤 步骤: 1>放置jar包 2>.创建持久化对象 3>创建*.hbm.xml. 注意: 文件名: 实体类名.hbm.xml.位置: 和对应的实体类放在同一包下 写的内容: 类--》表名 类中的属性---》表中的字段 4>配置hibernate.cfg.xml: 放到src下 5>测试: com.inspur.client.ExportDB.java 2、第二章Hibernate的核心API 【复习点】: Hibernate的核心API有哪些? session接口中的常用方法的使用详见详见以前案例 1>.configuration: 简介: Configuration类负责管理Hibernate的配置信息。 它包括如下内容: Hibernate运行的底层信息: 数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等 Hibernate映射文件(*.hbm.xml) 代码: Configurationcfg=newConfiguration().configure(); 2>.SessionFactory: 简介: 应用程序从SessionFactory(会话工厂)里获得Session(会话)实例。 特点: 它在多个应用线程间进行共享;整个应用只有唯一的一个会话工厂;配置一个数据库,需要配置一个Session-factory 代码: SessionFactorysessionFactory=cfg.buildSessionFactory(); 3>.Session: 简介: Session也称为持久化管理器,因为它是与持久化有关的操作接口。 特点: Session不是线程安全的,它代表与数据库之间的一次操作,它的概念介于Connection和Transaction之间。 ;它与Web层的HttpSession没有任何关系。 ;Session通过SessionFactory打开,在所有的工作完成后,需要关闭。 代码: Sessionsession=sessionFactory.openSession(); 4>.Transaction: 简介: 事务处理; 代码: Transactiontx=session.beginTransaction();默认: autoCommit=false [优化程序: ] 3.session中的方法: save(): update(): saveOrUpdate(): delete(): get() 按照主键值进行查询 特点: 1》发出sql的时机? session.get()执行完就发出select子句,进行数据库查询 2》判断记录是否存在? 判断返回的对象是否为null load(): 支持懒加载机制。 懒加载机制: 当访问实体对象的属性时,才去发出sql,查询数据。 按照主键值进行查询 特点: 1》发出sql的时机? 当访问实体对象的属性时,才去发出sql,查询数据。 2》判断记录是否存在? 报出异常: org.hibernate.ObjectNotFoundException: Norowwiththegivenidentifierexists: [com.inspur.domain.News#31 4.Query: 查询接口,执行hql语句,hql语句面向的是类名和属性名 功能: 查询所有的新闻: hql: fromNews; 代码: com.inspur.tests.TestNews.java 3、第三章操纵持久化对象 【复习点】: 持久化对象的状态有哪些,特点是什么,判断语句中某个对象处于的状态。 持久化对象的特征: 【由session管理管理吗? 】 【数据库中有对应的记录吗? 】 【对象的状态更新会同步到数据库吗? 】 瞬态: *对象由new操作符创建。 *不由session管理 *数据库中没有对应的记录 持久化: *由session管理 *数据库中有对应的记录 *对象的状态更新会同步到数据库 脱管(或游离状态): *不由session管理 *数据库中有对应的记录 *对象状态的更新不会同步到数据库中 ===注意: 完成新闻的修改: 推荐用的方法: Newsnews=(News)session.get(News.class,83);//持久化状态 news.setNewsTitle("发布新闻了...");//持久化状态 4、第四章Hibernate映射文件 【复习点】: *.hbm.xml中,Hibernate映射文件结构
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 复习资料