`
阅读更多

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教学视频

    Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一...通过观看教学视频,结合实践操作,可以更好地掌握这些概念和技术。

    传智播客黎活明struts2.5视频教学源代码1-18集

    那还等什么,本套视频教程从底层原理代码入手,循序渐进,透彻地向你展示了Spring 2.5的基本应用和各项新功能,清晰地讲解了如何使用Spring的最新和最优雅的方式来集成Struts,Struts2,Hibernate,JPA等流行的框架和...

    15年9月传智播客视频struts2

    根据提供的文件信息,我们可以推断出这是一套关于Struts2框架的教学视频资料,由知名的教育机构传智播客在2015年9月发布。下面将对Struts2框架进行详细介绍,并基于该视频资料可能涵盖的核心知识点进行展开。 ### ...

    韩顺平Struts22017年视频

    根据提供的文件信息,我们可以推断出这是一套由韩顺平老师在2017年录制的关于Struts2框架的教学视频。为了更好地理解和利用这些资源,我们可以从中提炼出一些重要的知识点。 ### Struts2框架简介 Struts2是Apache...

    struts2教学视频第二集

    使用Eclipse JavaEE环境开发Struts2的视频教学。值得收藏

    一头扎进SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】

    SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】 网盘下载地址 【付费下载之后的用户,可留言获取更多下载资源】

    struts2 视频教学第三集

    使用Eclipse JavaEE环境开发Struts2的视频教学。值得收藏

    Struts+Hibernate视频教学

    在"Struts+Hibernate视频教学"中,你可能将学习到以下内容: 1. Struts的基础:了解MVC模式,理解Struts框架的组成部分及其工作原理。 2. 创建第一个Struts应用:设置环境,创建简单的Hello World应用,掌握struts-...

    浪曦_Struts2应用视频源代码

    浪曦_Struts2应用视频源代码是针对该框架的一个实践教学资源,旨在帮助开发者深入理解和应用Struts2。 首先,Struts2的核心组件包括Action类、配置文件(struts.xml)、Interceptor拦截器、Result结果类型以及...

    struts2.1.8视频教程 .rar

    Struts2.1.8视频教程是一套针对Java Web开发框架Struts2的详细教学资源,旨在帮助开发者理解和掌握该框架的核心概念、功能以及实际应用。Struts2是Apache软件基金会开发的一个开源项目,它是MVC(Model-View-...

    03_张孝祥09年Struts视频_validator单元3.rar

    这个“03_张孝祥09年Struts视频_validator单元3.rar”压缩包可能包含了张孝祥老师2009年讲解Struts框架中关于Validator验证器的系列教学视频。Validator是Struts框架的一部分,主要负责处理用户输入数据的验证。 在...

    JavaWeb系列教学视频(20集)

    资源名称:Java Web系列教学视频( 20集)资源目录:【】JavaWeb视频教学-第10讲JSP标准标签库(4)【】JavaWeb视频教学-第11讲Struts2入门【】JavaWeb视频教学-第12讲Struts2中的配置文件【】JavaWeb视频教学-第13讲...

    传智的struts2

    描述中提到的“传智的Struts2”同样暗示了这是一个关于Struts2的教育或学习资源,可能包括视频教程、讲义、实战项目等,旨在帮助学习者掌握如何使用Struts2构建Web应用程序。 标签“传智struts2”进一步确认了这与...

    struts2教程

    struts2的教学视频,使用eclipse JavaEE工具开发。这是第一集

    java struts2 hibernate 网络教学平台系统

    【Java Struts2 Hibernate 网络教学平台系统】是一个基于Java技术开发的在线教育解决方案,主要用于构建类似于北京大学网络教学平台的功能丰富的系统。这个系统利用了Struts2、Hibernate等核心技术,为用户提供了一...

    Struts-menu例子加视频

    5. **视频教程**:“速动画教程第十四集.exe”和“.rtf”可能是对Struts-menu使用方法的详细教学,通过视频和文档形式提供教学内容。视频通常能更直观地展示操作步骤,而RTF(Rich Text Format)文件可能包含了文字...

    【动力节点】王勇老师Java视频教程_Java框架视频之Struts2

    王勇老师,作为动力节点的创始人兼CEO,以其深厚的Java技术底蕴和丰富的教学经验,倾力打造了这一系列关于Java框架Struts2的视频教程。这是一套面向已掌握Java基础和Web知识的学习者设计的课程,旨在帮助学员深入...

    郭克华J2EE高级框架实战教学视频05

    【郭克华J2EE高级框架实战教学视频05】是一部深入讲解J2EE高级技术的教程,由知名IT讲师郭克华主讲。在这个视频系列中,郭克华老师将带领我们探索J2EE平台上的核心框架及其实际应用,帮助开发者提升在企业级Java开发...

Global site tag (gtag.js) - Google Analytics