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. 使用rsync在linux(客户端)拉取windows(服务端)数据

    windows 服务端ip:172.18.18.70 Linux客服端ip: 172.18.54.11 1.windows服务端下载cwRsync Server , 地址:https://www.ba ...

  2. 一张图解释IaaS,PaaS,SaaS

    图片来源于MVA教程:快速入门——面向IT专业人员的Windows Azure IaaS

  3. PAT (Basic Level) Practice (中文)1023 组个最小数

    1023 组个最小数 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8 ...

  4. pyppeteer(python版puppeteer)基本使用

    一.前言 以前使用selenium的无头浏览器,自从phantomjs2016后慢慢不更新了之后,selenium也开始找下家,这时候谷歌的chrome率先搞出来无头浏览器并开放了各种api,随后fi ...

  5. oracle:SQL时间段

    oracle: SQL时间段 CREATEDATE between to_date('" + startDate + " 00:00:00','yyyy-mm-dd hh24:mi ...

  6. 服务器告警其一:硬盘raid问题

    问题描述 服务器一直间断发出告警音,但是根据raid类型的不同有一定可能进入系统. 问题详情 在LSI Mega Webbios自检之后系统开始出现告警音. 在Lsi Mega Webbios的ini ...

  7. 简单快速部署nexus3私服

    本文适用范围:用户规模不大,不需要考虑maven仓库负载均衡的群体. 为何部署nexus3 之前由于懒某些原因,所有开发人员自己定义.m2的settings,大多使用ali提供的maven仓库,但是最 ...

  8. jmeter完成md5加密的接口请求参数

    第一种方法: 这种方法比较简单,jmeter内置了一个md5的函数,可以直接使用.其中参数username是用户名,正常填写,password是密码经过md5加密 第二种方法: 需要有一定的编程技术, ...

  9. 【js】了解前端缓存,收获不止于此!

    了解前端缓存,收获不止于此! 这次我们来讲一下关于前端缓存的问题.感谢赵欢同学提供doc素材. 首先,开局我画了一张图,你会对文章有一个大局了解. 今天讲的是前端缓存. 前端缓存有3大种:如图,分为H ...

  10. STM32C语言与MDK基础

    Ifdef条件编译 Extern相当于全文件的全局变量,使用前需声明,加extern就行 Static,只在当前.c文件起作用,也可以定义函数,作用是提供HALL库用,不是给用户用. Weak前加两个 ...