zoukankan      html  css  js  c++  java
  • struts2配置 匹配原则 配置各项默认

    struts开发流程

    1,引入jar包

    2,配置web.xml

    3,开发action类

    4,配置struts.xml

     

    版本: 2.3

    引入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

    配置web.xml

    Tomcat启动-》加载自身web.xml---》加载所有项目的web.xml

    通过在项目的web.xml中引入过滤器,

    -》Struts的核心功能的初始化,通过过滤器完成

    》 filter

    init/      启动执行

    doFilter/   访问执行

    destroy

    <!-- 引入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>

    struts2-core-2.3.4.1.jar

    StrutsPrepareAndExecuteFilter  即为核心过滤器

    注意:

     使用的struts的版本不同,核心过滤器类是不一样的!

    • 开发Action

    注意:

    1. action类,也叫做动作类; 一般继承ActionSupport

        即处理请求的类  (struts中的action类取代之前的servlet)

    2. action中的业务方法,处理具体的请求

    -》 必须返回String

    》 方法不能有参数

    public class HelloAction extends ActionSupport {

    // 处理请求

    public String execute() throws Exception {}

    }

     

    • 配置struts.xml

       引入struts.xml文档配置总struts.xml文件(src目录下)

      <struts>

        <include file="其他struts.xml文件路径"></include>

      </struts>

      当前包新建struts.xml文件配置action

      <struts name="名字任意" extends="struts-default"><package>>action name="与请求路径中名字一致" class="要处理的action类" method="处理的方法|"><result name="返回的标记">结果页面</result></action></package></struts>

    struts执行l流程

      

      服务器启动:

        1. 加载项目web.xml

        2. 创建Struts核心过滤器对象, 执行filter --> init()

          struts-default.xml,    核心功能的初始化

          struts-plugin.xml,     struts相关插件

          struts.xml    用户编写的配置文件

      访问:

        3. 用户访问Action, 服务器根据访问路径名称,找对应的aciton配置, 创建action对象

        4.执行默认拦截器栈中定义的18拦截器

        5. 执行action业务处理方法

      

    每个 action 都必须有一个 name 属性, 该属性和用户请求 servletPath 之间存在着一一对应关系


    二:创建action方法

      1.继承actionsupport

      2.实现action接口

      3.不继承任何类不实现任何接口

        class ActionTest{

          private Strign name;

          public void setName(String name){

              this.name = name;

          }

        public String login(){

          return "success";

        }

      }

        url中后跟上?name=xxx

    三 通配符的使用

        在struts中可以用*与}{1}优化配置

    四 struts中路径匹配原则

        1、获得请求路径的URI,例如url是:
             /Struts2_01/hello_a/a/b/helloWorld.action
        2、首先查询namespace为/hello_a/a/b的package,
              如果存在这个package,则在这个package中查询名字为helloWorld的
              action,如果不存在这个package则转步骤3
        3、查询namespace为/hello_a/a的package,
              如果存在这个package,则在这个package中寻找名字为helloWorld的
              action,如果不存在这个package,则转步骤4
        4、查询namespace为/hello_a的package,
              如果存在这个package,则在这个package中寻找名字为helloWorld的
              action,如果仍然不存在这个package,则转步骤5
        5、查询默认的namaspace的package
              查询名字为helloWorld的action(默认的命名空间为空字符串“/” )
              如果还是找不到,页面提示404找不到action的异常。

     五 修改默认后缀

       struts2中默认是.action

      如何修改默认访问后缀

        1,struts的action访问后缀在哪里定义

          struts-core-2.3.4-1.jar'/org.apache.struts2/defaule.properties

          struts.action.extension=action

        2,在struts全局配置中通过常量修改

           <constant name=:"struts.action.extension"  value=“”action,,”></constant> //后缀为action或是没有

              value="action"//后缀只能是action value="action,do,"//后缀为action或是do或是没有

     六  动态方法调用

        首先开启动态方法

              该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为 false
                  <constant name="struts.enable.DynamicMethodInvocation" value="false"/>

         在地址栏中后面输入actionname+! 方法(即为动态调用方法)

     七 全局跳转视图配置

       <global-result>

          <result name = "success">/index.jsp</result>  

       </global=result>   //寻找的时候先去action中找然后在去全局配置中找

                //放置的时候要防止所有的action前面

     八 配置各项默认值

        class默认访问struts-default中配置(default-cllss-ref class="com.opensymphony.xwork2.ActionSupport")

          actionsupport

        method默认访问execute()方法

        execute返回默认success去对应的全局视图中去找 找不见返回404错误页面

       问题:什么时候不配置class  即处理的action

          答案:当访问WEB-INF下的资源的时候

          <action name="xxx" >

            <result name = "success">/WEB-INT/index.jsp</result>  //记住不能加 入 type ="redirect"因为在重定向中不能直接访问web-inf下的资源 必须要在服务器内部访问

          </action>

         


      

  • 相关阅读:
    C#验证码识别类网上摘抄的
    C#如何用WebClient动态提交文件至Web服务器和设定Http响应超时时间
    C#制作曲线图源码
    在PHP中怎样实现文件下载?
    ASP.NET如何调用Web Service
    MSDN中关于读取web.config的那块,System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString
    饿也要做一个和这个差不多的blog,但功能上有要增强的
    理解能力的高低决定人们的学习能力的高低
    有点困惑了,不知道是从smartClient入手还是从做网站web入手学习.net技术
    什么工厂模式?反射, 晕了,有书吗,推荐推荐.....5555555555555
  • 原文地址:https://www.cnblogs.com/hello-liyb/p/7750289.html
Copyright © 2011-2022 走看看