- 浏览: 121084 次
- 性别:
- 来自: 重庆
最新评论
-
shachangjunmoxiao:
怎么改下,发送给多人?
使用JavaMail发送邮件 -
base10086:
huanxin2008 写道附件名为中文,接收后附件名乱码的解 ...
使用JavaMail发送邮件 -
huanxin2008:
附件名为中文,接收后附件名乱码的解决办法:146行改为:bp. ...
使用JavaMail发送邮件 -
在世界的中心呼喚愛:
好东西。已经改造差不多!!,有接收就更好!!
使用JavaMail发送邮件 -
来这里学java:
...
Struts2与MVC
文章列表
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 ...
- 2009-04-04 19:10
- 浏览 2435
- 评论(0)
Assigned:主键由外部程序生成,无需Hibernate干预。
identity:采用数据库提供的主键生成机制,如MySql、DB2、SqlServer的自增主键。
sequence:使用数据库的sequence机制。
hilo:通过hi/lo 算法实现的主键生成机制,需要额外的数据库表保存主键生成历史状态。
seqhilo:与hilo 类似,通过hi/lo 算法实现的主键生成机制,只是主键历史状态保存在Sequence中,适用于支持Sequence的数据库,如Oracle。
increment:主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值, ...
- 2009-04-03 20:37
- 浏览 1507
- 评论(0)
在Struts2中自定义拦截器,需要继承Interceptor接口,在该接口中定义了3个方法:
void init():该方法在拦截器执行拦截之前执行,主要用于打开一些一次性资源,如数据库连接等。
String intercept(AvtionInvocation invocation) throws Exception :在该方法体内定义需要执行的拦截动作,invocation参数是对被拦截的Action的引用,我们可以通过调用该参数的invoke()方法,将控制权转给下一个拦截器或者是被拦截Action的execute()方法。
void destroy() :与init()方法对应,在 ...
- 2009-04-01 16:11
- 浏览 2894
- 评论(0)
在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 ...
- 2009-03-31 23:46
- 浏览 1294
- 评论(0)
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" ...
- 2009-03-31 14:35
- 浏览 1487
- 评论(0)
Struts2采用声明式的方法管理异常处理,因此我们无需在execute方法体内写大量的try...catch...语句来捕获异常,execute方法将产生的所有异常抛出,统一交由Struts2框架处理,我们只需在struts.xml文件中配置异常的映射机制,Struts2便能够处理并转入相应的视图资源。
异常映射可分为全局异常映射和局部异常映射,它和<result .../>的性质是一样的。
配置代码如下:
<struts>
<package name="struts2" extends="struts-default" ...
- 2009-03-29 19:52
- 浏览 3110
- 评论(0)
要在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 ...
- 2009-03-29 16:16
- 浏览 2896
- 评论(0)
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 ...
- 2009-03-29 14:25
- 浏览 1318
- 评论(0)
我们知道Struts2会将Action中的属性存放到ValueStack对象中,在通过Action转发的页面中,我们可以通过Struts2的标签<s:property/>来输出这些值,但是这样得到的值却仅限于输出显示,不能进行进一步的操作,那么我们应该怎样得到ValueStack中的值又能对它进行其他操作呢?
首先,我们需要了解Struts2是将Action中的属性全部封装在一个叫做struts.valueStack的请求属性中,然后我们就可以通过下面的代码来获取这些值了:
<%@ page import="com.opensymphony.xwork2.util ...
- 2009-03-28 23:40
- 浏览 4836
- 评论(0)
1、在Tomcat的webapps目录下新建一个文件夹,取名为Test。
2、在Test目录下新建一个WEB-INF目录。
3、在WEB-INF目录下建立classes和lib目录。classes目录用于存放应用需要加载的java类文件,lib目录存放Struts2包和其他需要用到的第三方库文 ...
- 2009-03-28 22:31
- 浏览 1153
- 评论(0)
概括地说,MVC思想将一个应用分成了Model,View,Control三个部分。三个部分以最少的耦合协同工作,从而提高应用的可扩展性和维护性。
MVC具有以下特点:
多个视图对应一个模型
模型返回的数据与显示逻辑分离
三层架构导致的低耦合性和易维护性。
在struts2中,Model对应业务逻辑组件,它通常用于实现业务逻辑方法以及以及与底层数据库的交互等;View对应视图组件,通常是指JSP页面,但也适用于其他视图显示技术,如Velocity或者Excel文档;Control对应系统核心控制器和业务逻辑控制器,系统核心控制器为Struts2框架提供的FilterDispatcher,它根 ...
- 2009-03-28 21:14
- 浏览 3663
- 评论(1)
将hibernate.hbm2ddl.auto的值设为update
具体说明hibernate.hbm2ddl.auto几个参数的意思:
validate 加载hibernate时,验证创建数据库表结构 create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 create-drop 加载hibernate时创建,退出是删除表结构 update 加载hibernate自动更新数据库结构
- 2009-03-18 10:29
- 浏览 2728
- 评论(0)
由于Struts2的MVC框架,Action被禁止调用Hibernate的API。所以在与Hibernate的整合中,我们应将中间层组件划分为业务逻辑层和Dao层,在这种结构体系下,业务逻辑层应该专注于业务逻辑的实现,避免与任何持久层技术耦合,而Dao层则专注于持久化访问,无需理会任何逻辑功能。为了实现这种分层策略,我们应该为每个Dao组件和业务逻辑组件都定义一个接口。具体的说,就是让Struts2的Action依赖于业务逻辑接口,而业务逻辑组件则依赖与Dao接口,另外,我们应当使用工厂模式来实现这种面向接口的编程方式。
- 2009-03-11 14:51
- 浏览 1270
- 评论(0)
传统的数据库连接:通过DriverManager获得数据库连接对象,每个数据库连接对象都对应一个物理数据库连接,每次操作都打开一个连接,使用完后又都关闭连接。频繁的打开、关闭连接造成系统的性能低下。
使用数据 ...
- 2008-12-09 15:43
- 浏览 1093
- 评论(0)
静态工厂方法 创建类的实例的最常见的方式是用new语句调用类的构造方法。在这种情况下,程序可以创建类的任意多个实例,每执行一条new语句,都会导致Java虚拟机的堆区中产生一个新的对象。假如类需要进一步封装创建自身实例的细节,并且控制自身实例的数目,那么可以提供静态工厂方法。
例如Class实例是Java虚拟机在加载一个类时自动创建的,程序无法用new语句创建java.lang.Class类的实例,因为Class类没有提供public类型的构造方法。为了使程序能获得代表某个类的Class实例,在Class类中提供了静态工厂方法forName(String name) ...
- 2008-12-05 21:01
- 浏览 2445
- 评论(0)