1、filter
2、Struts.xml
3、action 业务逻辑
struts2 工作流程:
2.web.xml action->struts2
3.strus.xml --->action|name=login
class=MyAction
4.MyAction -->execute
5.return --->ok|fali-->Result
6./result->forward(req,resp)
Web应用启动时加载并初始化ActionServlet。ActionServlet从struts-config.xml中读取配置信息,把它们存放到各种配置对象中。当ActionServlet接收到一个请求时,流程如下:
1.检索和用户请求匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效的信息。
2.如果ActionForm实例不存在,就创建一个ActionForm对象,把提交的表单数据保存到ActionForm中。
3.根据配置,决定是否需表单验证,若需要,则调用ActionForm的validate方法。
4.如果ActionForm的validate方法返回null或返回不包含ActionMessage的ActionErrors对象,则表示验证成功。
5.ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action,如果Action不存在则先创建这个实例,然后调用Action的execute方法。
6.Action的execute方法返回一个ActionForward对象,ActionServlet再把请求转发给ActionForward对象指向的JSP组件。
7.ActionForward指向的JSP组件生成动态网页,返回给用户
2017年3月8日14:11:27
1、Struts2环境搭建!
#Struts.xml-url-struts- xml- class.method处理方法
method标签,packpage的name通配符!method用{第几个}来表示!
例如 name=“*” method="{1}"
login.action --struts2--struts.xml--
<action name>--* login
class--UserAction
method--(1)
总结 2017年3月8日15:36:52
1、action name|method,*|{1}
2、action创建 action,support
3、url a/b/c /a/b /a
2017年3月14日21:31:54
关于struts中通配符配置!
其实用到method={数字}的时候,相应的前面的action是要出现*通配符来搭配的。比如一个小例子:
<action name="user_*" class="UserAction" method="{1}">
在对应的jsp中:
<form action="user_userLogin2" method="post">
那么struts会将user_userLogin2这个action按照user_*的格式解析,把*号对应位置的字符串取出来,放到method={}这个中括号里替代数字的位置,1就是指第一个*号位置的字符串。
这里看不出数字不同的区别,在:
<action name="*_*" class="com.xy.{1}Action" method="{2}">
中就看得明白了,你提交的action都会按格式分解,比如jsp里是User_add,那么就会变成:
class="com.xy.UserAction" method="{add}"
-------------------------------分割线---------------------------------------
------------------------------2017年8月24日09:30:08---------------------------------
(1)JSP页面中没有加入类似下面内容:
<%@ taglib prefix="s" uri="/struts-tags"%>
(2)拦截器不是/*
<filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-------------------------------分割线---------------------------------------
------------------------------2017年8月28日17:50:47---------------------------------
记:今日花费了一天,犯了一个致命错误,在web.xml 中将filter-name 没有命名为struts2,导致一直报错错误为
报错找不到StrutsPrepareAndExecuteFilter
关于为什么必须写filter-name必须为struts2:目前不知道!
第二点:在写struts.xml没有提示的时候需要添加DTD约束!