今天初步学习了一下Struts2,对于Struts2,企业中已应用十分广泛,由于他是在Struts基础上发展而来,技术上比struts高,比如
struts2对同一个路径的每个请求分别使用一个独立Action实例对象,所有使用struts2不用考虑线程安全问题,还有就是修改下配置文件,不用重启服务器
1.struts2的建立过程:
配置过程:
1.新建web项目
2.导入struts2类库. [blank项目中含有最少的jar文件]
3.配置web.xml
<filter>[...SrutsPrepareAndExecuteFilter]
4.写Action类
public class HelloWorldAction {
public String execute(){
System.out.println("hello world!");
try {
ServletActionContext.getResponse().getWriter().printf("hello!");
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
}
5.创建struts.xml
①.struts2默认在类路径下查找struts.xml文件
关于struts.xml配置,可以参看struts2-blank-2.1.8.1.war解压后的配置
设置环境为开发模式.设置为开发模式,有利于编程和调试,
<constant name="struts.devMode" value="true" />
3.让struts.xml中的Package继承struts-default.xml中的默认包.
所有的默认包中的元素配置就引入进来.
4.配置默认值.
<action name="HelloWorldAction" class="cn.itcast.struts2.helloworld.HelloWorldAction">
<result name="success">
<param name="location">/index.jsp</param>
</result>
</action>
5.strtus2中的action不是单例的,它会为每个请求单独分配一个action实例,所以可以在action类中声明实体属性.
Struts2的Action是模型层,不是控制层,原因它是需要携带业务数据的.
6.struts2中的拦截器是负责每个独立的一项任务.例如,参数传递,国际化,异常处理,StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。
7.在struts2的jsp中输出数据,借助于struts-tag.tld标签库.该库在[struts-core.jar/META-INF/struts-tag.tld,但是其重要作用还是用于回显数据
8.Struts2可以数据的范围:ActionContext request session application
ActionContext是数据中心,ValueStack不过是该数据中心中的一个特殊对象.
在jsp中访问ActionContext中的数据的话,可以使用OGNL语言.
9.struts2中包的名字空间搜索原则:
1.<package name="xxPkg">
2.<package name="xxPkg" namespace="">
3.<package name="xxPkg" namespace="/">
4.<package name="xxPkg" namespace="/HelloWorld">
1.和2.效果一样,都是默认的包.
2.都会自后向前搜索,直到找到为止,"/" 和 "/HelloWorld"唯一不同就是也可以作为搜索目录.
3.空包是默认包,如果每个包都没有找到相应的action的话,就去默认包下去找.
10.struts2中进行动态方法调用.
http://localhost:8085/struts2/Hell/HelloWorldAction!toRewView.do
11.struts2中使用标签库
<s:form action="HelloWorldAction_doReg" [namespace=""]>
<s:textfield name="name" label="UserName" />
<s:submit />
</s:form>
namespace:如果不写,会使用当期的名字空间.
struts给的所有控件标签,主要目的用于回显数据.
12.struts2中进行基本的校验,需要Validateable和ValidationAware两个接口的支持,同时还需要
workflow拦截器的支持.
13.在struts2中,默认的表达式语言是OGNL,Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。相对EL表达式,它提供了平时我们需要的一些功能,如:支持对象方法调用,支持类静态方法调用和值访问,操作集合对象。例如():
访问值栈中的action的普通属性: username = <s:property value="username"/>
由于下午有公司来面试,耽误了一些时间,老徐说明天再多补一个小时,太敬业了啊,佩服!
posted on 2010-03-25 16:39
d66380022 阅读(279)
评论(0) 编辑 收藏