Struts2平凡之路(二)Hello Struts2!

来源:互联网 发布:数据库关联查询 编辑:程序博客网 时间:2024/05/08 09:00

现在我们的Web项目是可以支持了struts2了,但如何开发基于struts2的Web应用呢?

打开你已经搭建好Struts2框架的项目,我们来简要分析下struts2

1.分析web.xml中sturts2的配置

<span style="font-size:14px;"><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></span>
以上的代码是让web项目获得struts2框架支持的核心代码,有Servlet编程经验的同学,可能会马上心领神会,“哇,这不是配置了一个Filter吗?”,没错,struts2正是使用了filter让其对加载strauts2的核心类:StrutsPrepareAndExecuteFilter。这样当在客户端使用浏览器对一个基于struts2的站点进行访问时,访问请求就会被该Filter先行

拦截,从而进入struts2的控制流程。

而<filter-mapping>子标签中<url-parttern>的值是一个"/*", 这个*号就代表过滤所有的url请求

2.修改struts.xml

我们这前写的struts.xml是一个空的框架,里面没有什么内容,也不能对我们的请求做出任何有价值的响应,下面我们就开始修改它

在<struts> </struts>标签中间加入

<span style="font-size:14px;"><package name="" namespace="" extends=""><action name="" class=""><result name="">value</result></action></package></span>

1)<package/>:是包的意思,和我们在java中用来组织管理代码的包的概念一样,而在struts2中是用来管理Action的,一个包下可以包含多个action

     name:是这个package的名字,配置 package时,必须为其指定一个包名,该包名可在包与包之间继承时使用

     namespace:是这个package的命名空间,可以缺省为空,如果配置的话它将是访问路径的一部分

     extends :可选属性,可以用来 继承其他包

2)<action/> :struts2中的基本单位,配置action就是让struts2知道哪个action处理哪个请求,也就是完成用户请求和action间的对应关系

     name: 该action的名字,也是该action所处理请求的url

     class :该action的具体实现类,该属性可以省略,如果省略则使用struts2的默认Action也就是ActionSupport对请求进行处理

3)<result> :action处理完用户请求后,所要响应的结果,也就是逻辑视图和物理视图的映射关系,可有一个或多个

   name: 逻辑视图名,该值和action响应完请求后返回的String类型的结果一致

   value: 物理视图名,这就是在action响应完请求后真正要去的地方

OK,看完基本的struts.xml中的标签和属性配置,我们来看下具体响应用户请求的sturts.xml应该怎么写:

<span style="font-size:14px;"><package name="default" namespace="/" extends="struts-default"><action name="uiAction" class="com.action.UIAction"><result name="hello">/index.jsp</result></action></package></span>

上面的代码中,我们声明了一个名为 default的package  ,并将namespace指到当前的根路径,并且继承了struts-default

当然namespace也可以不用写任何值 ,但这样的话服务器会报出一个警告,当指定 namespace="/"时,就可以避免这个警告

struts-default是struts2中默认的package,位于struts-default.xml中,该package中包含了大量的struts2拦截器,一但继承了该包,就表示我们可以使用struts2的

定义好的核心拦截器,一般我们都会继承该包。

内容:


我们再来看看action这个标签,action中我们为其指定了name值为uiAction,它将是action的url的地址,我们请求一个action就是要访问类型的地址,

如:http://localhost:端口号/项目名/action名

action中的class就是指定该action的具体实现类,这里的实现类是com.action.UIAction

3.编写Action实现类

<span style="font-size:14px;">public class UIAction {public  String execute() {return "hello";}}</span>
只需添加以上代码,不需继承任何的类。我们就可以对请求做出响应,没有与任何的ServletAPI耦合,但有一点要注意,现阶段execute()这个方法不能修改,如execute2(),这样的话,struts就找不到方法而报错,因为struts默认是使用execute作为其响应方法的。

4.编写index.jsp

这个很简单,在页面上写上

<span style="font-size:14px;">Hello Struts!</span>

即可


5.在浏览器中运行


好,那么一个简单的struts2应用就跑了起来。

0 0
原创粉丝点击