Struts2框架入门

导读

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Stuts框架基于当年的Webwork和XWork框架,继承其优点并有所改进。本文主要是介绍Struts2框架的环境搭建和一些基本的配置讲解。

目录

一、Struts2框架的搭建

二、Struts2架构简介

三、基本配置详解

四、Action类详解

一、Struts2框架的搭建

1、导包

1)首先使用Eclipse创建一个web工程,如

2)将需要用到的包导入WEB-INF / lib文件夹下:

先到网上搜索struts2框架jar包,

解压后lib包下就有全部的jar包,但是不必全部导入,所以打开apps下的任一工程,如struts2-blank压缩包,解压打开就可以导入这些jar包了:

导入到lib下:

2、书写Action类

 Action类是Struts2框架中的核心功能类。这里这是用于测试,先随便写个类:

 1 package com.fzz.demo;
 2 
 3 //一个普通的类
 4 public class HelloAction {
 5     
 6     //随便书写两个功能
 7     public String fun1(){
 8         System.out.println("fun1 running...");
 9         return "success";
10     }
11     
12     public String fun2(){
13         System.out.println("fun2 running...");
14         return "success";
15     }
16 }
HelloAction

3、书写主配置文件:struts.xml

主配置文件放置在src下,以struts.xml命名(注意没有2)。

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

<!-- 导入约束 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    
    <!-- action配置 -->
    <package name="hello" namespace="/hello" extends="struts-default">
        <action name="helloAction" class="com.fzz.demo.HelloAction" method="fun2">
            <result name="success" >/hello.jsp</result>
        </action>
    </package>
</struts>

这些配置会在下文进行详解,其实对比Action类的书写内容能看懂个大概。

这里使用到了hello.jsp文件,所以我们需要在WebContent目录下新建一个名为hello.jsp的文件(内容随意)。

4、将struts2核心过滤器配置到web.xml中

 struts2的核心过滤器如果没有配置,那么这个框架将不会生效。

这是固定写法,不需要记忆,除了filter-name可以随意命名,其他地方不能写错。

5、测试一下

现在在服务器上启动该项目,在浏览器中输入以下网址即可:(这里输入的网址和上面配置文件中的配置有关

到这里,如果页面成功显示,说明你的struts2框架的环境搭建就算完成了。

以前我们使用Servlet和jsp文件来响应浏览器发来的请求信息,现在我们使用struts2框架来代替Servlet的工作,即使用一个Action类+配置文件atruts.xml就可以完成Servlet的工作了,这就是Struts2框架最基本的功能演示。(只能说这里演示的功能太小,完全没有展现Struts2的优势,^_^)。

二、Struts2架构简介

 Struts架构图(2.1.3):

 

这就是Struts2的架构和执行流程。现在看不懂没关系,我们应该在运用中逐渐加深理解。

三、基本配置详解

 1、主配置文件struts.xml

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

<!-- 导入约束 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- package:用于封装action,可以在package下封装多个action -->
    <package name="hello" namespace="/hello" extends="struts-default">
        
        <action name="helloAction_*" class="com.fzz.web.helloAction" method="{1}">
            <result name="success" >/hello.jsp</result>
        </action>
    </package>
</struts>

1)package标签

package:用于封装action,可以在package下封装多个action。属性如下:

注:name是标识属性,可以随意命名,但要保证唯一性;extends是默认配置,不可更改;namespace就是设置访问该package下action的上级目录地址。

2)action标签

Action类的配置,属性有:

3)result标签

用于处理返回结果的标签,

name属性:标识处理结果的名称,与return的字符串值一致。

type属性:选择哪种方式处理结果:(默认是请求转发:dispatcher)

标签体:填写处理结果的页面相对地址。

2、常量配置

默认常量配置的位置:

 常量配置是键值对的配置,有三种方式来配置:

1)在主配置文件struts.xml中使用<constant>标签添加配置(常用)

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

<!-- 导入约束 -->
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 常量配置(键值对) -->
    <!-- 国际化编码:解决post提交乱码问题 (默认就是UTF-8)-->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 指定访问action是的后缀名(默认action,,即是空和.action) -->
    <constant name="struts.action.extension" value="action,,"></constant>
    <!-- 是否选择开发模式:开发模式下:
            1)提供热加载主配置文件,即不需要重启即可生效
            2)提供更多的错误输出,方便开发者找到错误。
        开发模式是要占用资源的,所以开发完成后就可以将其关闭。默认是false(关闭状态)
     -->
    <constant name="struts.devMode" value="true"></constant>
    
    <!-- package:用于封装action,可以在package下封装多个action -->
    <package name="hello" namespace="/hello" extends="struts-default">
        
        <action name="helloAction_*" class="com.fzz.web.helloAction" method="{1}">
            <result name="success" >/hello.jsp</result>
        </action>
    </package>
</struts>
View Code

2)在src下新建一个

struts.properties文件,内容以键值对的信息保存:

key=value

3)在web.xml文件下使用<context-param>标签进行配置:

注:常量配置的加载顺序是默认配置文件----->struts.xml文件---->struts.properties---->web.xml。

3、默认配置

 Struts2的默认配置文件是:struts-default.xml

下面是package的默认配置

<package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index" />
       <action name="index">
           <result name="success" type="redirectAction">
               <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
       </action>
</package>

4、动态方法的调用

1)方式一

缺点:访问格式固定。(在actionName后+!+方法名进行访问)

如:http://localhost:8080/Struts2Demo/hello/helloAction!fun2

2)方式二(常用)

(这里*前的内容在不违反uri命名规则的情况下任意命名,比方法一自由)

路径则为:http://localhost:8080/Struts2Demo/hello/helloAction_fun2

四、Action类详解

 Actions是Struts2框架的核心类,因为它们适用于任何MVC(Model View Controller)框架。 每个URL映射到特定的action,其提供处理来自用户的请求所需的处理逻辑。

Struts2中actions的唯一要求是必须有一个无参数方法返回String或Result对象,并且必须是POJO。如果没有指定no-argument方法,则默认是使用execute()方法。(POJO就是简单的Java对象,实际就是普通JavaBeans)。

方式一:

 方式二:

方式三:

 

posted @ 2017-12-18 22:40  风之之  阅读(586)  评论(0编辑  收藏  举报