Struts2 整理

1. struts2详解

Struts2 = Struts1 + Xwork

1.1 Struts2开发流程:

版本: 2.3

1.1.1 引入jar文件

commons-fileupload-1.2.2.jar 【文件上传相关包】
commons-io-2.0.1.jar
struts2-core-2.3.4.1.jar 【struts2核心功能包】
xwork-core-2.3.4.1.jar 【Xwork核心包】
ognl-3.0.5.jar 【Ognl表达式功能支持表】
commons-lang3-3.1.jar 【struts对java.lang包的扩展】
freemarker-2.3.19.jar 【struts的标签模板库jar文件】
javassist-3.11.0.GA.jar 【struts对字节码的处理相关jar】

1.1.2 配置web.xml

Tomcat启动— 加载自身web.xml—加载所有项目的web.xml
通过在项目的web.xml中引入过滤器,
– Struts的核心功能的初始化,通过过滤器完成
– filter 【 (拦截器的标签)
————-init/ 启动执行
————-doFilter/ 访问执行
————-destroy
————-】


<!-- web.xml:  引入struts核心过滤器 -->
<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>

StrutsPrepareAndExecuteFilter 即为核心过滤器
来自jar包:struts2-core-2.3.4.1.jar
使用的struts的版本不同,核心过滤器类是不一样的!
struts1的核心过滤器就不是这个

1.1.3 开发Action

  1. struts中的action类取代之前的servlet
    action类,也叫做动作类; 一般继承ActionSupport类(即处理请求的类 )
  2. action中的业务方法,处理具体的请求
    必须返回String
    方法不能有参数
public class HelloAction extends ActionSupport {
    // 处理请求
    public String execute() throws Exception {}
}

1.1.4 配置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>
    <!--  Overwrite Convention -->
    <package name="xxx" extends="struts-default">
        <action name="hello" class="com.appp.action.HelloAction" method="execute">
            <result name="success">/success.jsp</result>
        </action>
    </package>

</struts>
package:  定义一个包。包作用,管理action(通常一个业务模板一个包)
    name:包的名字,包名不可重复
    extends:当前包继承自哪个包
        Struts中,包一定继承struts-default
        struts-default是在struts-default.xml中定的包
    abstract
        表示当钱包为抽象包;抽象包中不能再有action的定义,否则运行时报错
        sbstract=true  只有当当前的包被其他包继承时才用!
        比如:
            <package name="base" extends="struts-default abstract="true"></package>
            <package name="user" extends="base"></package>
    namespace:  名称空间,默认为"/",即jsp中什么都不用写,
                作为路径的一部分,访问路径= http://localhost:8080/项目名/名称空间/ActionName

action:  配置请求路径与Action类的映射关系
    name: 请求路径名称
    class:请求路径的action类的全名
    method:请求处理方法
result:
    name:action处理方法返回值
    type:跳转的结果类型
    标签中指定跳转的页面

1.2 Struts2执行流程:

服务器启动:
1. 加载项目web.xml
2. 创建Struts核心过滤器对象, 执行filter →  init()

struts-default.xml, 核心功能的初始化
struts-plugin.xml, struts相关插件
struts.xml 用户编写的配置文件

访问:
3. 用户访问Action, 服务器根据访问路径名称,找对应的aciton配置, **创建action对象**(后面每次访问,都会创建action实例)
4. 执行默认拦截器栈中定义的**18个拦截器**(总共定义的有32个拦截器)
5. 执行action的**业务处理方法**

1.3 struts-default.xml 详解:

1.3.1 目录: struts2-core-2.3.4.1.jar/ struts-default.xml

1.3.2 内容:

  1. bean节点指定struts在运行的时候创建的对象类型
  2. 指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】,
    包中定义了:
    2.1 跳转的结果类型
    dispatcher 转发,不指定默认为转发
    redirect 重定向
    redirectAction 重定向到action资源
    stream (文件下载的时候用)
    2.2 定义了所有的拦截器(定义了32个拦截器!)
    为了拦截器引用方便,可以通过定义栈的方式引用拦截器,
    标签interceptor-stack
    此时如果引用了栈,栈中的拦截器都会被引用!
    defaultStack
    默认的栈,其中定义默认要执行的18个拦截器!
内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读建议:由于本资源涉及较多底层概念和技术细节,建议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值