📄 struts1.x.txt
字号:
dao
v(view):
jsp
ActionForm:承载页面的信息,页面表单域的名称与form的属性必须相等
c(control):
ActionServlet:接收所有的请求
RequestProcessor:是ActionServlet的一个助手,做详细的处理
ActionMapping:对应一个action标记,包括url、action、form、actionForward
<action path="\login" type="struts.action.InsertAction"
name="userForm" scope="request">
<forward name="success" path="/success.jsp"/>
<forward name="error" path="/error.jsp"/>
</action>
Action:做具体的业务处理
ActionForward:转发到另一个页面
三、struts的请求处理过程
1、通过url.do在struts-config.xml中找到对应的action及actionForm
2、如果有actionForm用已有的,没有产生一新的,通过返射将表单域的值注
入到actionForm实例中。
3、如果有action用已有的,没有产生一个新的,调用action的execute方法,
在调用之前将actionForm注入到execute方法中。
4、execute在执行结束前通过actionMapping找到一个ActionForward,转发到下一个页面。
十七、struts的MVC
m:model
facade
dao
hibernate
v:
jsp
ActionForm
c:
ActionServlet:接收所有的请求进行处理
ActionMapping:是一个具体的action标签,
通过url找到action及actionForm
可以通过名称找到ActionForward转发到下一个页面。
<action path="/login" type="struts.action.LoginAction"
name="userForm" attribute="userForm"
scope="request" validate="true" input="/login.jsp">
<actionForward name="success" path="/success.jsp"/>
</action>
Action:做具体的业务处理
ActionForward:转发到另一个页面。
十八、struts的请求处理过程:
通过url.do在struts-config.xml中找到对应的action及ActionForm
如果有actionForm用已有没有产生一个新的,并通过反射将表单域
的值注入到actionForm实例中。
如果有action用已有的没有产生一个新的,调用action的execute方法,
在调用execute方法之前通过参数将ActionForm注入到execute方法,
execute 在执行结束前通过ActionMapping找到一个ActionForward转发
到下一个页面。
struts2中可以有多个配置文件,一般是一个功能模板一个,不同团队不影响,实现如下:
1、在/WEB-INF/下加入新的struts-config.xml文件
2、在web.xml中在ActionServlet的配置中说明具体的struts-config.xml文件所在位置
多个文件用.分隔开。
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config-1.xml,
/WEB-INF/struts-config-2.xml</param-value>
</init-param>
对于spring有多个applicationContext.xml该如何处理
一、struts的MVC
M:model
V:view
jsp
ActionForm
C:control
ActionServlet:接收所有以.*结尾的请求
RequestProcessor:是ActionServlet的一个助手,做具体的处理。
ActionMapping:一个action标签,通过它可以找到Action、ActionForm
ActionForward。
<action type="struts.action.LoginAction"
name="loginForm"
attribute="loginForm" 在request或session中的键名
scope="request/session"
input="/login.jsp" 在校验框架中有错误转发到input对应的页面
validate="true" 告诉struts当前的form需要校验
>
<forward name="success" path="/success.jsp">
</action>
Action:做具体的业务处理
ActionForward:转发一另一个页面。
二、struts的请求处理过程
1、通过url.do在struts-config.xml中找到对应的action及ActionForm
2、如果有ActionForm用已有的,没有产生一个新的实例,并通过返射将表
单域的值填充到ActionForm中。
3、如果有Action用已有的,没有产生一个新的,调用Action的execute方法
在调用execute方法之前通过参数将ActionForm注入到execute方法中。
4、execute方法执行结束前,通过ActionMapping找到一个ActionForward
转发到下一个jsp页面。
三、struts的标签库
html:前一个action转发下一个jsp页面,该jsp页面可以重用
上一个action所用的form,通过html标签可以直接显示form中的值。
FindAction:
public ActionForward execute()
{
UserForm uf=(UserForm)form;
mapping.findForward("updateJsp");
}
update.jsp页面:
<action path="/update" scope="request"
name="userForm" attribute="userForm"
type="struts.action.UpdateAction"
>
<html:form action="/update">
<html:text property="userName"/>
</html:form>
<html:select property="sex">
<html:collection collection="users" property="code" labelProperty="name"/>
</html:select>
bean:对已有bean的操作
<!--从scope中取出user的userName属性打印-->
<bean:write scope="request/application/session" name="user" property="userName"/>
<!--从scope中取出customer对象,放作用域对象page中,键名还是customer1-->
<bean:define scope="request/session/application" name="customer" id="customer1"/>
<!--从scope中取出customer对象的buies属性,放作用域对象page中,键名还是buies-->
<bean:define scope="request/session/application" name="customer" property="buies" id="buies"/>
logic:
<!--如果在scope中有customer,执行标签内的代码-->
<logic:present scope="request/session/appliation" name="customer">
执行部分
</logic:present>
<!--如果在scope中没有customer,执行标签内的代码-->
<logic:notPresent scope="request/session/appliation" name="customer">
</logic:notPresent>
<!--取集合中值-->
<!--从request中取出customer对象的buies属性遍历,每个元素通过buy引用-->
<logic:iterator scope="request" name="customer" property="buies" id="buy">
</logic:iterator>
tiles:
<tiles:insert attribute="从页面在tiles-defs.xml中定义的名称"/>
四、struts的国际化
1、作用:不用改源代码,只需加入一个properties文件,就可以适应不同国家的语言。
2、实现步骤:
1、加入properties文件
a、命名格式
文件_语言_国家.properties
b、如果有非英文或数字转码
native2ascII -encoding utf-8 源 目标
2、在struts-config.xml中说明properties文件所在的位置
<message resource="struts.message"/>
3、在jsp中用标签通过键名取properties文件中的值
<bean:message name="userName"/>
五、struts的手动校验:手动写代码实现校验规则。
1、国际化三步曲
2、校验通用两步曲
1、修改struts-config.xml中的action标签,加入
input及validate="true"属性
2、在jsp页面中显示错误消息
<html:messages id="error">
<br><bean:write name="error"/>
</html:messages>
2、实现ActionForm
public class MyForm extends ActionForm
{
public ActionErrors validate()
{
ActionErrors ae=new ActionErrors();
ae.add(ActionErrors.global_message,new ActionMessage("资源文件的键名"));
如果ae.size>=1返回到input页面
如果ae.size<1调用action的execute方法
}
}
六、struts的自动校验:通过xml文件配置具体的校验规则。
1、国际化三步曲
2、通用校验两步曲
3、实现ActionForm,继承于ValidateForm,不能覆盖validate方法
public class MyForm extends ActionForm
{
//public ActionErrors validate()
//
}
4、通过xml说明实现自动校验
1、拷入validation-rules.xml到/webrooe/WEB-INF目录下
2、复制validation-rules.xml得到的文件是validation.xml,修改结果如下
<formset>
<form name="loginForm">
<field name="userName" depends="required">
<arg0 key="userName"/>
</field>
<field name="pwd" depends="required,minlength">
<arg0 key="userName"/>
<arg1 key="${var:minlength}" resource="false">
<var>
<var-name>minlength</var-name>
<var-value>6</var-value>
</var>
</field>
</form>
<formset>
当发生required错误时,在资源文件中对应的键名errors.required
errors.required={0} is not Empty
当发生minlength错误时,在资源文件中对应的键名errors.minlength
errors.minlength={0} 's minlength must be {1}
3、通过struts-config.xml的插件加入两个校验文件。
七、struts的tiles
作用:主页面加载从页面,具体的从页面不是在主页面中确定,而是
在tiles-defs.xml中定义,这样如果主页面的结构发生了改变,
只需的修改tiles-defs.xml文件,不用修改主页面本身。
实现思路:
1、在tiles-defs.xml中说明主页面、从页面的名称及uri。
2、action的execute方法执行结束时转发到tiles-defs中的一个
tiles, 通过该tiles找到主页面,主页面根据tiles中定
义的具体页面名称加载对应的jsp页面。
实现:
1、在tiles-defs.xml中说明主页面及其需要的从页面,具体如下:
<definition name="index" path="/index.jsp">
<put name="head" value="/head.jsp" />
<put name="body" value="/body.jsp" />
<put name="foot" value="/foot.jsp" />
</definition>
2、实现action,其forward指定不再是jsp页面,而是一个tiles
记住不能加"/",直接给名称
3、在主页中通过名称找到具体的从页面
<tiles:insert attribute="head"/>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -