Struts 2 执行流程 配置信息
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 执行流程 配置信息的更多相关文章
- Struts2第二篇【开发步骤、执行流程、struts.xml讲解、defalut-struts讲解】
前言 我们现在学习的是Struts2,其实Struts1和Struts2在技术上是没有很大的关联的.Struts2其实基于Web Work框架的,只不过它的推广没有Struts1好,因此就拿着Stru ...
- struts的工作流程
- 一个请求过来,走前端控制器StrutsPrepareAndExecuteFilter -前端控制器是一个过滤器,过滤器中的核心方法是doFilter(),doFilter方法中首先处 ...
- Struts框架之 执行流程 struts.xml 配置详细
1.执行流程 服务器启动: 1. 加载项目web.xml 2. 创建Struts核心过滤器对象, 执行filter → init() struts-default.xml, 核心功能的初 ...
- Struts 2 Spring Hibernate三大框架的执行流程以及原理
Struts2框架 一.简介 Struts2是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架.它基于当年的WebWork和XWork框架,继承其优点,同时 ...
- MyCat源码分析系列之——配置信息和启动流程
更多MyCat源码分析,请戳MyCat源码分析系列 MyCat配置信息 除了一些默认的配置参数,大多数的MyCat配置信息是通过读取若干.xml/.properties文件获取的,主要包括: 1)se ...
- struts2 之 【struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程】
入门框架学习避免不了的问题: 1. 什么是框架? 简单的说,框架就是模板,模子,模型.就是一个可重用的半成品. 2. 如何学习框架? 学习框架其实就是学习规则,使用框架就是遵循框架的规则,框架是可变的 ...
- 配置Linux Kernel时make menuconfig执行流程分析
在编译内核前,一般是根据已有的配置文件(一般在内核根目录下的arch/arm/configs/文件夹下,把该目录下的xxx_defconfig文件拷贝到内核根目录下,并重命名为.config)来 ...
- 《SpringMVC从入门到放肆》二、SpringMVC的执行流程及默认配置
上一篇博文我们做了一个hello world的程序,并且已经成功的跑起来了.这一篇我们来深入的了解一下SpringMVC的执行流程以及一些其它的配置. 一.执行流程 来解释一下上图中的各个名词1.Di ...
- Struts框架的执行流程或原理
Struts2的执行流程如下: 1.浏览器发送请求,经过一系列的过滤器,到达StrutsPreapareAndExecteFilter 2.StrutsPrepareAndExectueFilter通 ...
随机推荐
- js添加和删除class
原生主要有三种方法: 1.className var DomClass = document.getElementById("id").className; //删除 pat Do ...
- CJSON在项目中的应用
无需编译,只需将 cJSON.c.cJSON.h 添加到项目中即可使用
- reduce函数
python中的reduce python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是 ...
- app ios info权限配置:
info权限配置: Privacy - Bluetooth Peripheral Usage Description --> App需要您的同意,才能访问蓝牙 Privacy - Calenda ...
- window安装pycharm Django
pycharm 安装Pycharm 直接在官网下载就可以,这里说一下如何破解注册码的问题: 修改电脑中hosts文件(地址: C:\Windows\System32\drivers\etc ),改变 ...
- github爬虫100项目
为了更好的巩固所学,在github上开始100爬虫项目,记录学习过程,也希望对他人的学习有帮助,目前还在持续更新中,有兴趣可以看看 地址: https://github.com/mapyJJJ/100 ...
- 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 ...
- AIM Tech Round 5 (rated, Div. 1 + Div. 2) (A, B, E)
B.Unnatural Conditions 题目链接 : http://codeforces.com/contest/1028/problem/B #include<iostream> ...
- Docker学习资源
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口. ...
- java中存储mysql数据库时间类型
Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型 date java.sql.Date Datetime ...