第一章 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核心控制器(是过滤器)
(3) 编写业务逻辑控制器HelloAction,编写public String execute()方法
(4) 创建strtus2的配置文件struts.xml, 放在项目src下。(参考struts2-blank.war) (5) 在struts.xml中配置业务逻辑控制器
4. strust2案例: 登陆案例 【注意点】
LoginAction中私有属性的名字要和login.jsp中表单元素的名字一致,
那么表单提交时,表单元素的值会自动通过set方法给LoginAction的属性赋值。
第二章 Action访问ServletAPI
1. action类中获取request、session、application等对象的方法 【三种方法】
(1)通过ActionContext类获取 【推荐使用】
ActionContext context=ActionContext.getContext(); Map request=(Map)context.get(\ Map session=context.getSession();
Map application=context.getApplication();
【注意】 struts2将request、session、application封装成Map对象,放值的时候调用put(\参数名\参数值);
(2)通过ServletActionContext类,可以获取最原始的
request(HttpServletRequest),session(HttpSession)、application(ServletContext) 通过静态方法获取request、application、response
HttpServletRequest request=ServletActionContext.getRequest(); HttpSession session=request.getSession();
【注意】这种方式获取request等对象,和servlet 的api耦合度高,不建议使用。 (3)通过实现接口,在action类中获取servlet api 【推荐使用】
action类根据需要使用的对象,实现对应的接口RequestAware、SessionAware、ApplicationAware
【注意】当请求某个业务控制器action的时候,struts2的拦截器分析你的action类,如果实现了RequestAware接口,会自动创建request对象。并通过调用setRequest方法给action类中的request属性赋值。其他的对象(session、application)处理方法类似。 2.struts.xml中配置页面转发方式
默认转发方式为请求转发\请求重定向将type属性改为:redirect
第三章 struts2的标签库 1.使用方法:添加了struts2的jar包后,可以直接在jsp页面中通过<%@taglib >指令导入使用。 <%@ taglib prefix=\ 2. struts2标签分类: (1) UI标签:表单标签 (了解) (2) 非UI标签:数据标签、流程控制标签 (掌握) struts2标签特点: (1)表单数据回显 (2)对页面进行布局和排版 【总结】由于struts2的UI标签自带排版,不方便根据要求修改布局,实际使用较少。 第四章 ognl表达式的使用 1. ognl: 对象图导航语言,struts2中表达式语言 特点:通常和struts2数据标签、控制标签配合使用 用途:(1 )在jsp页面进行数据获取、显示 (2)调用类中静态字段、调用静态方法、调用普通方法 1>普通方法: 2>静态字段或静态方法: ActionContext:action上下文,是页面之间进行传递数据的共享数据区。 ActionContext包含两种数据区: (1)ValueStack:值栈(根对象),存放action对象及属性值 【特点】a. 根对象中的值直接访问即可 b. 值栈中action对象在同一个请求request中可以访问。(生命周期:同 request一样) (2)StackContext:stack上下文(非根对象),包含五个对象: 1>application: 用户获取application作用域中的值 2> session: 用于获取session作用域中的值 3> request:用于获取request作用域中的值 4> attr:依次从page、request、session、application四个范围中获取对象 5> parameters:获取http请求的参数(例如表单提交的数据,url传参),作用等价于request.getParameter(\参数名\ 【特点】使用五个非根对象时,前面加# 3. ognl表达式配合struts2的数据标签使用 (1) 第五章 struts2的数据标签 1. 作用:输出值(值栈、stackContext,字符串常量(需要加单引号))到页面上。 2. 作用: 创建指定的javabean类的对象,两种形式: 1》无名的对象:不指定var属性。 自动放到值栈栈顶,遇到,自动移除。 2》有名的对象:指定var属性 会将带名字的javabean对象放到stackContext数据区中,访问方式:#对象名.属性名 3.