struts2+spring+hibernate期末复习资料由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“struts2框架期末试卷”。
第一章
STRUTS2入门
1.MVC:(jsp+servlet+javabean)
V: view 视图层,jsp,用于界面显示
C:controller 控制层,servlet实现,用于处理请求和界面转发等等。
M:model 模型层, dao、pojo实现,用于进行数据处理
【注意】实际项目环境下,会根据需要在MVC三成架构基础上封装更多的层
优点:方便项目维护,便于分工协作,例如不同的人开发不同的层。
2.Struts2框架是一个实现MVC框架,核心是xwork,使用拦截器处理请求。
struts2对MVC的实现主要在两个方面:
(1)V:view视图,struts2提供标签库。
(2)C:controller控制器,struts2提供核心控制器和业务逻辑控制器。3.struts2案例:helloworld
具体步骤:
(1)创建java web项目,添加struts2的jar包(参考struts2-blank.war)
(2)在web.xml中配置struts2核心控制器(是过滤器)
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAn…..struts2 /*
(3)编写业务逻辑控制器HelloAction,编写public String execute()方法
(4)创建strtus2的配置文件struts.xml, 放在项目src下。(参考struts2-blank.war)
(5)在struts.xml中配置业务逻辑控制器
转向到的页面url
4.strust2案例: 登陆案例
【注意点】
LoginAction中私有属性的名字要和login.jsp中表单元素的名字一致,那么表单提交时,表单元素的值会自动通过set方法给LoginAction的属性赋值。
第二章
Action访问ServletAPI 1.action类中获取request、seion、application等对象的方法
【三种方法】
(1)通过ActionContext类获取 【推荐使用】
ActionContext context=ActionContext.getContext();
Map request=(Map)context.get(“request”);
Map seion=context.getSeion();
Map application=context.getApplication();
【注意】 struts2将request、seion、application封装成Map对象,放值的时候调用put(“参数名”,参数值);
(2)通过ServletActionContext类,可以获取最原始的request(HttpServletRequest),seion(HttpSeion)、application(ServletContext)
通过静态方法获取request、application、response
HttpServletRequest request=ServletActionContext.getRequest();
HttpSeion seion=request.getSeion();【注意】这种方式获取request等对象,和servlet 的api耦合度高,不建议使用。
(3)通过实现接口,在action类中获取servlet api
【推荐使用】
action类根据需要使用的对象,实现对应的接口RequestAware、SeionAware、ApplicationAware
【注意】当请求某个业务控制器action的时候,struts2的拦截器分析你的action类,如果实现了RequestAware接口,会自动创建request对象。并通过调用setRequest方法给action类中的request属性赋值。其他的对象(seion、application)处理方法类似。2.struts.xml中配置页面转发方式
默认转发方式为请求转发“dispatcher”,请求重定向将type属性改为:redirect
/...第三章 struts2的标签库
1.使用方法:添加了struts2的jar包后,可以直接在jsp页面中通过<%@taglib >指令导入使用。
<%@ taglib prefix=“s” uri=“/struts-tags” %>
2.struts2标签分类:
(1)UI标签:表单标签(了解)
(2)非UI标签:数据标签、流程控制标签(掌握)struts2标签特点:
(1)表单数据回显
(2)对页面进行布局和排版
【总结】由于struts2的UI标签自带排版,不方便根据要求修改布局,实际使用较少。
第四章
ognl表达式的使用
1.ognl: 对象图导航语言,struts2中表达式语言
特点:通常和struts2数据标签、控制标签配合使用
用途:(1)在jsp页面进行数据获取、显示
(2)调用类中静态字段、调用静态方法、调用普通方法
1>普通方法:
2>静态字段或静态方法:
(3)获取数组、list、map、set等中的元素
list、数组通过下标访问
set不能通过下标访问
map:通过key,获取value 2.struts2的ognl原理:
ActionContext:action上下文,是页面之间进行传递数据的共享数据区。
ActionContext包含两种数据区:
(1)ValueStack:值栈(根对象),存放action对象及属性值
【特点】a.根对象中的值直接访问即可
b.值栈中action对象在同一个请求request中可以访问。(生命周期:同request一样)
(2)StackContext:stack上下文(非根对象),包含五个对象:
1>application: 用户获取application作用域中的值
2> seion: 用于获取seion作用域中的值
3> request:用于获取request作用域中的值
4> attr:依次从page、request、seion、application四个范围中获取对象
5> parameters:获取http请求的参数(例如表单提交的数据,url传参),作用等价于request.getParameter(“参数名”);
【特点】使用五个非根对象时,前面加# 3.ognl表达式配合struts2的数据标签使用
(1)
value=“输出的值” default=“默认值”/>
作用:用于获取并输出值栈ValueStack、Stack上下文中的值
第五章
struts2的数据标签
1.作用:输出值(值栈、stackContext,字符串常量(需要加单引号))到页面上。
2.作用: 创建指定的javabean类的对象,两种形式:
1》无名的对象:不指定var属性。
自动放到值栈栈顶,遇到,自动移除。
2》有名的对象:指定var属性
会将带名字的javabean对象放到stackContext数据区中,访问方式:#对象名.属性名
3.作用:和其他标签如bean配合使用,用于给参数赋值。
4.作用:将对象或值起别名后,放到指定的范围中。
【注意】如果不指定scope,默认是放在action范围,实际上是request。
放到action范围的对象或值,可以直接通过#访问.例如:
访问:
第六章 struts2类型转换
1.struts2内置类型转换功能
内置类型转换器:实现字符串和boolean、int、long、double、数组、集合类等类型进行自动转换
通过parameters拦截器实现。
2.程序员自建的类型转换器(了解)
步骤:
(1)创建转换器类:继承StrutsTypeConverter类,重写两个抽象方法(convertFromString、convertToString)。
(2)创建配置文件:命名:action类名-conversion.properties,和action类放到同一个包下。
文件内容: 被转换的action类中属性名=转换类完整名(包.类)
第七章 struts2的输入校验域验证框架
struts2实现校验的两种方式 1.手工编写代码校验
步骤:
(1)action类必须继承ActionSupport类
(2)重写ActionSupport类的validate方法。
在调用execute方法之前,会自动调用validate方法进行校验。
【validate方法中添加错误信息】
this.addFieldError(“fieldName”,“错误信息”);
(3)validate方法校验的错误信息显示处理:
在jsp页面使用:
显示指定的文本框的错误信息。
【注意】如果使用struts2验证,必须在配置action时候,添加:/物理视图(jsp)
【验证同一个action类中多个方法】
每一个方法都需要创建一个validate方法进行验证。命名规则:validate被验证的方法名: 例如:validateAddPro();手工校验:优点:根据需要进行任意校验
缺点:编写代码多
2.使用xml配置文件校验(校验框架)
步骤:
(1)创建校验的配置文件:
和被校验的action类放在同一个包下:
命名规范:action类名-validation.xml
文件内容参考:strtus2的开发包中的样例项目:struts2-black.war
(2)在校验的xml文件中针对每个字段(文本框)编写校验规则。
(3)显示错误信息:
通过在配置action时候,需要添加校验错误后跳转的页面 错误信息在页面中相应字段的中显示。