• struts2起步


    虽然说最近struts2爆出的漏洞挺多,作为菜鸟还是要学习学习的,更何况我写不出。

    strucs2基本原理:

    这张图好熟悉,貌似说是官方的,不管了,能看懂能理解就好了啊

    struts2.xml配置

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <!-- START SNIPPET: xworkSample -->
    <struts>
        
        <!--constant常量设置-->
        
        <!--该属性指定加载Struts 2配置文件的配置文件管理器。该属性的默认值是org.apache.Struts2.config.DefaultConfiguration,这是Struts 2默认的配 置文件管理器。如果需要实现自己的配置管理器,开发者则可以实现一个实现Configuration接口的类,该类可以自己加载Struts 2配置文件。-->
        <constant name="struts.configuration" value="org.apache.Struts2.config.DefaultConfiguration" />
        
        <!--指定Web应用的默认Locale-->
        <constant name="struts.locale" value="locale"/>
        
        <!--该属性指定Struts 2的类型检测机制,通常支持tiger和notiger两个属性值。-->
        <constant name="struts.objectTypeDeterminer" value="tiger"/>
        
        <!--该属性指定Struts 2应用加载用户自定义的属性文件,该自定义属性文件指定的属性不会覆盖struts.properties文件中指定的属性。如果需要加载多个自定义属性文件,多个自定义属性文件的文件名以英文逗号(,)隔开-->
        <constant name="struts.custom.properties" value=""/>
        
        <!--指定将HTTP请求映射到指定Action的映射器,Struts 2提供了默认的映射器:org.apache.struts2.dispatcher.mapper.DefaultActionMapper。默认映射器根据请求的前缀与Action的name属性完成映射。-->
        <constant name="struts.mapper.class" value=""/>
        
        <!--该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true-->
        <constant name="struts.enable.SlashesInActionNames" value="false"/>
        
        <!--指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出-->
        <constant name="struts.i18n.encoding" value="UTF-8" />
        
        <!--该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发,但在产品发布阶段应将该属性设置为false-->
        <constant name="struts.i18n.reload" value="false" />
        
        <!--该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false-->
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
        
        <!--开发模式下使用,这样可以打印出更详细的错误信息 -->
        <constant name="struts.devMode" value="false" />
        
        <!--当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
        <constant name="struts.configuration.xml.reload" value="false" />
        
        <!--该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。-->
        <constant name="struts.custom.i18n.resources" value="globalMessages" />
        
        <!--该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。-->
        <constant name="struts.action.extension" value="action,do,atc" />
        
        <!--这个属性用于约定Action 类的根包(这个包是Java 类的包,而不是Struts.xml中配置的<package>节点)-->
        <constant name="struts.convention.package.locators.basePackage" value="org.apache.struts2.showcase" />
        
        <!--这个属性用于约定Action类执行完毕以后返回资源的结果路径,###必须以 "/" 开头,-->
        <constant name="struts.convention.result.path" value="/WEB-INF" />
        
        <!--指定排除在搜索Action之外的包。默认值为org.apache.struts.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.*-->
        <constant name="struts.convention.exclude.packages" value="org.apache.struts.*,org.springframework.web.struts.*,org.springframework.web.struts2.*,org.hibernate.*"/>
        
        <!--该属性指定Struts 2使用的FreeMarker管理器。该属性的默认值org.apache.struts2.views.freemarker.FreemarkerManager,这是Struts 2内建的FreeMarker管理器。-->
        <constant name="struts.freemarker.manager.classname" value="customFreemarkerManager" />
        
        <!--该属性设置是否通过JAR文件提供静态内容服务,该属性只支持true和false属性值,该属性的默认属性值是true-->
        <constant name="struts.serve.static" value="true" />
        
        <!--设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
        <constant name="struts.serve.static.browserCache" value="false" />
        
        <!--默认的视图主题 -->
        <constant name="struts.ui.theme" value="simple" />
        
        <!--与spring集成时,指定由spring负责action对象的创建-->
        <constant name="struts.objectFactory" value="spring" />
        
        <!--指定Spring框架的自动装配模式,该属性的默认值是name,即默认根据Bean的name属性自动装配-->
        <constant name="struts.objectFactory.spring.autoWire" value="name"/>
        
        <!--该属性指定整合Spring框架时,是否缓存Bean实例,该属性只允许使用true和false两个属性值,它的默认值是true。通常不建议修改该属性值。-->
        <constant name=" struts.objectFactory.spring.useClassCache" value="true"/>
        
        <!--上传文件的大小限制-->
        <constant name="struts.multipart.maxSize" value=“10701096"/>
    
        <!--该属性指定处理multipart/form-data的MIME类型(文件上传)请求的框架,该属性支持cos、pell和jakarta等属性值,
        即分别对应使用cos的文件上传框架、pell上传及common-fileupload文件上传框架。该属性的默认值为jakarta。
         注意  如果需要使用cos或者pell的文件上传方式,则应该将对应的JAR文件复制到Web应用中。例如,使用cos上传方式,
         则需要自己下载cos框架的JAR文件,并将该文件放在WEB-INF/lib路径下。-->
        <constant name="struts.multipart.parser" value="jakarta"/>
        
        <!--该属性指定上传文件的临时保存路径,该属性的默认值是javax.servlet.context.tempdir。-->
        <constant name="struts.multipart.saveDir"  value="javax.servlet.context.tempdir" />
        
        
        <!--其中最常用的有:
        
        指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出
            <constant name="struts.i18n.encoding" value="UTF-8"/>
        自定义后缀修改常量
            <constant name="struts.action.extension" value="do"/>
        设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 
            <constant name="struts.serve.static.browserCache" value="false"/>
        当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 
            <constant name="struts.configuration.xml.reload" value="true"/>
        开发模式下使用,这样可以打印出更详细的错误信息 
            <constant name="struts.devMode" value="true" />
        默认的视图主题 
            <constant name="struts.ui.theme" value="simple" />
        与spring集成时,指定由spring负责action对象的创建 
            <constant name="struts.objectFactory" value="spring" />
        该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
            <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
        上传文件的大小限制
            <constant name="struts.multipart.maxSize" value=“10701096"/>
        
        -->
        
        
        <!--=====================分割线==========================-->
        <!--以下是include,设置多个配置文件-->
        <include file="struts-interactive.xml" />
    
        <include file="struts-hangman.xml" />
    
        <include file="struts-tags.xml"/>
    
        <include file="struts-validation.xml" />
    
        <include file="struts-actionchaining.xml" />
    
        <include file="struts-fileupload.xml" />
    
        <include file="struts-person.xml" />
    
        <include file="struts-wait.xml" />
    
        <include file="struts-token.xml" />
    
        <include file="struts-model-driven.xml" />
    
        <include file="struts-filedownload.xml" />
    
        <include file="struts-conversion.xml" />
    
        <include file="struts-freemarker.xml" />
    
        <include file="struts-tiles.xml" />
    
        <include file="struts-xslt.xml" />
        
        
        
        <!--=====================分割线==========================-->
        <!--以下是package-->
        <package name="default" extends="struts-default">
            <interceptors>
                <interceptor-stack name="crudStack">
                    <interceptor-ref name="checkbox" />
                    <interceptor-ref name="params" />
                    <interceptor-ref name="staticParams" />
                    <interceptor-ref name="defaultStack" />
                </interceptor-stack>
            </interceptors>
    
            <default-action-ref name="showcase" />
    
            <action name="showcase">
                <result>/WEB-INF/showcase.jsp</result>
            </action>
    
            <action name="help">
                <result>/WEB-INF/help.jsp</result>
            </action>
    
            <action name="viewSource" class="org.apache.struts2.showcase.source.ViewSourceAction">
                <result>/WEB-INF/viewSource.jsp</result>
            </action>
    
            <action name="date" class="org.apache.struts2.showcase.DateAction" method="browse">
                <result name="success">/WEB-INF/date.jsp</result>
            </action>
    
        </package>
    
        <package name="skill" extends="default" namespace="/skill">
            <default-interceptor-ref name="crudStack"/>
    
            <action name="list" class="org.apache.struts2.showcase.action.SkillAction" method="list">
                <result>/WEB-INF/empmanager/listSkills.jsp</result>
                <interceptor-ref name="basicStack"/>
            </action>
            <action name="edit" class="org.apache.struts2.showcase.action.SkillAction">
                <result>/WEB-INF/empmanager/editSkill.jsp</result>
                <interceptor-ref name="params" />
                <interceptor-ref name="basicStack"/>
            </action>
            <action name="save" class="org.apache.struts2.showcase.action.SkillAction" method="save">
                <result name="input">/WEB-INF/empmanager/editSkill.jsp</result>
                <result type="redirect">list.action</result>
            </action>
            <action name="delete" class="org.apache.struts2.showcase.action.SkillAction" method="delete">
                <result name="error">/WEB-INF/empmanager/editSkill.jsp</result>
                <result type="redirect">list.action</result>
            </action>
        </package>
    
        <package name="employee" extends="default" namespace="/employee">
            <default-interceptor-ref name="crudStack"/>
    
            <action name="list" class="org.apache.struts2.showcase.action.EmployeeAction" method="list">
                <result>/WEB-INF/empmanager/listEmployees.jsp</result>
                <interceptor-ref name="basicStack"/>
            </action>
            <action name="edit-*" class="org.apache.struts2.showcase.action.EmployeeAction">
                  <param name="empId">{1}</param>
                <result>/WEB-INF/empmanager/editEmployee.jsp</result>
                <interceptor-ref name="crudStack"><param name="validation.excludeMethods">execute</param></interceptor-ref>
            </action>
            <action name="save" class="org.apache.struts2.showcase.action.EmployeeAction" method="save">
                <result name="input">/WEB-INF/empmanager/editEmployee.jsp</result>
                <result type="redirect">list.action</result>
            </action>
            <action name="delete" class="org.apache.struts2.showcase.action.EmployeeAction" method="delete">
                <result name="error">/WEB-INF/empmanager/editEmployee.jsp</result>
                <result type="redirect">list.action</result>
            </action>
        </package>
    
    </struts>
    
    <!-- END SNIPPET: xworkSample -->

    好好学习,天天向上!!!

  • 相关阅读:
    DEVMODE 结构体
    VS2019如何将主菜单从标题栏移到单独一行
    最近学到的东西
    线上问题处理相关思考
    mybatis+spring
    jenkins
    自动化case校验点
    Sqlserver大数据迁移,导出-》导入(BULK INSERT)
    阿里P7大佬带你解密Sentinel
    《高可用系列》-限流神器Sentinel,不了解一下吗?
  • 原文地址:https://www.cnblogs.com/liangqinghai/p/6561695.html
Copyright © 2020-2023  润新知