Struts教学视频
Domain Name (DDD 领域模型驱动)
Pattern??????????
Framework
?
UI(Presentation) Layer -- Business Layer -- Persistence Layer
Structs?????????? Spring????????????????? Hibernate
?

?
?
?面向请求驱动(Structs1.x Structs 2.x Webwork)
?面向事件驱动 (JSF)
?
?Action, ActionForm, ActionMapping
?
?JSP页面 --> ActionServlet (doPost ) --> RequestProcessor.process() 截取url (/login)
????????????? --> ProcessMapping --> findActionMapping (struts-config.xml)--> FormBean (ActionFrom)
????????????? --> 收集表单数据 (processPopulate) --> processValidate --> processActionPerform
????????????? --> processForwardConfig
?

?
?
动态验证框架?
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
?????? <set-property? property="patchnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml/>
</plug-in>
?
ActionForm
?@Override
?public void reset(ActionMapping mapping, HttpServletRequest request) {
??System.out.println("----------LoginActionForm.reset()-----------");
?}
?收集数据前重置数据
?
?@Override
?public ActionErrors validate(ActionMapping mapping,
???HttpServletRequest request) {
??System.out.println("----------LoginActionForm.validate()-----------");
??return null;
?}?
?服务器端验证(表单验证,原则上不做数据库的验证)
?可以在struts-config.xml 里面设置是否执行。默认validate="true"
?
?
?
?ActionForm_Struts上传
?
org.apache.struts.upload.FormFile
?
myFile.getFileData());fos.flush();fos.close();}return mapping.findForward("success");}}?
?<controller maxFileSize="10M"/>? 可配置各种上传文件的限制
?
空字段问题
?
UI不存在这个字段, JS和EL效果不一样,JS为null,EL为“”
UI存在这个字段,JS和EL效果一样
?
类型转换器
?
实现接口Convert接口,需注册,在servlet启动时
?
?
DTO?? 数据传输对象
VO???? 值对象
?
ActionForm就是一个DTO对象
?
ActionForward
?
重定向?<forward name="login" path="/login.jsp" redirect="true"/>
?
全局ActionForward
?
?<global-forwards>
??<forward name="login" path="/login.jsp" redirect="true"/>
?</global-forwards>?
?ActionForward af = mapping.findForward("login");
?af.setRedirect(false);
?return af;
????
??return af;??
?自己写actionForward??className属性
?
?ActionMapping
?
对应配置信息,一个标签对应一个instance
?
validate 校验错误到input
parameter
?
unknowActionMapping
?
forward属性,空action,从do过去
<action path="/login1"????forward="/login.jsp"??></action>
?
??<action path="/testunknown"
????unknown="true"
????forward="/testunknown.jsp"
??></action>针对do请求
?
和type互斥,配了以后就不执行action属性定义的类了
?
?
Struts 国际化
?
request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
或者
this.setLocale 在Action里面
?
动态国际化文本
创建国际化消息文本
ActionMessage message = new ActionMessage("user.login.success",username);
?
传递国际化消息文本
this.saveMessage(request,messages);?? 普通消息
this.saveErrors??? 错误消息
?
通过<html:messages>标签(可以显示普通和错误消息)
通过<html:errors>只能显示错误消息