代码江湖之勇闯天涯——struts2——环境搭建

少爷,我们之前学会了servlet使用,但是想要在以后代码之路上行走,只会这最最基础的是根本不够的,想一下你做一个项目里边全是使用servlet进行分析各种参数,那样一是会累死,二一个别人接手你代码的时候看到这么多参数也会疯的。
“那福伯,我们应该怎么去开发javaweb项目呢,难道不用servlet?”
放心吧,java发展到现在,已经有很多成熟的框架供我们使用了,像struts2,springMVC,hibernate等。那么现在就让我们开始修炼struts2吧。
“好的,福伯。”

首先,我们来了解一下什么是框架及struts2。

1. 框架概述

把繁琐重复性的代码封装起来,使编码过程中把更多的精力放在业务需求的分析和理解上。

2. 三层架构与Struts2

1. 表现层:M model  V view  C control
2. 业务层:service
3. 持久层:dao(data access object)
01Struts2.png
Struts2在三层架构中处于表现层即MVC,它只是一个表现层框架。

3. MVC与Struts2

控制器:Servlet
过滤器:Filter 它也可以作为控制器
    init(FilterConfig)
    destory()
    doFilter(ServletRequest,ServletResponse,FilterChain)
Servlet能做的Filter也都可以做,并且比Servlet功能更强大,它多了一个放行的功能。

4. 搭建开发环境

1. 下载开发包
2. 搭建环境
    a. 导包
    b. 创建一个配置文件:
        在顶层类路径下,创建一个struts.xml文件
    c. 在web.xml中配置struts2的控制器

5. Struts2的原理###

05strtus2原理图.png

6. Struts2配置文件加载顺序

default.properties-->struts-default.xml-->plugin配置-->struts.xml-->struts.properties-->web.xml
如果遇到重名,后一个覆盖前一个。如图:


Struts2中配置问价加载顺序

你能看到struts2.xml中有很多的元素吗?我们现在开始修行每个元素的各种属性啦,少爷,准备好了么?
“准备好啦,来吧,哈哈哈~”

7. Struts2中配置文件中的各个元素

<!--package元素:是定义一个struts的包,把配置文件按照面向对象编程的思想来管理
    name属性:指定包的名称。注意: 包的名称在配置文件中唯一。
    extends属性:指定当前包的父包。 它是按照面向对象的思想管理的体现
    abstract属性:把包声明为一个抽象包,抽象包就是用来被继承的。只有没有action属性的包才能被定义为抽象包 
    namespace属性:名称空间。当指定了名称空间之后,访问路径就变成了:
                        访问路径=名称空间+动作名称
                   当不指定该属性时,该属性有默认值,默认为""。注意,不是"/"
                   名称空间的搜索顺序:
                        第一步:先去找对应的名称空间(由大到小)
                                在指定的名称空间找到了:执行第二步
                                在指定的名称空间没找到:按照名称空间结构往上追溯,一直到根名称空间,只要在任何一级找到了就执行第二步
                        第二步:找对应的动作名称
                                现在指定名称空间下搜索对应的动作名称:找到了执行动作类的方法
                                在指定的名称空间下没找到对应名称空间:前往默认的名称空间下找对应的动作名称。注意:只搜索动作名称。
     -->
    <package name="p1" extends="struts-default">
        <!-- 
            action元素:适用于定义动作名称、动作类和动作方法的映射。以及当出现不同情况时前往指定的结果视图
                name属性:动作名称。和客户端请求的url地址中的名称对应起来。这里不能写.action
                class属性:指定动作类。
                method属性:指定要执行的动作方法。
         -->
        <action name="action1" class="com.wg.web.action.Demo1Action" method="doDemo">
            <!--result元素:结果视图
                    name属性:如果不写name时,默认值是success
                    type属性:以何种方式前往指定的视图或动作,默认是dispatch      
            -->
            <!-- 可以进行自定义结果视图:
                    1.创建类 集成StrutsResultSupport 重写doExecute方法
                    2.在struts.xml中配置-->
            <result name="success">/success.jsp</result>
        </action>
    </package>

对于动作类的创建方法:

/**
 * 创建动作类的第一种方式(简单  但是开发几乎不使用)
 *      创建一个普通的java类
 *      此类就是一个POJO(原始的 老的 Java 对象)
 *      Plain Old Java Object
 */
public class Demo1Action {
    public String doDemo(){
        return "success";
    }
}

import com.opensymphony.xwork2.Action;
/**
 * 创建动作类的第二种方式:
 *      创建一个普通类实现Action接口,实现接口中的方法
 * @author Administrator
 *
 */
public class Demo2Action implements Action {

    @Override
    public String execute() throws Exception {
        return null;
    }

}


import com.opensymphony.xwork2.ActionSupport;
/***
 * 第三种创建动作类
 *      新建一个类继承ActionSupport
 * 在开发中我们采取这样的方式创建我们的动作类
 * @author Administrator
 *
 */
public class Demo3Action extends ActionSupport {
    //在这个类中我们什么都不写,一个动作方法都不提供时,有一个默认的动作方法:execute()
}

8.分文件编写配置文件
建立多个struts.xml(不同名称) 在每个struts.xml中进行编写相对应模块的代码,在struts.xml中使用include进行添加每个模块的struts.xml;例如:

<include file="struts_login.xml"></include>

恭喜少爷,已经修炼出了Web基础阶段一啦,再接再厉哟
“我的天,好多属性,好多东西啊,这要记到什么时候a,累死了”
呵呵,少爷,这些不要死记硬背,要会看源码,这些会在以后的修炼中不断磨练的。
“恩,知道了福伯。不行了,我要去后山的温泉泡一会去了,祛除疲劳”
说完就飞一般跑开了。
福伯:“慢点啊,少爷。”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容