struts2_入门
来源:互联网 发布:蜘蛛侠英雄归来 知乎 编辑:程序博客网 时间:2024/06/06 03:58
Struts2
概述
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
常用的WEB层框架
- Struts1
- WebWork
- Struts2
- SpringMVC
前端控制器模式
Struts入门环境搭建
1.环境下载
struts下载地址
- apps目录: struts的Demo案例
- docs目录: struts的文档
- lib目录: struts的开发jar包
- src目录: struts的源码
2. 导入jar
struts的jar比较多
可以从Struts官方提供的demo中拿到必要的jar就行
3. 前端控制器配置
<filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
其实就是在web.xml中配置struts2的filter
4. 编写Action类
public class TutorialtAction { public void start() { System.out.println("Hello Struts!"); }}
5. 配置struts.xml文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="tutorial" method="start" class="org.itheima.struts.action.TutorialtAction"> </action> </package></struts>
注意:
- struts.xml文件名不可随意取,必须叫做struts.xml
- struts.xml必须放在src类路径下
6. 编写访问页面,进行测试
http://localhost:8080/01_start/tutorial.action
注意:
- 访问的url和struts.xml中配置的action标签间的联系
- struts.xml中配置的aciton标签和Action类中的方法的联系
Struts2的运行流程
前端控制器:Filter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
控制器启动的加载项
init_DefaultProperties()。默认的properties配置。
org/apache/struts2/default.properties
默认的配置加载项,struts2启动时加载的默认参数
init_TraditionalXmlConfigurations()。传统的xml配置。
struts-default.xml,struts-plugin.xml,struts.xml
- struts-default.xml:struts框架启动时加载运行的框架默认配置。
- struts-plugin.xml: struts框架允许插件集成。集成的插件配置。
- struts.xml: 开发者的配置。
init_LegacyStrutsProperties():加载常量配置struts.properties
- init_CustomConfigurationProviders():struts启动核心类创建的提供者。
- init_FilterInitParameters():struts加载web.xml中的配置
配置加载顺序
Struts.xml中的配置
DTD的查询和配置
- 到struts的核心包中可以找到struts-2.3.dtd文件
- 到xml catelog中配置离线提示
package标签
pakage标签是struts的核心配置。package标签相当于一个模块描述。
- name属性:描述包的唯一性的,不要重复
- extends属性: 继承。
继承的作用是为了具备父类功能。
struts在struts-default.xml中提供了一个struts-default父类配置 - namespace属性:命名空间。
可以理解为模块根路径,当前模块的根路径。
和Action标签的name和method搭配来确定访问的url - abstract:抽象。用来被其他package继承的
action标签
- name: 配置action的访问名称
- class: 配置关联的action类的全路径
- method: action类中的方法名称,访问此action时调用的action类中的方法
include标签
配置多文件struts配置文件进行关联。
file属性指向的是类路径下的配置文件,需要包含文件夹名称。
例如:org/itheima/abc/abc.xml
constant标签
用来配置常量值的,目的是修改Struts的default.propertis中的默认值的
例如:
struts.action.extension=action,,
修改为
struts.action.extension=do,,
Action类的配置
编写规范
action类需要提供无参构造函数
action中被url访问的方法编写规范
- 修饰符:方法的修饰符必须是public
- 参数列表:方法必须是无参方法
- 方法名称:遵循编程规范的任意名称
- 返回值类型
- String: 推荐使用
- void:不推荐使用
package org.itheima.struts.action;// Action类public class TutorialAction {public String setup() { System.out.println("Hello Struts2!"); return "ok";}}
action类的实例
每次url访问时,action的实例就会被创建一次。action类是多实例的。
result标签
- name属性
对应的是Action类中执行的方法的返回值。
- 内容:要去到的页面。
注意:
package标签的namespace值会决定去到的页面
也可以通过/
写绝对路径
Action类的三种编写方式
1. 书写一个普通类
2. 实现Action接口
Action接口提供了五个常量
- ERROR: action方法执行错误时的返回结果
- INPUT: 参数出现问题时的返回结果
- LOGIN: 用户未登录的返回结果
- NONE: action方法被访问了,但是没有视图显示时的结果
- SUCCESS: action方法访问成功时的返回结果
Struts定义的这几个常量只是规范。希望开发人员遵循这些常量进行配置。
Action接口要求实现execute方法
在struts.xml中的action标签中不需要配置方法名,直接就会访问此方法
3. 继承ActionSupport类
- 实现了Action接口
- 提错误信息显示
主要是实现了ValidationAware接口
调用实现方法可以给目标页面添加数据显示
提供校验显示到不同页面
主要是实现了Validateable接口
提供国际化操作
主要实现了TextProvider, LocaleProvider接口
Struts国际化的配置
国际化配置命名规范:baseName_language_country.properties
- baseName由开发人员自己定义
- language和country属于国际规范
- 命名中不加language和country为默认选项
在struts.xml中添加常量配置,或者在struts.properties中配置
struts.custom.i18n.resources=baseName
注意:
- 只写baseName不需要后面的语言和后缀
- 多个时用,隔开
- Struts国际化数据的获得
通过调用getText()方法获得国际化数据
Action的访问方式的配置
通过method属性进行访问
在action标签中,通过具体的name属性值拿到访问的url
通过具体的class去调用,具体的method。开发过程中如果action偏多,书写起来比较麻烦。
通过通配符进行访问
- 在action标签的name属性中,通过
*
号来占位 - 在action标签的method属性中,通过
{下标}
来访问,下标从1开始 - 在result标签结果显示中,通过
{下标}
来访问,下标从1开始
通过动态方法进行访问(不推荐)
- 开启动态方法访问的配置
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
- url中通过actionName +
!
+ action类中的方法名访问- 注意 actionName不要含
.action
后缀 - action类中的方法名可以含
.action
后缀
- 注意 actionName不要含
Struts + Hibernate整合
环境搭建
- 搭建struts的环境
- 测试struts环境是否运行
- 搭建hibernate环境
- 测试hiberante环境是否正常运行
- 解决框架间的冲突
业务整合
- 创建Dao层
- 创建Service层
- 创建测试用例测试业务代码是否正确
- 对接web层
其他细节调整
- 重复的包
- 日志整合
- struts2_入门
- struts2_入门实例详解
- Struts2_值栈
- Struts2_初见
- Struts2_配置文件
- struts2_基础
- Struts2_效验
- java 从零开始,学习笔记之基础入门<Struts2_实战演练(上)>(三十八)
- java 从零开始,学习笔记之基础入门<Struts2_实战演练(中)>(三十九)
- java 从零开始,学习笔记之基础入门<Struts2_实战演练(下)>(四十)
- Struts2_简单配置
- Struts2_校验总结
- Struts2_初识与准备
- Struts2_三种传参数方法
- Struts2_访问Web元素
- Struts2_三种传参数方法
- struts2_方法拦截器
- Spring+Struts2_整合原理
- 【实验报告】高软实验1
- Idea 生成doc 文档控制台出现乱码
- CCF认证 Markdown
- 一个团购安卓APP界面的制作以及细节
- BZOJ 2746 旅行问题 (fail树 Hash LCA)
- struts2_入门
- Microsoft Visual Studio 2012用法积累
- 原子变量的原理与应用
- Mac wireshark The capture session could not be initiated
- 实验1 时间趋势可视化
- 【数据结构】单链表逆序
- hdu 1166(线段树or树状数组)
- web常考知识点
- 马踏过河卒