zoukankan      html  css  js  c++  java
  • 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的业务处理方法。

  • 相关阅读:
    (二分查找 拓展) leetcode 69. Sqrt(x)
    (二分查找 拓展) leetcode 162. Find Peak Element && lintcode 75. Find Peak Element
    (链表) lintcode 219. Insert Node in Sorted Linked List
    (二分查找 拓展) leetcode 34. Find First and Last Position of Element in Sorted Array && lintcode 61. Search for a Range
    (最短路 Floyd) P2910 [USACO08OPEN]寻宝之路Clear And Present Danger 洛谷
    (字符串 数组 递归 双指针) leetcode 344. Reverse String
    (二叉树 DFS 递归) leetcode 112. Path Sum
    (二叉树 DFS 递归) leetcode 101. Symmetric Tree
    (二叉树 递归) leetcode 144. Binary Tree Preorder Traversal
    (二叉树 递归 DFS) leetcode 100. Same Tree
  • 原文地址:https://www.cnblogs.com/biehongli/p/6416853.html
Copyright © 2011-2022 走看看