`
chenguanwei2008
  • 浏览: 121084 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论
文章列表
IOC(Inversion of Control),即控制反转,它使你不需要再自己来实现对象的创建,而是把这些工作都交由容器来进行管理,增加了代码的可重用性。下面,便手动实现一个简单的IOC容器。 首先建立一个接口和这个接口的2个实现类:   package cn.cgw.ioc; public interface ReportGenerator { public void generate(String[][] table); }   package cn.cgw.ioc; public class HtmlReportGenerator implements ReportGener ...
  Assigned:主键由外部程序生成,无需Hibernate干预。 identity:采用数据库提供的主键生成机制,如MySql、DB2、SqlServer的自增主键。 sequence:使用数据库的sequence机制。 hilo:通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。 seqhilo:与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。 increment:主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值, ...
在Struts2中自定义拦截器,需要继承Interceptor接口,在该接口中定义了3个方法: void init():该方法在拦截器执行拦截之前执行,主要用于打开一些一次性资源,如数据库连接等。 String intercept(AvtionInvocation invocation) throws Exception :在该方法体内定义需要执行的拦截动作,invocation参数是对被拦截的Action的引用,我们可以通过调用该参数的invoke()方法,将控制权转给下一个拦截器或者是被拦截Action的execute()方法。 void destroy() :与init()方法对应,在 ...
在web项目的src目录下建立属性文件db.properties。在这里面配置连接数据库的基本信息:   DRIVERS=com.mysql.jdbc.Driver URL=jdbc:mysql://localhost:3306/数据库名 USER=root PASSWORD=密码    再新建一个工具类,用于获取Connection对象,在这个工具类中,我们需要从db.properties属性文件读取连接数据库的基本信息,代码如下:   import java.sql.Connection; import java.sql.DriverManager; import java.sql.Resu ...
Struts2默认采用Jakarta的Common-FileUpload文件上传框架,因此我们需要在应用中添加两个jar包:commons-io-1.4.jar和commons-fileupload-1.2.1.jar。 假设文件上传页面为:   <s:form action="upload.action" method="post" enctype="multipart/form-data"> <s:textfield label="文件标题" name="title" ...
Struts2采用声明式的方法管理异常处理,因此我们无需在execute方法体内写大量的try...catch...语句来捕获异常,execute方法将产生的所有异常抛出,统一交由Struts2框架处理,我们只需在struts.xml文件中配置异常的映射机制,Struts2便能够处理并转入相应的视图资源。 异常映射可分为全局异常映射和局部异常映射,它和<result .../>的性质是一样的。 配置代码如下:   <struts> <package name="struts2" extends="struts-default" ...
要在Action获取Request,Response,session等JSP内置对象,我们可以实现XXXAware接口。 代码如下: package com.test.action; import java.net.URLEncoder; import java.util.Map; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.in ...
package cn.cgw.model; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import ...
我们知道Struts2会将Action中的属性存放到ValueStack对象中,在通过Action转发的页面中,我们可以通过Struts2的标签<s:property/>来输出这些值,但是这样得到的值却仅限于输出显示,不能进行进一步的操作,那么我们应该怎样得到ValueStack中的值又能对它进行其他操作呢? 首先,我们需要了解Struts2是将Action中的属性全部封装在一个叫做struts.valueStack的请求属性中,然后我们就可以通过下面的代码来获取这些值了:   <%@ page import="com.opensymphony.xwork2.util ...
1、在Tomcat的webapps目录下新建一个文件夹,取名为Test。 2、在Test目录下新建一个WEB-INF目录。 3、在WEB-INF目录下建立classes和lib目录。classes目录用于存放应用需要加载的java类文件,lib目录存放Struts2包和其他需要用到的第三方库文 ...
概括地说,MVC思想将一个应用分成了Model,View,Control三个部分。三个部分以最少的耦合协同工作,从而提高应用的可扩展性和维护性。 MVC具有以下特点: 多个视图对应一个模型 模型返回的数据与显示逻辑分离 三层架构导致的低耦合性和易维护性。 在struts2中,Model对应业务逻辑组件,它通常用于实现业务逻辑方法以及以及与底层数据库的交互等;View对应视图组件,通常是指JSP页面,但也适用于其他视图显示技术,如Velocity或者Excel文档;Control对应系统核心控制器和业务逻辑控制器,系统核心控制器为Struts2框架提供的FilterDispatcher,它根 ...
将hibernate.hbm2ddl.auto的值设为update 具体说明hibernate.hbm2ddl.auto几个参数的意思:  validate               加载hibernate时,验证创建数据库表结构 create                  每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 create-drop        加载hibernate时创建,退出是删除表结构 update                 加载hibernate自动更新数据库结构
由于Struts2的MVC框架,Action被禁止调用Hibernate的API。所以在与Hibernate的整合中,我们应将中间层组件划分为业务逻辑层和Dao层,在这种结构体系下,业务逻辑层应该专注于业务逻辑的实现,避免与任何持久层技术耦合,而Dao层则专注于持久化访问,无需理会任何逻辑功能。为了实现这种分层策略,我们应该为每个Dao组件和业务逻辑组件都定义一个接口。具体的说,就是让Struts2的Action依赖于业务逻辑接口,而业务逻辑组件则依赖与Dao接口,另外,我们应当使用工厂模式来实现这种面向接口的编程方式。
    传统的数据库连接:通过DriverManager获得数据库连接对象,每个数据库连接对象都对应一个物理数据库连接,每次操作都打开一个连接,使用完后又都关闭连接。频繁的打开、关闭连接造成系统的性能低下。     使用数据 ...
静态工厂方法        创建类的实例的最常见的方式是用new语句调用类的构造方法。在这种情况下,程序可以创建类的任意多个实例,每执行一条new语句,都会导致Java虚拟机的堆区中产生一个新的对象。假如类需要进一步封装创建自身实例的细节,并且控制自身实例的数目,那么可以提供静态工厂方法。         例如Class实例是Java虚拟机在加载一个类时自动创建的,程序无法用new语句创建java.lang.Class类的实例,因为Class类没有提供public类型的构造方法。为了使程序能获得代表某个类的Class实例,在Class类中提供了静态工厂方法forName(String name) ...
Global site tag (gtag.js) - Google Analytics