Struts 2 执行流程

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

学习流程(Struts架构图)

配置详解

  核心配置:

    

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

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

第一种修改方式

  1. src下新建struts.properties
  2.  
  3. struts-corejar包下的struts2下的default下有个修改encoding的,复制过来
  4.  
  5. struts.i18n.encoding=UTF-8即可修改编码为UTF-

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

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

第三种修改方式

  1. <context-param>
  2. <param-name>struts.i18n.encoding</param-name>
  3. <param-value>UTF-8</param-value>
  4. </context-param>

常量介绍

  1. struts.action.extension=action,,

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

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

  1. struts.devMode = false

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

1.热加载主配置

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

动态方法调用

1.(了解)

Demo类

  1. package com.littlepage.dynamic;
  2.  
  3. public class DemoAction {
  4. public String add() {
  5. System.out.println("添加用户");
  6. return "success";
  7. }
  8. public String del() {
  9. System.out.println("删除用户");
  10. return "success";
  11. }
  12. public String update() {
  13. System.out.println("修改用户");
  14. return "success";
  15. }
  16. public String find() {
  17. System.out.println("查找用户");
  18. return "success";
  19. }
  20. }

xml文件

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

访问调用!

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

console打印信息

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

2.(重点)

修改struts.xml

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

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

访问

  1. 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. js添加和删除class

    原生主要有三种方法: 1.className var DomClass = document.getElementById("id").className; //删除 pat Do ...

  2. CJSON在项目中的应用

    无需编译,只需将 cJSON.c.cJSON.h 添加到项目中即可使用

  3. reduce函数

    python中的reduce   python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是 ...

  4. app ios info权限配置:

    info权限配置: Privacy - Bluetooth Peripheral Usage Description --> App需要您的同意,才能访问蓝牙 Privacy - Calenda ...

  5. window安装pycharm Django

    pycharm 安装Pycharm  直接在官网下载就可以,这里说一下如何破解注册码的问题: 修改电脑中hosts文件(地址: C:\Windows\System32\drivers\etc ),改变 ...

  6. github爬虫100项目

    为了更好的巩固所学,在github上开始100爬虫项目,记录学习过程,也希望对他人的学习有帮助,目前还在持续更新中,有兴趣可以看看 地址: https://github.com/mapyJJJ/100 ...

  7. XiangBai——【CVPR2018】Multi-Oriented Scene Text Detection via Corner Localization and Region Segmentation

    XiangBai——[CVPR2018]Multi-Oriented Scene Text Detection via Corner Localization and Region Segmentat ...

  8. AIM Tech Round 5 (rated, Div. 1 + Div. 2) (A, B, E)

    B.Unnatural Conditions 题目链接 : http://codeforces.com/contest/1028/problem/B #include<iostream> ...

  9. Docker学习资源

    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口. ...

  10. java中存储mysql数据库时间类型

    Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型   date                 java.sql.Date   Datetime        ...