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. 依据ECMA规范,手写一个bind函数

    Function.prototype.bind 函数,参见ECMA规范地址 如题,这次来实现一个boundFunction函数,不挂载在Function.prototype上,而是一个单独声明的函数. ...

  2. 命名空间"xx"已经包含了"xx"的定义

    例: namespace A.B {    public class C    {             } } 注:重名的不仅仅是类,还可以结构,枚举,命名空间本身也有可能重复. 这个类C若与命名 ...

  3. 接口自动化测试持续集成--Soapui接口测试

    接口测试目前笔者掌握的工具有三种: 一.python+requests+jenkins,优点:代码实现接口测试,对测试代码书写比较自由等:缺点:需要测试者需要有一定的代码基础: 二.jmeter+an ...

  4. C# Unity的使用

    Unity是微软推出的IOC框架, 使用这个框架,可以实现AOP面向切面编程,便于代码的后期维护,此外,这套框架还自带单例模式,可以提高程序的运行效率. 下面是我自己的案例,以供日后参考: 使用VS2 ...

  5. java多线程探究

    本文主要是一些线程理论性的知识,随后将贴出研究的源码,包含线程池,锁,线程组等简单的demo,欢迎大家下载1.进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程 ...

  6. jpa报错:Table 'dev-test.hibernate_sequence' doesn't exist

    Hibernate 能够出色地自动生成主键.Hibernate/EBJ 3 注释也可以为主键的自动生成提供丰富的支持,允许实现各种策略.其生成规则由@GeneratedValue设定的.这里的@id和 ...

  7. 使用Shader制作loading旋转动画

    效果图: 1.绕Z轴旋转的旋转矩阵 2.UV旋转的步骤 (1) 由于旋转矩阵是绕原点旋转的,要把要旋转的UV坐标平移到原点 i.uv -= float2(0.5, 0.5); float2 tempU ...

  8. Jenkins连接Window服务器,上传jar并启动

    https://blog.csdn.net/achenyuan/article/details/81181347

  9. 【JavaScript】轮播图

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  10. web开发前端面试知识点目录整理

    web开发前端面试知识点目录整理 基本功考察 关于Html 1. html语义化标签的理解; 结构化的理解; 能否写出简洁的html结构; SEO优化 2. h5中新增的属性; 如自定义属性data, ...