struts2入门之准备工作

使用struts2开发项目分四个步骤:

1、导入jar包

2、创建action

3、配置struts.xml

4、配置过滤器

下面分别介绍以上四步骤:

首先struts2是由struts1进化而来,但是二者差别很大,struts2集成了struts1和webwork的优势,详细差别请参考:http://blog.csdn.net/john2522/article/details/7436307/

I、导入jar包到WEB-INF/lib中。具体是哪些jar包呢?首先下载struts2的压缩包,官网上自己下载,然后解压,会有

  以下几个目录:

然后打开apps这个文件夹,会看到struts2-blank.war这个压缩文件,

进而将这个文件继续解压,会出现WEB-INF这个文件夹,找到WEB-INF/lib下的所有jar包,拷贝到项目WEB-INF/lib下面;

II、创建action有多种方式,我这里介绍三种吧:

  1)、直接新建一个类,这个类中要有execute方法,返回值为String。比如: 

1 public class DogAction{
2       public String execute(){
3            return "success";
4       }
5 }

  2)、实现Action接口,并实现execute方法,比如:      

1 import com.opensymphony.xwork2.Action;
2
3 public class DogAction implements Action {
4     @Override
5     public String execute() throws Exception {
6         return "success";
7     }
8 }

  3)、继承ActionSupport这个类,比如:    

1 import com.opensymphony.xwork2.ActionSupport;
2
3 public class DogAction2 extends ActionSupport {
4     @Override
5     public String execute() throws Exception {
6         return "success";
7     }
8 }

  4)、这里有个疑问,为啥每次都要写execute方法呢?其实这在后面配置struts.xml文件的时候,如果action标签不配置method属性的话,action会默认

     找execute方法的返回值,然后根据result标签去找要访问的具体页面或者是action。

3、配置struts.xml文件:  

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <package name="dogDemo" extends="struts-default" namespace="/">
 8         <action name="dog" class="com.cczhao.struts.DogAction">
 9             <result name="success">/hello.jsp</result>
10         </action>
11     </package>
12 </struts>

4、设置过滤器,在WEB-INF/web.xml文件中写:  

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 5
 6     <display-name>Dog-Filter</display-name>
 7
 8     <filter>
 9         <filter-name>struts2</filter-name>
10         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
11     </filter>
12
13     <filter-mapping>
14         <filter-name>struts2</filter-name>
15         <url-pattern>/*</url-pattern>
16     </filter-mapping>
17 </web-app>

截至到目前,准备工作已经完成,在地址栏中输入:localhost:8080/test/dog.action,正常的话会跳转到hello.jsp页面中去。当然这里有写步骤我也省略了,

比如我的项目名称是test,hello.jsp是在webContent目录下。

5、接下来详细说一下struts.xml文件中的几个标签:根标签是struts,在根标签下,可以有多个package标签,在package标签中有三个属性,本别是name、extends、namespace。name属性本身对于某个项目来说影响不大,你爱怎么命名就怎么命名,但是如果在这个struts标签内有多个package时,这个name属性不能重复;extends表面就是继承的意思,在这里是为了说明package标签下的类具有action的功能,这个值也是固定的,就是extends="struts-default";namespace属性它和接下来的

action中的name属性共同构成访问路径,例如在上面的例子中访问路径就是:localhost:8080/项目名称/dog ,其实namespace属性是有默认值的,默认就是”/“,上面的例子中可以把这个省略掉;action标签中的name属性就不说了,它和上面package中的namespace共同构成访问路径;class属性就是指定类的全路径;

result标签中name属性是和类中的方法的返回值对应的,DogAcion这个类中默认有个execute方法,它的返回值是"success"的话,会找到请求最后去访问哪个页面。本例中,就是成功的话访问/hello.jsp这个页面。
另外在配置过滤器时候,还可以配置常量;contant标签一般只有两个属性,name、value.

===============================分割线=======================================

struts.xml文件中的标签介绍还不完善,这里进行一个补充:

action标签除了有name属性和class属性之外,还有method属性,用来指定当访问这个action的时候要去具体执行哪个方法,然后根据返回值再去找指定的页面后者是action;

result标签除了有name属性外,还有type属性,这个type属性指定了请求访问具体页面的方式,比如是转发(dispatcher),还是重定向(redirect),这两个参数

对访问页面有效果,如果是要访问action的话,分别是chain(转发)和redirectAction(重定向)。

========================================分割线========================================

另外再说一下result的全局结果配置和局部结果配置:先上代码,如下:

<struts>
    <package name="test02" extends="struts-default" namespace="/">
        <global-results>
            <result name="success">/hello.jsp</result>
        </global-results>
        <action name="book" class="com.cczhao.struts.action.BookAction">
            <result name="success" type="redirectAction">orders</result>
        </action>
        <action name="orders" class="com.cczhao.struts.action.OrdersAction">
            <result name="success">/world.jsp</result>
        </action>
    </package>
</struts>

这个配置全局结果页面是有这么一种需求的时候,方法的返回值一样,前往的页面也一样,此时没有必要分别去对一个这样的action去配置结果页,用一个全局结果配置就能搞定。用的最多的,404页面,500页面等。

另外如果方法的返回值是空,可以在struts.xml中的action标签下不配置result标签,因为返回值为空嘛,也就意味这不准备往下再访问其他页面了。

时间: 2024-10-22 09:22:21

struts2入门之准备工作的相关文章

STRUTS2入门笔记

1.1.开发Struts 2程序最少需要的JAR如下: struts2-core-2.x.x.jar :Struts 2框架的核心类库      xwork-core-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标签的模板使用FreeM

1.struts2入门程序

**Struts2的入门步骤(重点掌握开发的步骤,尤其要记住拷贝哪些配置文件)** 0. 需求:编写JSP的页面,超链接,点击超链接发送请求,让框架某个类中的某个方法执行了. 1. 步骤一:下载Struts2的开发包 * http://struts.apache.org/download.cgi 2. 解决struts-2.3.15.3-all.zip包 * 解压后会看到有包和一些文件,大家需要掌握包相关的信息 * apps -- Struts2框架提供了一些应用. * libs -- Stru

Struts2入门(1)

---恢复内容开始--- 一丶Struts2基础学习总结 Struts2是在WebWork2的基础开发而来,它相比于Struts1的优点在于以下几点: 1.Strust2没有像Struts1那样跟Servlet API耦合度很高. 2.Struts2提供了拦截器,利用拦截器可以进行AOP编程. 3.Struts2提供了很强大的类型转换. 4.Struts2提供了多种表现层技术,虽然常用的只有JSP. 5.Struts 2 的输入校验可以指定方法进行校验. 6.Struts 2 提供了全局范围.包

Struts2入门(一)——配置文件

一.前言 1.了解三大框架 什么是框架? 框架是一种规范,一种规则,一种把技术组织起来的规则,这就是框架. 什么是三大框架(SSH),Struts.hibernate和spring的作用是什么? Struts主要负责层的显示,spring利用IOC和AOP来处理控制业务(负责对数据库的操作),hibernate主要作用是数据的持久性到数据库. Struts的处理流程: 在Struts 2下载文件Struts-core-2.5.2.文件中(注意:不同jarStruts核心控制器的名称不同),Str

struts2入门程序

1.搭建struts2环境开发的步骤 搭建struts2环境时,我们一般需要做一下几个步骤的工作: 1.  创建javaweb工程 2.  找到开发struts应用所需要使用的jar 3.  创建jsp文件 4.  创建action文件 5.  编写struts2的配置文件 6.  在web.xml中加入struts2 MVC框架启动配置 开发struts2中需要使用的基本jar包: 关于struts2的提示: 我的myeclipes默认的struts2提示只到2.1,如果需要有2.3的提示,有

Struts2入门这一篇就够了

前言 这是Strtus的开山篇,主要是引入struts框架...为什么要引入struts,引入struts的好处是什么,以及对Struts2一个简单的入门.... 为什么要引入struts? 既然Servlet能够完成的事,我们为啥要用框架呢?? 框架帮我们封装了很多常用的功能 把Web带过来的参数自动封装到JavaBean中[以前,我们刚开始学的时候是单个单个来获取参数的,后来我们又使用了BeanUtils写工具方法来帮我们封装].现在,我们使用了Struts2的话,那么框架内部就能帮我们封装

struts2入门---ActionContext

1.开发环境搭建 2.简单应用 我们在index.jsp里面这样写: <a href="TestActionContext.action?name=zhoujing&age=21">Test ActionContext</a> <% if(application.getAttribute("date") == null) application.setAttribute("date", new Date())

struts2入门之拦截器

1.拦截器的执行时间:在action对象创建之后,在具体的方法执行之前: 2.拦截器底层实现原理:用到AOP思想和责任链模式:AOP:面向切面编程,通俗的讲就是当某个功能模块要增加某一项功能时,尽可能不去修改源代码而是通过其他的方式来达到相同的效果,比如通过配置文件等方式:责任链模式和过滤链模式有点相似,过滤链模式是指比如,一个请求由多个过滤器进行过滤,每个过滤器进行放行之后才能到下一个过滤器,最后实现目的:但是责任链模式,比如要执行多个操作,有添加,修改,删除三个操作,首先执行添加操作,添加操

简单的谈一下struts2入门(一)

Struts2的配置文件: 下面是它的配置顺序 web.xml Default.properties Struts-default.xml Struts-plugin.xml Struts.xml <package name="one-package" extends="struts-default"> <action name="one" class="cn.struts2.action.OneAction"