Struts2 学习整理 大汇总

一 Struts2 概念:

Struts2框架用于javaee 三层架构中的web层(servlet层 显示层);

Struts2是在Struts1和webwork基础上发展的全新框架。

二 Struts2 的过滤器

类: StrutsprepareAndExecuteFilter

过滤器在服务器(tomcat)启动时就创建了,创建过滤器的时候会执行init(), 在init()方法中主要加载配置文件

struts.xml & web.xml

三 配置文件

struts.xml --->Struts2核心配置文件

位置和名称都是固定的,位置:src目录下,名称:struts.xml(常用)

第二种方式:在src下创建Struts.properties里面进行配置(不常用)

<!-- 引入dtd 文件-->
<struts><!--struts2的根标签-->
<constant name="struts.i18n.enconding" value="utf-8"></constant>
<!--
    constant标签 常量标签
    在Struts2默认常量值
    表单提交数据到Action类里面,如果表单提交数据是通过post提交,可以通过该配置解决中文乱码,如
    果是get提交就需要编码转换
-->

<!--分模块开发
    单独配置文件把该配置文件引入到核心配置文件中
    比如:引入 hello.xml 配置文件
-->
<include file="cn/ss/aciont/hello.xml"/>

<constant name ="struts.enable.DynamicMehodInvocation" value="true"></constant>
<!--
    动态访问实现(不用)在struts.xml配置文件中,动态访问在struts2中默认是不开启的,
    如果想开启先 开启一个常量
    页面访问路径${pageContext.request.contextPath}/userAction!save.action
-->

<package name="demo" extends="struts-default" namespace="/">
<!--
    package:类似于代码包 区别不同action 要配置action 必须先配置package
    标签package的属性:
    name属性:值和功能本身没有关系,在一个配置文件中可以写多个,一个package标签中name属性值不能相同
    extends属性:属性值是固定的 struts-default 写了这个属性值之后,在package里面配置的类具有action功能
    namespace属性:属性值和action标签的name属性值构成访问路径 不写默认"/" ,一般值为"/"固定的
-->

    <!--全局结果页面配置-->
    <global-results>
        <result name="success">/hello.jsp</result>
    </global-results>
    <!--
        如果多个actoin,方法里面返回值相同,到页面也相同 这时候可以使用全局结果页面配置
        即配置全局结果页面同时配置局部结果页面,以局部结果页面为准
    -->

    <action name="hello" class="cn.ss.action.HelloAction">
        <!--
            action标签配置action访问路径
            action标签的属性:
            name属性:namespace属性值和action标准中的name属性值构成访问路径,一个package标签里
            可以写多个action ,但name值不能一样
            classe属性: Action的全路径
            method属性: 比如在Action里面默认执行的方法是execute()方法 ,在Action类里面可以写
            其他方法,让Action里面多个方法执行,使用method属性配置
        -->
    <result name="ok" type="dispatcher" >/hello.jsp</result>
    <!--
        result标签 根据Action的方法返回值 ,配置到不同路径里面
        标签result的属性
        name属性: method属性值=Action里面方法;方法的返回值=name的属性值
        type属性(重点): 配置如何到路径中(转发或重定向) type属性的默认值做转发操作
            属性值:dispatcher 默认值;做转发操作 值:dispatcher
            属性值:redirect 做重定向
            属性值:chain 转发到action 一般不用 会有缓存数据
            属性值:redirectAction 重定向到action 
            
    </action>

    <action name="customer_*" class="cn.ss.action.CustomerAction" method="{1}">
    <!--
        使用通配符*实现 actio标签的name属性写符号*
        执行Action类里面的add()方法,访问customer_add,使用customer_*,可匹配到* 相当于变成add
        执行Action类里面的update()方法,访问customer_update,使用customer_*,可匹配到* 相当于
        变成update
        使用* 匹配任意方法内容
        method属性值 取值*里面写"{1}"
     -->
    </action>
</package>
<struts>
            

web.xml

配置Struts2的过滤器

<web-app><!--web.xml配置文件的根目录-->
<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>

四 Action 类编写的三种方式

1. 创建普通类,这个类不继承任何类 不实现任何接口

2.创建类实现接口Action

3.创建类继承AtionSupport类(ActionSupport implements Action)(常用)

Action接口中有常量值可以直接拿来使用 SUCCESS="success" NONE="none"

none 表示方法没有返回值 这时候不需要配置result标签;

相当于方法public void 方法名(){},(这样写类也可以实现Action 但不常用)

五 访问Action的方法(重点)

1.使用action标签中的method属性值,属性值写Action方法名

2.使用通配符*实现 actio标签的name属性写符号*=Action类方法名 任意方法名,action标签里的method属性值 取*值 写{1}

3.动态访问实现(不用)

在struts.xml配置文件中,动态访问在struts2中默认是不开启的,如果想开启先开启一个常量

<constant name ="struts.enable.DynamicMehodInvocation" value="true"></constant>

页面访问路径${pageContext.request.contextPath}/userAction!save.action

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值