struts2学习笔记2 -struts2的开发步骤和工作原理
struts2的开发步骤:
1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form)
2.开发action类,struts2对action并没有过多的要求,只要求:
a 推荐实现action接口,或继承actionsupport类
b 为每个请求参数都提供feild,并为之提供相应的setter和getter方法
c 该action类应该有无参数构造器
3.配置action类
所有action都需要放在package里配置。
<action>元素有如下属性:
name 指定该action处理那个请求
class 指定该action对应的处理类 即java文件
method:指定使用action的那个方法来处理用户请求。默认是execute()方法
struts2工作原理和流程:
1.浏览器发送请求,abc.action,.action看web.xml中配置的filter
2.浏览器发送的请求被StrutsPrepareAndExecuteFilter来过滤所有的请求(在web.xml)指定该类
3.StrutsPrepareAndExecuteFilter会根据class路径找到该action类,会去创建action实例,加入请求为abc,StrutsPrepareAndExecuteFilter会搜索struts.xml中name为abc的action配置,根据class属性使用反射来创建action实例
4.4.调用
Map<String,String>
paramMap=request.getParamterMap();
----返回所有请求 参数名使用循环(String
paramName:paramMap.keyset()){
//得到请求参数名对应的setter方法。
action类.getMethod("set"+paramName的首字母大写)
;
//得到请求参数对应的值
String paramValue=paramMap.get(paramName);
//已action实例为调用者,调用setter方法,把请求参
数值作为参数值传入。
setter.invoke(actionInst,paramValue);
5.再通过反射调用method属性所指定的方法,返回一个
字符串
6.根据struts.xml文件中的<result.../>元素的name以
及物理视图资源,跳转到实际的视图资源
action类.getMethod("set"+paramName的首字母大
写)//请求参数对应的setter方法
-------------------------------------如何在
action中访问servlet api--------------------
有些时候需要访问servlet api 比如我们要把数据存入
session、application。以及添加cookie
(response.addCookie())
struts2提供了两种方式访问servlet api :
a.伪访问。借助于ActionContext。
ActionContext提供了getSession -模拟访问http
session
getApplicatin -模拟访问
Application
b 真访问 添加cookie 直接访问servlet api 借助月
ServletActionContext
ServletActionContext提供了如下静态方法;
static PageContext getPageContext();
static HttpServletRequest getRequest();
static HttpServletResponse getResponse();
static ServletContext getServletContext();
struts2学习笔记2 -struts2的开发步骤和工作原理的更多相关文章
- Struts2学习笔记(一):Struts2开发环境的配置
一.Struts2应用所需的jar文件. 开发struts2应用需要依赖的jar文件在解压目录下的lib文件夹里面.开发struts2程序最少需要的jar文件为:struts2-core-2.xx.j ...
- Struts2学习笔记--Struts例子及开发流程
参考资料:http://blog.csdn.net/hntyzgn2010/article/details/5547753 http://chenlh.iteye.com/blog/464341 入门 ...
- struts2学习笔记--使用struts2插件实现ajax处理(返回json数据)
贴一个简单的例子,通过jquery的post调用action,定义一个对象User,有name和age属性,实例化几个对象,以json的格式返回到jsp,在前台页面显示出来,模拟用户列表. 导入相关j ...
- struts2学习笔记之六:struts2的Action访问ServletAPI的几种方式
方法一:通过ActionContext访问SerlvetAPI,这种方式没有侵入性 Action类部分代码 import com.opensymphony.xwork2.ActionContext; ...
- Redux学习笔记:Redux简易开发步骤
该文章不介绍Redux基础,也不解释各种乱乱的概念,网上一搜一大堆.只讲使用Redux开发一个功能的步骤,希望可以类我的小白们,拜托它众多概念的毒害,大牛请绕道! 本文实例源代码参考:React-Re ...
- java学习笔记(3):java的工作原理及相关基础
一.运行机制 如上图所示,图中内容即为Java的运行机制: 1.我们一开始所编写的代码文件存储格式为(如text.java)文件,这就是源程序文件 2.在Java编辑器的作用下,也就是就行了编译,形成 ...
- STM32学习笔记(二):GPIO口工作原理
STM32每个IO口具有7个寄存器来控制,每个IO口都可以自由进行编程控制,我们编程实际上控制的是通过控制那7个寄存器来控制我们的IO口,我们可以通过编程控制IO口,把IO口配置成如下八种模式: 1. ...
- 小甲鱼零基础汇编语言学习笔记第二章之寄存器(CPU工作原理,CPU内部通讯)
这一章主要介绍了CPU中的重要器件——寄存器,整个系列通篇是以8086CPU作为探讨对象,其它更高级的CPU都是在此基础之上进行的升级. 1.一个典型的CPU是由运算器.控制器.寄存器等器件组成, ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
随机推荐
- log4net实现多实例记录
原文地址:实现多个LOG4NET日志记录器实例 本文内容为摘抄,请查看原文. 对于.NET Framework开发者来说,使用Log4Net进行日志记录是非常方便的,通常只要写好配置文件和简单的编码就 ...
- FZU 2041 二分枚举
思路:先O(n)预处理出ri[i][j],le[i][j],分别表示第i个位置向右边移动出j个空格需要的步数,表示第i个位置向左边移动出j个空格需要的步数. 然后枚举间隙处,二分判段最大间隔. #in ...
- windows系统——U 盘损坏修复
u盘损坏怎么修复 1.打开控制面板——管理工具——计算机管理——存储——磁盘管理——右击“磁盘1”——点击“初始化磁盘”——“确定”——初始化完毕后,U盘为“联机”状态. 2.在右边空白处“新建磁盘分 ...
- vue的v-for循环普通数组、对象数组、对象、数字
如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- python没学好
环境 装东西用pip3不是pip 运算 //是下取整 py的浮点数也没有大小限制,但是超出一定范围就直接表示为inf 条件语句与循环 if xxx:, elif:, else:, 'for x in ...
- 洛谷P1966 火柴排队[NOIP提高组2013]
我确信我应该是做过这道题……就当再写一遍好了. 贪心思想,一番证明得出a和b数组中最小对最小,次小对次小……时解最优.那么先处理出a,b之间的对应关系,然后按照该关系求a或者b的逆序对数量就是答案 / ...
- css3 实现多行文本折行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 51Nod 1019 逆序数(线段树)
题目链接:逆序数 模板题. #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a) ...
- POJ 2406 Power Strings KMP算法之next数组的应用
题意:给一个字符串,求该串最多由多少个相同的子串相接而成. 思路:只要做过poj 1961之后,这道题就很简单了.poj 1961 详细题解传送门. 假设字符串的长度为len,如果 len % (le ...
- Maven项目管理工具初体验
在最前面声明,本文不涉及任何原理,只是对使用方法和期间遇到的问题如何解决.主要是随着年纪原来越大,越觉得好记星不如烂笔头的深意,同时如果能够帮助谁,那就最好不过了. 前两天自己做一个项目,然后好心朋友 ...