Struts 2 执行流程

首先,浏览器访问,经过Filter,Filter从src/struts.xml中寻找命名空间和action的名字,获取action类,从方法中拿到返回值,接着从result内部获取到hello.jsp

学习流程(Struts架构图)

配置详解

  核心配置:

    

     <!-- package元素:将我们的Action封装,可以在package中配置很多action
name:包名字,随便起,不能与其他包名重复
namespace:给action访问网络路径定义一个命名空间
extends:继承一个指定包
abstract属性:包是否为抽象的,标识属性。
-->
     <!-- action元素
name属性:决定了Action访问资源名
class属性:Action类的完整类名
method:方法名
-->
     <!-- result元素
name属性:标识结果处理名称,与action方法的返回值对应
type属性:指定调用某个result类来处理结果,默认使用转发
-->

修改struts的编码(加载顺序,3>1),可以替代Filter配置编码,解决post问题

第一种修改方式

在src下新建struts.properties

在struts-core的jar包下的struts2下的default下有个修改encoding的,复制过来

struts.i18n.encoding=UTF-8即可修改编码为UTF-

第二种修改方式(真正开发中)

在struts.xml下加入标签
<constant name="struts.i18n.encoding" value="UTF-8"></constant>

第三种修改方式

<context-param>
<param-name>struts.i18n.encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>

常量介绍

struts.action.extension=action,,

访问action时的后缀名,默认值为action或者空

如果修改为do,那么访问时必须加上.do,.do是struts1自带的

struts.devMode = false

指定struts2是否以开发模式运行

1.热加载主配置

2.提供更多错误信息输出,方便开发时的测试

动态方法调用

1.(了解)

Demo类

package com.littlepage.dynamic;

public class DemoAction {
public String add() {
System.out.println("添加用户");
return "success";
}
public String del() {
System.out.println("删除用户");
return "success";
}
public String update() {
System.out.println("修改用户");
return "success";
}
public String find() {
System.out.println("查找用户");
return "success";
}
}

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 配置动态方法常量 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="dynamic" namespace="/dynamic" extends="struts-default">
<action name="DemoAction" class="com.littlepage.dynamic.DemoAction">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>

访问调用!

http://localhost:8080/StrutsTest/dynamic/DemoAction!add

console打印信息

不推荐理由,不满足seo(search engine optimization)

2.(重点)

修改struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="dynamic" namespace="/dynamic" extends="struts-default">
<action name="DemoAction_*" class="com.littlepage.dynamic.DemoAction" method="{1}">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>

将action name的改为可通配,可通配在后面method中可以使用表达式进行通配符的取出

访问

http://localhost:8080/StrutsTest/dynamic/DemoAction_add

console打印

struts2中默认配置

练习:

Struts 2 执行流程 配置信息的更多相关文章

  1. Struts2第二篇【开发步骤、执行流程、struts.xml讲解、defalut-struts讲解】

    前言 我们现在学习的是Struts2,其实Struts1和Struts2在技术上是没有很大的关联的.Struts2其实基于Web Work框架的,只不过它的推广没有Struts1好,因此就拿着Stru ...

  2. struts的工作流程

    - 一个请求过来,走前端控制器StrutsPrepareAndExecuteFilter        -前端控制器是一个过滤器,过滤器中的核心方法是doFilter(),doFilter方法中首先处 ...

  3. Struts框架之 执行流程 struts.xml 配置详细

    1.执行流程 服务器启动: 1. 加载项目web.xml 2. 创建Struts核心过滤器对象, 执行filter  →  init()   struts-default.xml,    核心功能的初 ...

  4. Struts 2 Spring Hibernate三大框架的执行流程以及原理

    Struts2框架 一.简介 Struts2是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架.它基于当年的WebWork和XWork框架,继承其优点,同时 ...

  5. MyCat源码分析系列之——配置信息和启动流程

    更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)se ...

  6. struts2 之 【struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程】

    入门框架学习避免不了的问题: 1. 什么是框架? 简单的说,框架就是模板,模子,模型.就是一个可重用的半成品. 2. 如何学习框架? 学习框架其实就是学习规则,使用框架就是遵循框架的规则,框架是可变的 ...

  7. 配置Linux Kernel时make menuconfig执行流程分析

       在编译内核前,一般是根据已有的配置文件(一般在内核根目录下的arch/arm/configs/文件夹下,把该目录下的xxx_defconfig文件拷贝到内核根目录下,并重命名为.config)来 ...

  8. 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置

    上一篇博文我们做了一个hello world的程序,并且已经成功的跑起来了.这一篇我们来深入的了解一下SpringMVC的执行流程以及一些其它的配置. 一.执行流程 来解释一下上图中的各个名词1.Di ...

  9. Struts框架的执行流程或原理

    Struts2的执行流程如下: 1.浏览器发送请求,经过一系列的过滤器,到达StrutsPreapareAndExecteFilter 2.StrutsPrepareAndExectueFilter通 ...

随机推荐

  1. Mysql+keepalived双主

    搭建环境说明: master1:192.168.175.210 主 master2:192.168.175.211 备 keepalived的vip: 192.168.175.11(注意这是虚拟IP, ...

  2. nvidia-smi 实时查看

    需要用到 watch 命令: watch -n nvidia-smi

  3. TestFlight 测试

    问题1:iOS提交TestFlight测试显示缺少合规证明 解决:有的时候testFlight会显示@“缺少合规证明” 最简单的解决办法就是点击文字前边的黄色标识符,会询问你是否加密,选择相应选项就可 ...

  4. 第九届蓝桥杯C/C++B组省赛感想

    因为做了近三年的初赛题,都对了5题+,所以这次比赛前信心满满,心里想最少水个省二没问题.可我怎么知道今年的套路居然和以前不一样了!一题深搜都没有,想想一周前做的第七届初赛题,10题有3.4题深搜题. ...

  5. C#中类成员的执行顺序

    先进行细分: 类的成员分为:字段.属性.方法.构造方法 成员的修饰符:静态成员.实例成员 层次结构:父类.子类 先不考虑继承关系,执行顺序为: 静态字段静态构造方法实例字段实例构造方法属性和方法是在调 ...

  6. [批处理] Git中log的使用

    1.获取两个提交之间的日志: git log SHA-1_A.. SHA-1_B--pretty=format:"%cd: %s" --date=format:%Y%m%d > ...

  7. idea用到的快捷键

    之前一直用的eclipse,早就听说idea更智能,更便捷,于是,下载了idea,然后再破解,现在就慢慢抛弃eclipse,平时就用idea进行编码. idea的快捷键与eclipse还是有较大不同, ...

  8. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库

    使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...

  9. Centos7 安装tomcat

  10. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165215

    2018-2019-2 <网络对抗技术>Exp0 Kali安装 Week1 20165215 目录 Kali的下载及安装 网络配置 设置共享文件夹及剪切板 更新软件源 [Kali的下载及安 ...