随笔-124  评论-49  文章-56  trackbacks-0
 
1 jndi
配置数所源
<context:property-placeholder location="jdbc.properties"/>//引入资源文件
    
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            
<property name="driverClassName" value="org.git.mm.mysql.Driver[${driverClassName}]"/>
            
<property name="url" value="jdbc:mysql://localhost:3306/database?useUnicode=true &amp; characterEncoding=UTF-8[${url}]"/>
            
<property name="username" value="root[${username}]"/>
            
<property name="password" value="root[${password}]"/>
            
<!-- 连接池启动时的初始值勤 -->
            
<property name="initialSize" value="1[${initialSize}]"/>
            
<!-- 连接池的最大值 -->
            
<property name="maxActive" value="500[${maxActive}]"/>
            
<!-- 最大空闲值,当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接释放一部分,一直减少到maxIdle为止 -->
            
<property name="maxIdle" value="2[${maxIdle}]"/>
            
<!-- 最小空闲值,当连接池的连接数量少于阀值时,连接池就会申请一些连接,以免洪峰时来不及申请 -->
            
<property name="minIdle" value="1[${minIdle}]"/>
        
</bean>
2 bean
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
        
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        
<property name="url" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=somken"/>
        
<property name="username" value="sa"/>
        
<property name="password" value="123456"/>
 
</bean>
    
    
<bean id="sf" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="dataSource" ref="datasource"/>
        
        
<property name="mappingResources">
            
<list>
                
<value>org/somken/entity/UserInfo.xml</value>
            
</list>
        
</property>
        
        
<property name="hibernateProperties">
            
<props>
                
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                
<prop key="hibernate.show_sql">true</prop>
            
</props>
        
</property>
    
</bean>
3 读取hibernate.cfg.xml
<bean id="sf" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>
posted @ 2009-11-30 09:45 junly 阅读(300) | 评论 (0)编辑 收藏
     摘要: IOC控制反转:应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。 依赖注入:在运行期,由外部容器动态地将依赖对象注入到组件中。 ----------------------------------------------------------------------------- 第一个项目 1    spring的依赖库 &n...  阅读全文
posted @ 2009-11-30 08:58 junly 阅读(345) | 评论 (0)编辑 收藏
AOP
     摘要: 静态代理 通过接口实现 动态代理 1 编写java代理类 public class SecurityHandler implements InvocationHandler {     private Object targetObject;    ...  阅读全文
posted @ 2009-11-30 08:36 junly 阅读(344) | 评论 (0)编辑 收藏
sql
package org.epet.dao.impl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.sun.java_cup.internal.internal_error;

public abstract class BaseDAO {
    
private static final String DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    
private static final String DATABASE_URL = "jdbc:sqlserver://localhost:1433;DatabaseName=epet";
    
private static final String DATABASE_USER = "sa";
    
private static final String DATABASE_PASSWORD = "accp";
    
    
/**
     * 返回连接
     * 
@return
     
*/

    
public static Connection getConnection() {
        Connection connection
=null;
        
try {
            Class.forName(DRIVER_CLASS);
            connection 
= DriverManager.getConnection(DATABASE_URL,
                    DATABASE_USER, DATABASE_PASSWORD);
//                Context tx=new InitialContext();
//                DataSource ds=(DataSource)tx.lookup("java:comp/env/food");
//                connection=ds.getConnection();

        }
 catch (SQLException e) {
            e.printStackTrace();
        }
 catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        
return connection;
    }

    
/**
     * 查询
     * 
@param sql
     * 
@return
     
*/

    
public static ResultSet getDate(String sql){
        Connection connection
=getConnection();
        ResultSet resultSet
=null;
        
try {
            PreparedStatement preparedStatement
=connection.prepareStatement(sql);
            resultSet
=preparedStatement.executeQuery();
        }
 catch (SQLException e) {
            e.printStackTrace();
        }

        
return resultSet;
    }

    
    
public static int dele(String sql,int id){
        
int result=0;
        Connection connection
=getConnection();
        
try {
            PreparedStatement preparedStatement
=connection.prepareStatement(sql);
            preparedStatement.setInt(
1, id);
            result
=preparedStatement.executeUpdate();
        }
 catch (SQLException e) {
            e.printStackTrace();
        }

        
return result;
    }

}

mysql:
/*show databases;
create database aa;
use aa;
show tables;
select * from userinfo limit 1,2;
-----------------------------------------
*/

public connection getConnection () throws SQLException{
  Class.forName(
"com.mysql.jdbc.Driver");
  String url
="jdbc:mysql://127.0.1:3306/somken(数据库名)";
  
return DriverManager.getConnection(url,"root","root");
}
posted @ 2009-11-30 08:21 junly 阅读(516) | 评论 (0)编辑 收藏

1 自定义异常类 SystemException.java

public class SystemException extends RuntimeException{
 //自定义key
 private String key;
 //自定义参数
 private Object[] values;

 //实现父类的构造方法
 public SystemException() {
  super();
 }

 public SystemException(String message, Throwable cause) {
  super(message, cause);
 }


 public SystemException(String message) {
  super(message);
 }


 public SystemException(Throwable cause) {
  super(cause);
 }

 //自定义构造方法
 public SystemException(String message, String key) {
  super(message);
  this.key=key;
 }

 //自定义构造方法,带一个参数
 public SystemException(String message, String key,Object value) {
  super(message);
  this.key=key;
  this.values=new Object[]{value};
 }
 
 //自定义构造方法,带多个参数
 public SystemException(String message, String key,Object[] values) {
  super(message);
  this.key=key;
  this.values=values;
 }
 
 //相应的get方法
 public String getKey() {
  return key;
 }

 public Object[] getValues() {
  return values;
 }
}
2 自定义异常处理器 SystemExceptionHandler.java

//作用:截获SystemException,并根据SystemException中的信息动态创建ActionMessage等这些错误信息,
        将其存在request中
public class SystemExceptionHandler extends ExceptionHandler{

 /**
  * 处理SystemException异常
  */
 @Override
 public ActionForward execute(Exception ex,//抛出的异常
         ExceptionConfig config,//struts-config.xml中的配置信息
         ActionMapping mapping,
          ActionForm form,
         HttpServletRequest request,
         HttpServletResponse response) throws ServletException {
  
  ActionForward forward=null;
  //创建ActionForward
  if(config.getPath()!=null){
   //有path属性,则根据path创建
   forward=new ActionForward(config.getPath());
  }else {
   //没有path属性,则根据input属性创建
   forward=mapping.getInputForward();
  }
  if(ex instanceof SystemException){
   SystemException se=(SystemException)ex;
   //key可有可无,所以取出key进行判断
   String key=se.getKey();
   ActionMessage error=null;
   //如果自定义的key为空,用struts的
   if(key==null){
    //拿出error.default和message,创建ActionMessage对象
    error=new ActionMessage(config.getKey(),se.getMessage());
   }else {
    //如果自定义的key有值
    if(se.getValues()!=null){
     error=new ActionMessage(key,se.getValues());
    }else {
     //如果自定义的key有值,则根据key创建ActionMessage对象
     error=new ActionMessage(key);
    }
   }
   //将这个ActionMessage放到request中。key为自定义的,error为ActionMessage对象
   //forward是要转到什么地方,根据path属性创建。"request"为scope的一个,也可以
   //用config.getScope()
   this.storeException(request, key, error, forward, config.getScope());
   return forward;
  }
  return super.execute(ex, config, mapping, form, request, response);
 }
}


3 编写配置文件 struts-config.xml

<global-exceptions>
   <exception key="error.default"
        type="java.lang.Exception"
        scope="request"
        path="/common/exception.jsp"
    <!-- 自定义的异常处理类 -->
        handler="org.oa.common.SystemExceptionHandler"/>
</global-exceptions>

4 编写资源文件 ApplicationResources.properties

error.default={0}
error.org.del=Can't Del Orgnation,id is {0}!

5 业务代码

throw new org.oa.common.SystemException("存在子机构,不允许删除!","error.org.del",org.getOname());

posted @ 2009-11-30 08:17 junly 阅读(494) | 评论 (0)编辑 收藏
框架
面向请求驱动:
struts1.x,struts2.x,WebWork
面向事件驱动的(JSF)
--------------------------------------
struts空字段测试
<input type="text" name="username"\>
ActionForm中有:
private String username;
private String password;
页面取得值:
<%=form.getUserName()%>//结果:
<%=form.getPassWord()%>//结果:null
${requestScope.userActionForm.username}//结果:
${requestScope.userActionForm.password}//结果:
----------------------------------------------------
java国际化
1 了解缺省Locale是由操作系统决定的,Locale是由语言和国家代码组成
2 国际化资源文件是由baseName+locale组成,一般在src目录下就可以了,如:MessageBundle_en_US.properties
baseName是任意合法的文件名
3 native2ascii命令的位置和用法
  * 位置:java_home/bin
  * 使用native2ascii.exe o.properties MessagesBundle_zh_CN.properties
  * DOS
    D:\>native2ascii -encoding gb2312 aaa.txt bbb.txt
------------------------------------------------------------------
struts国际化
1 在struts-config.xml文件中加入:<message-resources parameter="MessageResources"/>
  注意:文件默认放在根src下,如入在其他目录下.
  如:res目录下用"."连接<message-resources parameter="res.MessageResources"/>
2 提供不同版本的国际化文件,中文需要采用native2ascii转换成unicode
MessageResources_en_US.properties文件
user.login.success={0},Login Success
user.title=User Login
user.name=User Name
user.password=Password
user.button.login=Login
MessageResources_zh_CN.properties文件
user.login.success={0},\u767b\u5f55\u6210\u529f
user.title=\u7528\u6237\u767b\u5f55
user.name=\u7528\u6237\
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55
3 在jsp中采用<bean:message>标签读取国际化文本
<titel><bean:message key="user.title"/></title>
<bean:message key="user.name"/>:<input type="text" name="username"/>
<bean:message key="user.password"/>:<input type="password" name="password"/>
<input type="submit" value="<bean:message key="user.name"/>"/>
4 动态设置locale
Locale currentLocale=Locale.getDefalut();得到Locale
currentLocale=new Loale("zh","CN");//建立Locale
currentLocale=new Loale("en","US");//建立Locale
request.getSession().setAttribute(Globals.LOCALE_KEY,currentLocale);
this.setLocale(request,currentLocale);//效果同上
5 动态设置message
  * 创建messages集合
  ActionMessages messages=new ActionMessages();
  * 创建国际化消息文本
 public ActionMessage(String key,Object value)
 ActionMessage message=new ActionMessage("user.login.success",username);//只不清一个参数
 //ActionMessage message=new ActionMessage("user.login.success",new Object[]{username});//多个参数
 messages.add("loginSuccess1",message);
 * 传递国际化消息文本
 this.saveMessages(request,messages);
 错误信息传递使用:this.saveErrors(request,messages);
 * 页面输出
 通过<html:message>标签显示消息(可以显示普通消息和错误消息)
 通过<html:errors>标签显示消息(只能显示错误消息)
 <html:messages id="msg" message="true">//html:messages标记与ActionMessages messages集合对应
  <bean:write name="msg"/>
 <html:messages>
 <html:messages id="msg" message="true" property="loginSuccess1">
  <bean:write name="msg"/>
 <html:messages>
-------------------------------------------------------------------
JSTL国际化
<fmt:setLocale vlaue="${header['accept-language']}"/>设置locale
<fmt:setBundle basename="res.MessageResources"/>//设置资源文件
<fmt:message key="user.username"/>
---------------------------------------------------------------------
struts的路径与模式匹配
posted @ 2009-11-30 08:16 junly 阅读(344) | 评论 (0)编辑 收藏
1 建立页面
<form action="" name="form1"  enctype="multipart/form-data" method="post">
2 建ActionForm类
private String title;
private FormFile file;//必须用apache的FormFile类(org.apache.struts.upload.FormFile)
3 建立Action类
UplodaActionForm uaf=(UplodaActionForm)form;
Systyem.out.println("title:"+uaf.getTitle());
FormFile file=uaf.getFile();
if(file!=null)
{
 System.out.println("fileName:"+file.getFileName());
 FileOutputStream fos=new FileOutputStream("c:\\"+file.getFileName());
 fos.write(file.getFileData());
 fos.flush();
 fos.close();
}
return mapping.findForward("sessucc");
4 配置ActionForm和Action
<controller MaxFileSize="10M"></controller>该属性可以配置上传文件的大小等相关信息
posted @ 2009-11-30 08:16 junly 阅读(416) | 评论 (0)编辑 收藏
1 ActionForm中的validate方法验证
1)重写ActionForm中的validate方法
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request){
 ActionErrors errors=new ActionErrors ();
  if(username==null || username.length()<0){
  errors.add("unameisnull",new ActionMessgae("error.validate.unull"));
 }
 return errors;
}
2)资源文件ApplicationResources.properties
error.validate.unull=usernaem is null
3)在config.xml的<action-mappings>中<action>加入validate="true"属性
4)页面标签
<html:errors/>
----------------------------------------------------
validate验证框架
1 创建form继承ValidatorForm或用DynaValidatorForm
2 在WEB-INF下创建validator-rules.xml和validation.xml
3 在src下创建资源文件ApplicationResources.properties
4 要struts-config.xml中配
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
                       value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
5 编写validation.xml文件
<formset>
 <form name="userForm">
   <field property="username"  depends="required">
   <arg key="lable.username"/>
   </field>
 </form>
</formset>
6 页面使用<html:errors/>标签
posted @ 2009-11-30 08:15 junly 阅读(478) | 评论 (0)编辑 收藏

struts标签的使用和配置
配置:
1 在struts-config.xml文件中加入(可以到示例中的struts-config.xml文件中复制)
  <message-resources parameter="MessageResources" />
2 在示例的src下拷贝MessageResources.properties文件到项目src下
3 在页面引入就可使用
  <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
说明:第1,2步为struts的国际化资源束文件引入,第3为标签引入
-----------------------------------------------------------------------------
Bean标记
bean:define
从已有的变量或者变量的属性来定义一个新的变量。
<bean:define id="新定义的变量名" scope="原变量的scope" name="原变量名" toScope="新定义变量的scope"></bean:define>
<bean:define id="新定义的变量名" scope="原变量的scope" name="原变量名" property="原变量的属性名" toScope="新定义变量的scope"></bean:define>
bean:write
<bean:write scope="变量的scope" name="变量名" property="变量的属性名" filter="是否按html格式输出(默认true为文本输出)" format="数字(###,###.0000)日期(yyyy-MM-dd HH:mm:ss)"/>
结构数据中多重属性可用"."作导航取出来
bean:message
相当于jstl中<fmt:message>(国际化标签)
1 定义资源文件
com.itcast.ApplicationResources.properties
com.itcast.ApplicationResources_zh_CN.properties
2 在struts-config中添加:
<message-resources parameter="ApplicationResources" key="myKey" />
3 页面中使用
<bean:message bundle="myKey" key="userName"/>
<bean:message bundle="myKey" key="password"/>
bean:size标签
--------------------------------------------------------------
logic标记
logic:empty/login:notEmpty 判断对象是否为空
<logic:empty name="对象名" property="属性名" scope="对象的scope">
 为空<br>
</logic:empty>
logic:notEmpty 判断对象是否不为空
<logic:notEmpty name="对象名" property="属性名" scope="对象的scope">
 不为空<br>
</logic:notEmpty>
logic:present 判断对象是否存在(用方同上)
logic:notPresent
----------------------------------------------||
例子:
request.setAtrribute("attr1",null);
request.setAtrribute("attr2","");
request.setAtrribute("attr3",new ArrayList());
<logic:empty name="attr1">
 11<br>
</logic:empty>
<logic:notEmpty name="attr1">
 12<br>
</logic:notEmpty>
<logic:present name="attr1">
 13<br>
</logic:present>
<logic:notPresent name="attr1">
 14<br>
</logic:notPresent>

<logic:empty name="attr2">
 21<br>
</logic:empty>
<logic:notEmpty name="attr2">
 22<br>
</logic:notEmpty>
<logic:present name="attr2">
 23<br>
</logic:present>
<logic:notPresent name="attr2">
 24<br>
</logic:notPresent>

<logic:empty name="attr3">
 31<br>
</logic:empty>
<logic:notEmpty name="attr3">
 32<br>
</logic:notEmpty>
<logic:present name="attr3">
 33<br>
</logic:present>
<logic:notPresent name="attr3">
 34<br>
</logic:notPresent>
结果:
11空
14不存在

21空
23存在

31空
33存在
-----------------------------------------||
html:equal/html:notEqual
html:greaterEqual大于等于
html:greaterThan大于
html:lessEqual小于等于
html:lessThan小于
-----------------------------------------||
logic:iterate(循环)
name:对应的bean,是一个集合类型
property:对应的集合类型的属性
scope:变量的scope
id:临时变量名
offset:循环起始位置
indexId:集合中当前无素的下标
length:控制长度
单循环
<logic:iterate id="username" scope="request" name="对应的bean,是一个集合类型">
     output every username:${username }<br>
</logic:iterate>
双循环
<logic:iterate id="user" scope="request" name="list" offset="2" indexId="i">
     ${user.username }<br>
     <logic:iterate id="love" name="user" property="loves">
      ${love }
     </logic:iterate><br>
</logic:iterate><br>

logic:
tiles标记

----------------------------------------------------------------
html标签
<html:form action="/login" method="post">
username:<html:text property="username" value="123"/>
password:<html:password property="password"/>
sex:<html:radio property="sex" value="0" />男
    <html:radio property="sex" value="1" />女
likes:<html:checkbox property="0" value="0">吃饭</html:checkbox>
      <html:checkbox property="0" value="1">吃饭</html:checkbox>
xueli:<html:select property="xueli">
         <html:option value="0">小学</html:option>
         <html:option value="1">小学</html:option>
  <html:optionsCollection property="qxlist" label="qx" value="qxid"/>
  //<html:optionsCollection name="qxlist" label="qx" value="qxid"/>

         1.
      </html:select>
<html:submit value="提交"/>
</html:form>

posted @ 2009-11-30 08:14 junly 阅读(674) | 评论 (0)编辑 收藏
struts validator验证框架
1 配置:
    * 加入国际化配置在struts-config.xml文件中,如:
    <message-resources parameter="MessageResources"/>
    * 提供国际化资源文件
    * 引入validator插件在struts-config.xml文件中,如:
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
      <set=property
       property="pathnames"
       value="WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"
      />
    </plug-in>
    * 提供validator.xml和validator_rules.xml文件,将此文件拷贝到WEB-INF下
2 validator服务器验证
    * 配置validation.xml文件
3 validator客户验证(javascript)
    * 配置validation.xml文件
    * 在jsp页面中包含<html:javascript>
    * 对需要验证的表单定义onsubmit事件,其中事件名称为validate+ActionForm的名称,如:validateLogin
posted @ 2009-11-30 08:13 junly 阅读(303) | 评论 (0)编辑 收藏
仅列出标题
共18页: First 上一页 2 3 4 5 6 7 8 9 10 下一页 Last