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          【struts对java.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>

    

  

struts2配置 匹配原则 配置各项默认的更多相关文章

  1. struts2视频学习笔记 03-06(Struts 2配置文件无提示问题,Action配置中的各项默认值,各种转发类型)

    课时3 解决Struts 2配置文件无提示问题(eclipse):window→preference→XML→XML Catlog

  2. Struts2的动态Action和全局跳转视图以及配置各项默认值

    1:Struts2的默认访问后缀是.action(特别需要注意的是改了配置文件web.xml或者struts.xml需要重启服务器) 2:Struts2中常用的常量介绍:<!-- 一:全局配置 ...

  3. 03. struts2中Action配置的各项默认值

    Action中的各项默认值 Action各项配置 <action name="helloworld" class="com.liuyong666.action.He ...

  4. Struts2笔记——struts.xml配置详解

    访问HelloWorld应用的路径的设置 * 在struts1中,通过<action path=“/primer/helloWorldAction.action”>节点的path属性指定访 ...

  5. Struts2(五)常量的配置

    Struts2 常量大多在 默认的配置文件中已经配置好,但根据用户的需求不同,开发的要求不同,需要修改这些常量值,修改的方法就是在配置的文件对常量进行重新配置 在struts.xml 文件中使用< ...

  6. Struts2学习笔记二 配置详解

    Struts2执行流程 1.简单执行流程,如下所示: 在浏览器输入请求地址,首先会被过滤器处理,然后查找主配置文件,然后根据地址栏中输入的/hello去每个package中查找为/hello的name ...

  7. struts2 的struts.xml配置详解

    在应用struts框架进行开发时,必不可少的一步就是对struts.xml进行配置,对于该文件了解越多,我们开发起一应用程序定会更加顺手.下面我们看一下struts.xml的内容,每一项都有什么作用. ...

  8. Struts2 拦截器具体配置过程

    拦截器差点儿遍布每个程序中,所以贴出拦截器配置的具体过程,希望可以帮到大家. Struts2 拦截器具体配置过程 <interceptors> <!-- 先定义拦截器 --> ...

  9. Struts2学习笔记(二)——配置详解

    1.Struts2配置文件加载顺序: default.properties(默认常量配置) struts-default.xml(默认配置文件,主要配置bean和拦截器) struts-plugin. ...

随机推荐

  1. 《Exception》第八次团队作业:Alpha冲刺

    一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...

  2. 【XSY3350】svisor - 点分治+虚树dp

    题目来源:NOI2019模拟测试赛(九) 题意: 吐槽: 第一眼看到题觉得这不是震波的完全弱化版吗……然后开开心心的码了个点分治 码到一半突然发现看错题了……心态崩了于是就弃疗手玩提答去了 于是就快乐 ...

  3. [tyvj-1061]Mobile Service 动态规划

    滚动数组优化一波. 原设计状态:表示三个员工分别的位置和执行到的任务. 考虑到:执行完第i个任务,一定有员工在pos[i],那么就可以压一维,空间复杂度就算不滚动数组也可以了. (喜闻乐见,今天第一次 ...

  4. Python设计模式--单例模式(懒汉式)

    1. 单例模式 --> 单一(唯一)的实例. 在整个运行时间内, 内存中只有一个对象, 一般该对象涉及网络,资源等操作. 2. 单例模式一般分为懒汉式和饿汉式 懒汉式内存占用更加合理. 3. 调 ...

  5. C#实现简单的串口通信

    前言 本着学习研究的态度,用c#语言实现简单的串口通信工具. 一.串口通信原理 串口通信 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比 ...

  6. BigInteger类(高精度整型)

    位置:java.math.BigInteger 作用:提供高精度整型数据类型及相关操作 一.基本介绍 BigInteger为不可变的任意精度的整数(对象创建后无法改变,每次运算均会产生一个新的对象). ...

  7. CAD教程----圆的优化命令viewres

    CAD软件为了节省内存加快打开图纸的速度,会在显示圆形的时候,用很粗燥的直线表示园,这时我们可以不节省内存,使用viewres将圆形完整的显示出来. 这个值设置的越大,圆越圆(好绕口!)

  8. CF47A Triangular numbers

    CF47A Triangular numbers 题意翻译 给定一个数n,问你是否存在一个整数i,满足i*(i+1)/2=n. 若存在,输出"YES",否则输出"NO&q ...

  9. 产品经理---- idea good idea

    想问题有不同的思想. 1.先去娶老婆再生娃. 我有啥,我能用这些做啥? [大概这就是泯然众人的思想吧] 2.先做衣服后长肉 我想要做个啥?然后我需要怎么做?怎么做的什么? 好的产品经理我认为是第二种. ...

  10. 【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】

    [056-Merge Intervals(区间合并)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a collection of intervals, ...