读书人

Struts2的框架筹建及简单案例

发布时间: 2012-09-07 10:38:15 作者: rapoo

Struts2的框架搭建及简单案例

??1、Struts2的介绍:Struts2不是在Struts1的基础发展而来的。

??2、Struts2的环境搭建

?????步骤一:找到开发struts2应用需要的jar文件

struts2-core-2.x.x.jar?:Struts?2框架的核心类库

xwork-2.x.x.jar?:XWork类库,Struts?2在其上构建

ognl-2.6.x.jar?:对象图导航语言(Object?Graph?Navigation?Language), struts2框架通过其读写对象的属性

freemarker-2.3.x.jar?:Struts?2的UI标签的模板使用FreeMarker编写

commons-logging-1.1.x.jar?:ASF出品的日志包,Struts?2框架使用这个日 志包来支持Log4J和JDK?1.4+的日志记录。

commons-fileupload-1.2.1.jar?:文件上传组件,2.1.6版本后必须加入此文 件

???????步骤二:编写struts2的配置文件

1、创建struts.xml文件文件名称必须时struts并且该文件错放在 \WEB-INF\classes文件夹下(即在src目录下创建此文件即可以自动 放入要求的目录).

2、文件的内容如下:

<?xml?version="1.0"?encoding="UTF-8"??>

<!DOCTYPE?struts?PUBLIC?"-//Apache?Software?Foundation//DTD? Struts?Configuration?2.1//EN"? "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

</struts>????

????????步骤三:在web.xml文件中加入Struts2MVC框架启动配置

?????????????????添加内容如下:

<filter>

???? <filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.Strut sPrepareAndExecuteFilter</filter-class>

<!--?自从Struts?2.1.3以后,下面的FilterDispatcher已经标注为过时 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</f ?ilter-class>?-->?

</filter>

<filter-mapping>

???? <filter-name>struts2</filter-name>

?? ?<url-pattern>/*</url-pattern>

</filter-mapping>

注释:在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作

3、第一个Struts2的登录案例

(1)第一步创建登录界面:

<form>

<h1>

用户登录界面

</h1>

<form?action="./login.action"?method="post">

用户名:

<input?type="text"?name="username"?id="username"?/>

<br?/>

密码:

<input?type="password"?name="pass"?id="pass"?/>

<br?/>

<input?type="submit"?value="登录"?/>

</form>

(2)创建Sturts2Action处理类

package?redarmy.shop.action;

import?com.opensymphony.xwork2.ActionSupport;

public?class?LoginAction?extends?ActionSupport?{

private?String?username;

private?String?pass;

//?是从jsp页面获取username的值

public?String?getUsername()?{

return?username;

}

//?相当于把其存入到request中

public?void?setUsername(String?username)?{

this.username?=?username;

}

public?String?getPass()?{

return?pass;

}

public?void?setPass(String?pass)?{

this.pass?=?pass;

}

@Override

public?String?execute()?throws?Exception?{

return?SUCCESS;

}

}

(3)创建其配置文件

<?xml?version="1.0"?encoding="UTF-8"??>

<!DOCTYPE?struts?PUBLIC?"-//Apache?Software?Foundation//DTD?Struts?Configuration?2.1//EN"?"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

???<package?name=""?extends="struts-default"?namespace="/">

?????????<action?name="login"?class="redarmy.shop.action.LoginAction">

????????????<result?name="success">/success.jsp</result>

?????????</action>

???</package>

</struts>?

4、解释:

a、?package包对一类action的封装?extends继承了struts-default.xml文件中struts-default默认的包,其包提供了struts2基本处理(比如拦截器,文件上传下载,参数的处理等等)。Namespace问包提供一个访问的命名空间。

b、?action从jsp页面中传递请求class指明的是该请求交给此类来处理,默认的情况交给此类中的execute方法处理?也可以通过method属性来指明该action由其某个方法处理

c、?result代表以上类处理返回的结果?此结果可以由name属性指定其结果值?type指明其结果类型默认的是dispatcher类型(此类型是与jsp页面交互)。

通过发布此项目即可测试。

5、通过此项目简单了解struts2的处理流程如下:

?? Jsp:<form?action=”login.action”>发送请求

2?web.xml文件中的StrutsPrepareAndExecuteFilter:读取struts.xml

2?通过拦截器处理找到action?name=”login”

2?通过此action对应类中的setXxx()和getXxx()方法保存并专递数据到jsp

2?执行此action类指明的方法默认是execute()方法并返回结果

2?根据处理的结果使用result?name的属性进行匹配?然后根据其type属性类型执行结果集操作

<!--EndFragment-->

读书人网 >软件架构设计

热点推荐