1.领域对象
1)视图页面(包括请求页面和结果页面),都需要深度引用user.username;
例如,
<s:textfield name="user.username" label="Username"/>
<s:password name="user.password" label="Password"/>
<s:textfield name="user.portfolioName" label="Enter a name for your portfolio"/>
2)XXXAction里,需要调用getUser方法,而不能直接使用user属性
例如,
public void validate(){
/* Retrieve our simple portfolio service object. */
PortfolioService ps = getPortfolioService();
/* Check that fields are not empty */
if ( getUser().getPassword().length() == 0 ){
addFieldError( "user.password", getText("password.required") );
}
if ( getUser().getUsername().length() == 0 ){
addFieldError( "user.username", getText("username.required") );
}
if ( getUser().getPortfolioName().length() == 0 ){
addFieldError( "user.portfolioName", getText( "portfolioName.required" ));
}
/* Make sure user doesn't already have an account */
if ( ps.userExists( getUser().getUsername() ) ){
addFieldError("user.username", getText( "user.exists"));
}
}
2.模型驱动
1)视图页面,都不需要深度引用
2)XXXAction里,是直接使用user.getUsername()
书上一般都只说二者的区别,然后应该怎么用。但是为什么呢?原理和机制是什么呢?为什么一个要深度引用,一个不需要深度引用?
相关推荐
需要注意的是,这里的 `user` 变量不需要显式地 new 出来,Struts2 会在适当的时候为我们创建并初始化它。 **解决复杂情况:** 对于一些复杂的场景,例如需要验证用户输入的重复性等,我们可以引入 DTO(Data ...
4. **模型驱动**:Spring的ModelAndView对象可以用来封装视图和模型数据,这与Struts的ActionForward和ActionForm有异曲同工之妙,但更为灵活。 5. **国际化**:Spring的MessageSource接口可以与Struts的国际化策略...
总的来说,JSP+Struts2开发的当当购书网项目,展现了Web开发中模型驱动、分层架构的优势。通过理解源代码,开发者可以学习到如何组织和设计一个完整的电子商务网站,包括用户交互、数据访问、业务逻辑和安全性等方面...
`struts2_AccessWebElements`可能是关于访问网页元素的内容,如表单字段、按钮等,Struts2提供了模型驱动的方式方便地绑定和操作这些元素。 `struts2_Actionadvance2`可能是Action进阶内容,涵盖了更高级的主题,...
在“UserInfoSys”中,Flex负责构建用户界面,包括数据输入、展示、查询等功能,利用其强大的图形库和事件驱动模型,确保了系统的直观性和易用性。 Struts2,作为一款开源的MVC框架,以其高度可扩展性和灵活性,在...
在 Struts 2、Spring 和 EJB 结合的架构中,Struts 2 负责前端的用户交互和请求处理,将用户操作转化为业务逻辑调用。Spring 作为中间层,负责依赖注入和事务管理,连接 Struts 2 和 EJB。EJB 则作为后端服务,执行...
【标题】"Extjs struts2 spring 图书馆"是一个基于流行Java技术栈构建的图书馆管理系统,它将前端的富互联网应用(RIA)框架Extjs与后端的MVC框架Struts2和企业级服务管理框架Spring进行了深度融合。这个项目为...
Struts2是Struts1的升级版,它基于拦截器模型,提供了更强大的动作和结果映射,以及更灵活的事件驱动模型。Struts2的Action类可以与Spring的bean无缝结合,允许我们在Action中直接注入Service或DAO。此外,Struts2...
4. **模型驱动(ModelDriven)**:模型驱动模式允许将Action与业务对象绑定,简化代码,提高可维护性。 5. **值栈(Value Stack)**:值栈是Struts 2中存储Action上下文数据的容器,它可以将Action属性与JSP页面的EL...
4. **模型驱动(ModelDriven)**:一种设计模式,让Action类仅包含业务逻辑,而将数据模型分离出来。 5. **Spring集成**:通过Spring的`struts-plugin.xml`配置,可以将Spring容器注入到Struts2中,实现Action的依赖...
它为开发人员提供了一种组织MVC(模型-视图-控制器)应用程序结构的方法,使得构建动态、数据驱动的Web应用变得更加容易。然而,Struts2在历史上曾遭受过一系列的安全漏洞,这些漏洞可能导致远程代码执行、信息泄露...
《Struts in Action》中文版通过对Struts框架的全面解析,不仅为读者提供了理论知识,还通过实际应用案例,使读者能够快速上手并深入理解Struts的使用技巧,是学习和掌握Struts框架不可或缺的参考书籍。
7. **模型驱动(ModelDriven)**:这是一种Action模式,它自动将请求参数绑定到一个模型对象,简化了数据绑定过程。 8. **插件系统**:Struts2的插件机制允许快速扩展框架功能,如Spring集成、Hibernate集成等。第...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架。这三者协同工作,构建出强大的企业级应用程序。接下来,我们将对SSH框架进行详细的搭建过程解析,并探讨如何进行深度优化。...
- **Spring MVC**:Spring的MVC模块提供了一种分层架构,用于构建Web应用程序,与Struts类似但更灵活,支持注解驱动和模型-视图-控制器的设计模式。 **Hibernate框架** Hibernate是一个流行的ORM(对象关系映射)...
2. JDBC驱动:确保系统中包含了Oracle的JDBC驱动,以便程序能够识别和连接数据库。 3. SQL操作:通过编写DAO(Data Access Object)层,封装SQL查询和更新操作,实现业务逻辑与数据库操作的解耦。 4.事务管理:考虑...
Action类执行完毕后,可以通过ValueStack或模型驱动方式将结果数据返回到视图层。 2. **iBatis框架**:iBatis作为数据访问层,用于执行数据库查询。在树形结构中,我们需要遍历层级数据,这可能涉及到递归查询或...
IoC使得开发者可以将对象的创建和维护交给Spring,而AOP则允许开发者在不修改原有代码的情况下,插入新的行为或功能。 **Struts1与Struts2**: Struts1是MVC(Model-View-Controller)架构的实现,它强调了请求驱动...
《JavaWeb程序设计任务教程第2版》是一本深度探讨JavaWeb开发的教材,主要针对初学者和进阶者提供全面的知识覆盖。本教程通过详细解答课后习题,帮助读者深入理解JavaWeb编程的核心概念和技术。以下是相关知识点的...