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"
<body>
<%
LoginActionForm laf = (LoginActionForm)request.getAttribute("loginForm");
%>
<%=laf.getUsername() %>,登录成功
</body>
动态ActionForm (避免actionform过多)
org.apache.struts.action.DynaActionForm
<form-beans>
<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"/>
<form-property name="age" type="java.lang.Integer"/>
</form-bean>
ActionForm_Struts上传
org.apache.struts.upload.FormFile
public class UploadTestAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UploadActionForm uaf = (UploadActionForm)form;
System.out.println("title" + uaf.getTitle());
FormFile myFile = uaf.getMyfile();
if (myFile != null) {
System.out.println("fileName=" + myFile.getFileName());
FileOutputStream fos = new FileOutputStream("c:\\" + myFile.getFileName());
fos.write(myFile.getFileData());
fos.flush();
fos.close();
}
return mapping.findForward("success");
}
}
<controller maxFileSize="10M"/> 可配置各种上传文件的限制
空字段问题
UI不存在这个字段, JS和EL效果不一样,JS为null,EL为“”
UI存在这个字段,JS和EL效果一样
类型转换器
实现接口Convert接口,需注册,在servlet启动时
public class UtilDateConverterInitWithServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("UtilDateConverterInitWithServlet.init()");
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
Plugin注册
<plug-in className="com.bjsxt.struts.UtilDateConverterInitWithPlugin"/>
public class UtilDateConverterInitWithPlugin implements PlugIn {
public void destroy() {
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
System.out.println("UtilDateConverterInitWithPlugin.init()");
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
public class UtilDateConverter implements Converter {
public Object convert(Class type, Object value) {
System.out.println("UtilDateConverter.value=" + value);
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
Date d = null;
if (value instanceof String) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse((String)value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return d;
}
}
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;
public class MustLoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (request.getSession().getAttribute("user") == null) {
ActionForward af = mapping.findForward("login");
//af.setRedirect(false);
return af;
//response.sendRedirect(request.getContextPath() + "/login.jsp");
//return null;
}
return mapping.findForward("success");
}
}
动态ActionForward
ActionForward af = new ActionForward();
af.setPath("/page" + page + ".jsp?name=Tom");
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>只能显示错误消息
- 大小: 90.5 KB
- 大小: 40.7 KB
分享到:
相关推荐
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一...通过观看教学视频,结合实践操作,可以更好地掌握这些概念和技术。
那还等什么,本套视频教程从底层原理代码入手,循序渐进,透彻地向你展示了Spring 2.5的基本应用和各项新功能,清晰地讲解了如何使用Spring的最新和最优雅的方式来集成Struts,Struts2,Hibernate,JPA等流行的框架和...
根据提供的文件信息,我们可以推断出这是一套关于Struts2框架的教学视频资料,由知名的教育机构传智播客在2015年9月发布。下面将对Struts2框架进行详细介绍,并基于该视频资料可能涵盖的核心知识点进行展开。 ### ...
根据提供的文件信息,我们可以推断出这是一套由韩顺平老师在2017年录制的关于Struts2框架的教学视频。为了更好地理解和利用这些资源,我们可以从中提炼出一些重要的知识点。 ### Struts2框架简介 Struts2是Apache...
使用Eclipse JavaEE环境开发Struts2的视频教学。值得收藏
SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】 网盘下载地址 【付费下载之后的用户,可留言获取更多下载资源】
使用Eclipse JavaEE环境开发Struts2的视频教学。值得收藏
在"Struts+Hibernate视频教学"中,你可能将学习到以下内容: 1. Struts的基础:了解MVC模式,理解Struts框架的组成部分及其工作原理。 2. 创建第一个Struts应用:设置环境,创建简单的Hello World应用,掌握struts-...
浪曦_Struts2应用视频源代码是针对该框架的一个实践教学资源,旨在帮助开发者深入理解和应用Struts2。 首先,Struts2的核心组件包括Action类、配置文件(struts.xml)、Interceptor拦截器、Result结果类型以及...
Struts2.1.8视频教程是一套针对Java Web开发框架Struts2的详细教学资源,旨在帮助开发者理解和掌握该框架的核心概念、功能以及实际应用。Struts2是Apache软件基金会开发的一个开源项目,它是MVC(Model-View-...
这个“03_张孝祥09年Struts视频_validator单元3.rar”压缩包可能包含了张孝祥老师2009年讲解Struts框架中关于Validator验证器的系列教学视频。Validator是Struts框架的一部分,主要负责处理用户输入数据的验证。 在...
资源名称:Java Web系列教学视频( 20集)资源目录:【】JavaWeb视频教学-第10讲JSP标准标签库(4)【】JavaWeb视频教学-第11讲Struts2入门【】JavaWeb视频教学-第12讲Struts2中的配置文件【】JavaWeb视频教学-第13讲...
描述中提到的“传智的Struts2”同样暗示了这是一个关于Struts2的教育或学习资源,可能包括视频教程、讲义、实战项目等,旨在帮助学习者掌握如何使用Struts2构建Web应用程序。 标签“传智struts2”进一步确认了这与...
struts2的教学视频,使用eclipse JavaEE工具开发。这是第一集
【Java Struts2 Hibernate 网络教学平台系统】是一个基于Java技术开发的在线教育解决方案,主要用于构建类似于北京大学网络教学平台的功能丰富的系统。这个系统利用了Struts2、Hibernate等核心技术,为用户提供了一...
5. **视频教程**:“速动画教程第十四集.exe”和“.rtf”可能是对Struts-menu使用方法的详细教学,通过视频和文档形式提供教学内容。视频通常能更直观地展示操作步骤,而RTF(Rich Text Format)文件可能包含了文字...
王勇老师,作为动力节点的创始人兼CEO,以其深厚的Java技术底蕴和丰富的教学经验,倾力打造了这一系列关于Java框架Struts2的视频教程。这是一套面向已掌握Java基础和Web知识的学习者设计的课程,旨在帮助学员深入...
【郭克华J2EE高级框架实战教学视频05】是一部深入讲解J2EE高级技术的教程,由知名IT讲师郭克华主讲。在这个视频系列中,郭克华老师将带领我们探索J2EE平台上的核心框架及其实际应用,帮助开发者提升在企业级Java开发...