注意每次修改配置文件后必须项目重启

Structs2=structs1+xwork

Struct2框架预先实现了一些功能:

  1.请求数据的封装;2.文件上传的功能3.对国际化功能的简化4.文件效验功能

1.开发Structs框架的步骤:

  1)引入8大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          strutsjava.lang包的扩展】

    freemarker-2.3.19.jar            struts的标签模板库jar文件】

    javassist-3.11.0.GA.jar           struts对字节码的处理相关jar

  2)配置web.xml

    主要配置filter Struct过滤器,StructsPrepareAndExecuteFilter核心过滤器

 

   //引入struct核心过滤器
    <filter>
        <filter-name>struct2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struct2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

  3)开发Action 

    方法满足:无参数,放回值为String,public修饰

编写普通类1.继承ActionSupport有数据效验时必须继承;2.或者实现action接口
     3.什么都不写,直接return ”success”再从structs.xml中找到对应的返回页面
例如:

public String register() {
System.out.println("register()" + userName);
return "register";
}

再配置文件中配置

<action name="register" class="cn.itcast.a_config.UserAction" method="register">
<result name="success">/index.jsp</result>
</action>

可以使用通配符优化配置

<!-- 使用通配符优化上面的步骤 -->
<!-- http://localhost:8080/struts02/user_login -->
<action name="user_*" class="cn.itcast.a_config.UserAction" method="{1}">
<result name="{1}">/{1}.jsp</result>
</action>


public class HelloAction extends ActionSupport {
    // 处理请求
    public String execute() throws Exception {}
}

  4)配置struct.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!-- 
        package   定义一个包。 包作用,管理action。
                   (通常,一个业务模板用一个包)
           name  包的名字; 包名不能重复;
           extends 当前包继承自哪个包
                      在struts中,包一定要继承struts-default
                     struts-default在struts-default.xml中定的包
           abstract  
                     表示当前包为抽象包; 抽象包中不能有action的定义,否则运行时期报错
                    abstract=true  只有当当前的包被其他包继承时候才用!
                    如:
                        <package name="basePackage" extends="struts-default" abstract="true"></package>
                       <package name="user" extends="basePackage">
              namespace   名称空间,默认为"/"
                              作为路径的一部分
                             访问路径=  http://localhost:8080/项目/名称空间/ActionName
              
              
          
        action   配置请求路径与Action类的映射关系
                 name  请求路径名称
                 class 请求处理的aciton类的全名
                 method 请求处理方法        
        result
                 name  action处理方法返回值 
                 type  跳转的结果类型
                   标签体中指定跳转的页面
                    
     -->
    <package name="user" extends="struts-default" namespace="/">
        <action name="login" class="cn.itcast.b_execute.UserAction" method="login">
            <result name="login">/index.jsp</result>
        </action>
    </package> 
    
</struts>

2.访问流程:

   tomcat服务器启动-》读取web,xml-》读取struct2核心过滤器-》初始化过滤器-》init方法(这里分别读取了struct-default.xml核心功能初始化有拦截器等;struct-plugin.xml:struct相关插件;struct.xml用户编写的xml)-》读取到struct.xml后找到action类-》读取structs.properties用户自定义配置文件会覆盖Structs.xml中的常量设置-》加载到内存中等待访问再实例化action类

java深入探究12-框架之Structs

3.一些配置文件详解

 struct-default.xml

目录:struts2-core-2.3.4.1.jar/ struts-default.xml
 内容:
    1. bean节点指定struts在运行的时候创建的对象类型
    2.指定struts-default包  【用户写的package(struts.xml)一样要继承此包 】
        package  struts-default  包中定义了:
            a.  跳转的结果类型
                dispatcher    转发,不指定默认为转发
                redirect       重定向
                redirectAction  重定向到action资源
                stream        (文件下载的时候用)
            b. 定义了所有的拦截器
                  定义了32个拦截器!
                  为了拦截器引用方便,可以通过定义栈的方式引用拦截器,
                此时如果引用了栈,栈中的拦截器都会被引用!
                
                defaultStack
                    默认的栈,其中定义默认要执行的18个拦截器!


            c. 默认执行的拦截器栈、默认执行的action
                <default-interceptor-ref name="defaultStack"/>
               <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />


<interceptor 
name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
<interceptor 
name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2023-03-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-16
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-02-19
  • 2021-10-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案