程序员便利贴
分类: Java | 评论

Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的 了解其内部实现机制。 Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易。Struts框架为开放者提供了一 个统一的标准框架,通过使用Struts作为基础,开发者能够更专注于应用程序的商业逻辑。Struts框 架本身是使用Java Servlet和JavaServer Pages技术的一种Model-View-Controller(MVC)实现. 具体来讲,Struts的优点有: 1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现. 2. 有丰富的tag可以用 ,Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。另外,就目前国 内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。 3. 页面导航.页面导航将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的 维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。 4. 提供Exception处理机制 . 5. 数据库链接池管理 6. 支持I18N 缺点: 一、 转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp,而涉及到转向,需要配置forward,如果有十个展示层的 jsp,需要配置十次struts,而且还不包括有时候目录、文件变更,需要重新修改forward,注意,每次修改配置之 后,要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,如果业务变更复杂频繁的系统,这样的操作简单不可想象。现在就是这样, 几十上百个人同时在线使用我们的系统,大家可以想象一下,我的烦恼有多大。 二、 Struts 的Action必需是thread-safe方式,它仅仅允许一个实例去处理所有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了 线程安全的问题。 三、 测试不方便. Struts的每个Action都同Web层耦合在一起,这样它的测试依赖于Web容器,单元测试也很难 实现。不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试。 四、 类型的转换. Struts的FormBean把所有的数据都作为String类型,它可以使用工具Commons- Beanutils进行类型转化。但它的转化都是在Class级别,而且转化的类型是不可配置的。类型转化时的错误信息返回给用户也是非常困难的。 五、 对Servlet的依赖性过强. Struts处理Action时必需要依赖ServletRequest 和ServletResponse,所有它摆脱不了Servlet容器。 六、 前端表达式语言方面.Struts集成了JSTL,所以它主要使用JSTL的表达式语言来获取数据。可是JSTL的表达 式语言在Collection和索引属性方面处理显得很弱。 七、 对Action执行的控制困难. Struts创建一个Action,如果想控制它的执行顺序将会非常困难。甚至你要重 [...]

分类: Java | 评论

共四种方式: 其中前两种得到的是Map 后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已。 【方法一】 public class LoginAction { private Map request; private Map session; private Map application; public String execute() { request = (Map)ActionContext.getContext().get(“request”); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); request.put(“username1″, “jingjing1″); session.put(“username2″, “jingjing2″); application.put(“username3″, “jingjing3″); return “success”; } } 【方法二】 public class LoginAction implements RequestAware,SessionAware,ApplicationAware { private Map request; private Map session; private [...]

分类: Java | 评论

1,整合Struts2 a)导入struts的jar包 struts2-core-2.1.6.jar xwork-2.1.2.jar ognl-2.6.11.jar freemarker-2.3.13.jar commons-logging-1.1.jar commons-fileupload-1.2.1.jar b)将struts.xml文件拷贝到src目录下 c)在web.xml里配置struts的核心过滤器 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 2,整合Spring a)导入Spring的jar包 spring.jar commons-logging.jar b)将applicationContext.xml文件拷贝到WEB-INF目录下 c)在web.xml里配置spring的监听器 org.springframework.web.context.ContextLoaderListener d)添加spring与struts2整合的插件 struts2-spring-plugin-2.1.6.jar 3,编写代码测试 登录页面login.jsp USERNAME: PASSWORD: LoginDao业务接口 package com.itmyhome.actioin; interface LoginDao { public boolean login(String username,String password); } LoginDaoImpl业务接口实现 package com.itmyhome.actioin; public class LoginDaoImpl implements LoginDao { public boolean login(String username, String password) { [...]