Strust2学习之一(struts2 环境搭建)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Strust2学习之一(struts2 环境搭建)相关的知识,希望对你有一定的参考价值。
Strust2学习之一(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的变化很小。
这里先写开发流程后面解释原理
添加struts的支持:
我们看看这都做了什么
第一步: 添加struts2的核心jar包
第二步: 添加struts2的配置文件
<package name="sbj" extends="struts-default">
<action name="login" class="com.wfg.action.LoginActin">
<param name="name">ss</param>
<param name="password"></param>
<result name="success">/ok.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
上例中的技能点
技能点 1:package 定义上例中的技能点
技能点 1:package 定义上例中的技能点
技能点 1:package 定义
定义: <package name="com.wangwang" extends="struts-default">
含义:使用package可以将逻辑上相关的一组 Action,Result,Interceptor 等组件分为一组,
package有些像对象,可以继承其他的package,也可以被其他package继承,甚至可以定义
抽象的Package。它有以下要点:
name 属性。package的别名,为了让其他的package引用或继承。
abstract,抽象的package中不需要定义action。
extends,继承的父package配置,struts-default 在Struts2核心包下的struts-default.xml
中声明,读者可以先看下,后期我们详细讲解。
技能点 2:action 定义
定义: <action name="helloAction"
class="com.wangwang.HelloAction" method=””>
含义:一个package下面可以有多个action,每个action表示一个受管理的Bean它。有以下
要点:
name 属性。客户端通过此名称访问action。
class,具体的类。
method,默认调用action的execute方法,或者调用此属性标记的方法。
技能点 3:result 定义
定义:<result name="ok">result.jsp</result>
含义:类似于struts1下的forward节点。一个action下可以有多个result。表示执行完跳转的目
标地址。name必须与Bean执行方法返回值一致,默认的是请求转发,添加type="redirect"表示
重定向。chain表示转发给下一个action
第三步: web.xml 添加过滤器
<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>*.action</url-pattern>
</filter-mapping>
这里大家注意与Struts1不同的是,Struts1 在web.xml中配置的是一个Servlet,而
Struts2配置是一个过滤器(Filter)。并且最早时使用的是FilterDispatcher,而现在新版
本使用的是StrutsPrepareAndExecuteFilter。它的url-pattern为/*,表示过滤所有请
求。这里大家注意与Struts1不同的是,Struts1 在web.xml中配置的是一个Servlet,而
Struts2配置是一个过滤器(Filter)。并且最早时使用的是FilterDispatcher,而现在新版
本使用的是StrutsPrepareAndExecuteFilter。它的url-pattern为/*,表示过滤所有请
求。这里大家注意与Struts1不同的是,Struts1 在web.xml中配置的是一个Servlet,而
Struts2配置是一个过滤器(Filter)。并且最早时使用的是FilterDispatcher,而现在新版
本使用的是StrutsPrepareAndExecuteFilter。它的url-pattern为/*,表示过滤所有请
求。
受管理的bean
//action 可以不继承任何类,但是有时会继承ActionSupport类 未来使用里面已有的功能
public class LoginActin extends ActionSupport
private String name;
private String password;
public String getName()
return name;
public void setName(String name)
this.name = name;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
//默认调用调用execute
public String execute()
System.out.println(name+";;;"+password);
if("aa".equals(name)&&"bb".equals(password))
return SUCCESS;
else
return ERROR;
上例中的技能点
技能点 1:受管理的 Bean
定义: public class HelloAction
含义: 我们把HelloAction称为受管理的Bean。它有以下要点:
Struts1中FormBean需要继承之 ActionForm,ActionBean需要继承 Action;而此
Bean不需要继承任何框架类或实现任何框架接口,与框架相脱离;当您的项目需要由
Struts2迁移到JSF时,此类可以直接使用。
受管理的Bean=ActionBean+FormBean。Struts2包括JSF一样把其合而为一。
Struts1中 ActionBean是单态,无状态的,FormBean是多态,有状态的;受管理的
HelloAction会为每个请求产生一个实例,因为其中定义了保存客户端数据的变量,它是多
态,有状态的。
技能点 2:execute 与自定义 login 方法
定义: String execute(); String login()
含义: 系统默认调用受管理Bean的execute()方法,当然您也可以在主配置文件中通过
action节点的 method属性或者/contextPath/actionName!methodName.action方式访问。
jsp代码
<form action="login.action">
name:<input type="text" name="name">
password: <input type="text" name="password">
<input type="submit">
</form>
以上是关于Strust2学习之一(struts2 环境搭建)的主要内容,如果未能解决你的问题,请参考以下文章
struts2+Hibernate4+spring3+EasyUI环境搭建之一