• Struts2的常见的配置文件介绍


    1:package 定义一个包。 包作用,管理action。 (通常,一个业务模板用一个包)
      常见属性及其说明:

        (1)name  包的名字;以方便在其他处引用此包,此属性是必须的。 包名不能重复;       

        (2)extends 当前包继承自哪个包,用于声明继承的包。在struts中,包一定要继承struts-default ;

            struts-default在struts-default.xml中定的包

       (3)abstract  表示当前包为抽象包; 抽象包中不能有action的定义,否则运行时期报错
                        abstract=true  只有当当前的包被其他包继承时候才用!
                        如:
                            <package name="basePackage" extends="struts-default" abstract="true"></package>
                            <package name="user" extends="basePackage">

       (4) namespace   指定名称空间,也就是访问此包下的Action需要访问的路径,默认为"/"
                      作为路径的一部分
                      访问路径=  http://localhost:8080/项目/名称空间/ActionName
    2:action   配置请求路径与Action类的映射关系,                                        常见属性及其说明:
             (1)name  请求路径名称,用于配置Action对象被请求的URL映射
             (2)class 请求处理的aciton类的全名
             (3)method 请求处理方法,设置请求Action对象时,调用对象的哪一个方法。       
    3:result                                                          常见属性及其说明:
           (1)name  action处理方法返回值 。
           (2)type  跳转的结果类型,用于设置返回结果的类型,如请求转发,重定向等。
           (3)标签体中指定跳转的页面。


     简单的配置如下所示:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     <!-- 生命包 -->
     8     <package name="helloWorld" extends="struts-default" abstract="false" namespace="/">
     9         <!-- 定义action -->
    10         <action name="hello" class="com.bie.HelloAction" method="execute">
    11             <!-- 显示成功的jsp页面 -->
    12             <result name="success" type="dispatcher">success.jsp</result>
    13         </action>
    14     </package>
    15 </struts>

     4:通配符实现简化配置

    第一步:引包,略过,前面已经写过

    第二步:配置web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
     3   <display-name>struts2_20170219</display-name>
     4   <welcome-file-list>
     5     <welcome-file>index.html</welcome-file>
     6     <welcome-file>index.htm</welcome-file>
     7     <welcome-file>index.jsp</welcome-file>
     8     <welcome-file>default.html</welcome-file>
     9     <welcome-file>default.htm</welcome-file>
    10     <welcome-file>default.jsp</welcome-file>
    11   </welcome-file-list>
    12   
    13   <!-- 引入struts2的核心过滤器 -->
    14   <filter>
    15       <!-- 过滤器的名称 -->
    16       <filter-name>struts2</filter-name>
    17       <!-- 过滤器类 -->
    18       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    19   </filter>
    20   <filter-mapping>
    21       <!-- 过滤器名称 -->
    22       <filter-name>struts2</filter-name>
    23       <!-- 过滤器映射 -->
    24       <url-pattern>/*</url-pattern>
    25   </filter-mapping>
    26 </web-app>

    第三步:开发action

     1 package com.bie;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 /** 
     6 * @author BieHongLi 
     7 * @version 创建时间:2017年2月20日 下午1:29:55 
     8 * 
     9 */
    10 public class RegisterAction extends ActionSupport{
    11 
    12     private static final long serialVersionUID = 1L;
    13 
    14     public String login(){
    15         System.out.println("登陆的方法");
    16         return SUCCESS;
    17     }
    18     
    19     public String register(){
    20         System.out.println("注册的方法");
    21         return SUCCESS;
    22     }
    23 }

    第四步:配置struts.xml,先使用了普通的方法,后使用了通配符进行配置;

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
     4     "http://struts.apache.org/dtds/struts-2.0.dtd">
     5 
     6 <struts>
     7     <!-- 声明包 -->
     8     <package name="helloWorld" extends="struts-default" abstract="false" namespace="/">
     9         <!-- 定义action -->
    10         <action name="hello" class="com.bie.HelloAction" method="execute">
    11             <!-- 显示成功的jsp页面 -->
    12             <result name="success" type="dispatcher">success.jsp</result>
    13         </action>
    14     </package>
    15     
    16     <!-- 声明包 -->
    17     <package name="login" extends="struts-default" abstract="false" namespace="/">
    18         <action name="login" class="com.bie.RegisterAction" method="login">
    19             <result name="success">success.jsp</result>
    20         </action>
    21         
    22         <action name="register" class="com.bie.RegisterAction" method="register">
    23             <result name="success">success.jsp</result>
    24         </action>
    25     </package>
    26     
    27     <!-- 通配符的实现简单配置 -->
    28     <package name="loginRegister" extends="struts-default" abstract="false" namespace="/">
    29         <action name="login_*_*" class="com.bie.RegisterAction" method="{1}">
    30              <result name="success">success.jsp</result>
    31         </action>
    32     </package>
    33 </struts>

    结果如下,访问的时候如此访问即可。


    5:struts-default.xml详解
    目录:struts-core.jar/struts-default.xml详解
    内容:
        (1):bean节点指定了struts在允许的时候创建的对象类型
        (2):指定struts-default包【用户写的package一样要继承此包】
        (3):package struts-default中定义了:
            a:跳转的结果类型:
                dispatcher转化,不指定默认为转发;
                redirect重定向;
                redirectAction重定向到action资源;
                stream文件下载的时候使用;
            b:定义了所有的拦截器;

            定义了32个拦截器,
        为了拦截器引用方便,可以通过定义栈的方式引用拦截器
        此时如果引用了栈,栈中的拦截器都会被引用;
            c:默认执行的拦截器栈,默认执行的action;
                <default-interceptor-ref name="defaultStack"/>
                <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />


    6:拦截器,拦截器功能与过滤器功能类似
    相同点和不同点:
        共同点:都是拦截资源的;
        不同点:拦截器,拦截所有资源都可以,包括.jsp,servlet,css,js,img等等,过滤器是servlet的概念,可已在struts中使用和servlet中使用;
                   过滤器,只拦截action请求;是struts的概念,拦截器只在struts2中使用。          


    7:struts2的执行流程
        服务器启动
        (1):加载项目web.xml
        (2):创建struts核心过滤器,执行filter--->init()方法
            struts-default.xml---》核心功能的初始化;
            struts-plugin.xml---》struts的相关插件;
            struts.xml用户编写的配置文件;
        访问:
            (3):用户访问action,服务器根据访问路径名称,找到对应的action配置,创建action对象。
            (4):执行默认的拦截器栈中定义的18个拦截器。
            (5):执行action的业务处理方法。

  • 相关阅读:
    自己奋斗才有用,人要坚持到成功为止
    自己需要的都是靠自己争取,人生只有自己才靠得住
    不如意也是要过日子,人是不可能和天斗的
    懂得满足也是好的,人要学会知足才会感到幸福
    不要让自己有后悔的时候,人都是要不负自己的青春年少
    ES6 の 块级作用域
    javascript中this的指向分析
    let & var 的区别
    npm 全局安装环境配置
    visibilitychange => 获取页面的可见性
  • 原文地址:https://www.cnblogs.com/biehongli/p/6416853.html
Copyright © 2020-2023  润新知