JAVA开发总结

时间:2024.3.19

目   录               

Tomcat. 3

1.      影响系统日期,如果相差8个小时可以使用以下方式解决... 3

JAVA. 3

1.      XStrem产生XML文件... 3

2.      字符串处理去掉空格回车等(java) 3

3.      获取java工程跟路径: 3

4.      XFire 出错信息... 3

5.      XFire 性能... 5

6.      Java中double除法出现除不尽小数解决办法... 5

7.      java反射执行指定的方法... 6

8.         Java枚举... 9

9.         list,set,map,数组间的相互转换... 10

10.      Java调用C,VB dll文件等... 11

11.      JAVA注解的使用... 18

12.      CollectionUtils.transform(). 20

13.      使用SQL批量执行语句... 20

14.      获取java报错的堆栈信息... 21

Eclipse. 21

1.      时间设置: 21

2.      CGLIB 报错... 21

3.      Alt + 回车 ->调出当前资源的属性... 22

4.      MyEclipse编译的时候内存不足配置: 22

5.      指定Eclipse  VM在 eclipse.ini文件里加入... 22

Oracle. 22

1.      Oracle树结构查询... 22

2.      同一张表数据copy. 22

3.      查询某个相对时间段内的数据... 23

4.      oracle执行sql文件... 23

5.      orcle删除表恢复... 23

6.      oracle连接查询 +. 23

7.      oracle查询实例... 24

8.      查询树形结构sql语句... 24

9.      复制同一表中的数据从A字段到B字段... 24

10.        sql case:语句... 24

11.        oracle行列转换wmsys.wm_concat,乱码用tochar解决. 24

12.        判断函数: decode(f_region, 1, null, branch) 24

13.        oracle  TNS 配置... 24

14.        Oracle双机的配置... 25

15.        oracle账户解锁... 26

16.        oracle用户密码修改,如果不记得可以修改... 26

17.        oracle字段乱码恢复,程序跟踪为乱码字符,无法复制到外面进行编辑... 26

18.        全角半角转换SQL. 27

19.        oracle查询表空间大小[时间较长]. 27

20.        oracle锁表进程的查看和解除. 28

21.        oracle  if  else 用法... 31

22.        oracle WITH DETAIL 用法... 32

JS. 33

1.      Js中parseFloat()方法所产的精度不一致问题... 33

2.      2 .Jquery的Ajax同步调用方式... 33

3.      输入框只能填写数字... 34

4.      js参数乱码问题... 34

5.      js获取文件扩展名... 34

6.      正则表达式整数判断... 34

1.      frame对象的处理... 34

2.      也可以给frame加事件监听文档的加载... 34

3.      数据不能读可以写 readonly="readonly"; 35

4.      frame可以添加事件: 35

5.      avascript设置一个变量,只允许提交一次[防止重复提交。... 35

6.      如果刷新一个已经提交过的页面时系统总是会提示一个"重试或取消”的对话框., 35

7.      .FCKeditor:使用... 36

8.      URL乱码转化... 36

9.      html的form中定义submit按钮后无法用js提交... 36

10.        输入文本框长度检查... 36

11.        页面刷新出现IE浏览器”重试””取消”的提示框... 37

12.        JQuery实现复选框多选取值... 37

13.        JQuery下拉选取值... 37

14.        TD文字多的时候换行CSS. 38

15.        JS解析地址栏里的参数信息... 38

16.        Frame使用, 39

17.        Frame 调用其他frame的方法,点击别的页面隐藏最外层框架的弹出菜单。... 40

18.        File控件设置onchange事件,清空路径后会再次出发解决方法。... 42

19.        Frame模拟单击事件... 42

20.        通过滤镜获取图片高度等. 42

WEB服务器... 44

1.      weblogic 编码问题: 44

2.      2.Linux下字体乱码终极解决方案... 45

JSP. 46

1.      EL取值... 46

2.      md5加密: 46

3.      标签... 46

4.      Struts标签执行静态类的方法... 46

Tomcat

1.       影响系统日期,如果相差8个小时可以使用以下方式解决                      

在 tomcat startup.bat 第一行 添加配置set JAVA_OPTS=                    -Duser.timezone=GMT+08

JAVA

1.       XStrem产生XML文件

                 XStream x = new XStream(new JettisonMappedXmlDriver());

                   x.alias("ms", List.class);

                   x.alias("m", SuperBean.class);

                   // 过滤一些不必要的字段

                   x.omitField(SuperBean.class, "className");

                   x.omitField(SuperBean.class, "property");

                   x.omitField(SuperBean.class, "panelId");

                   x.omitField(SuperBean.class, "datetime");

                   String toDoListStr = x.toXML(sbList);

2.       字符串处理去掉空格回车等(java)

       public String replaceBlank(String strold) {

                   Pattern p = Pattern.compile("\\s*|\t|\r|\n");

                   String strnew = strold;

                   Matcher m = p.matcher(strnew);

                   String after = m.replaceAll("");

                   return after;

         }

3.       获取java工程跟路径:

 Platform.SYS_INFO.get("sys.realpath");

4.       XFire 出错信息

http://xfire.codehaus.org/

java xfire 创建webservice 时碰到的错误java相关 20##-04-25 16:10:21 阅读683 评论4   字号:大中小 订阅 .

错误一:

15:27:36,062 ERROR [STDERR] org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Unexpected close tag </body>; expected </HR>.

 at [row,col {unknown-source}]: [1,1013]

15:27:36,062 ERROR [STDERR] org.codehaus.xfire.fault.XFireFault: Unexpected close tag </body>; expected </HR>.

 at [row,col {unknown-source}]: [1,1013]

15:27:36,062 ERROR [STDERR]  at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)

15:27:36,062 ERROR [STDERR]  at org.codehaus.xfire.client.Client.onReceive(Client.java:386)

解决方法:调用的地址写错了。

错误二:

Caused by: java.lang.IllegalAccessException: Class org.codehaus.xfire.service.invoker.LocalFactory can not access a member of class

解决方法:接口实现类不是public 的,所以不能实例化。

错误三:java.io.CharConversionException: Invalide char #a323

解决方法:试试添加 xfire 1.1 miscellaneous 库

错误四:org.codehaus.xfire.fault.XFireFault: Couldn't access service object.

org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't access service object.

 at org.codehaus.xfire.fault.Soap11FaultSerializer.readMessage(Soap11FaultSerializer.java:31)

 at org.codehaus.xfire.fault.SoapFaultSerializer.readMessage(SoapFaultSerializer.java:28)

 at org.codehaus.xfire.soap.handler.ReadHeadersHandler.checkForFault(ReadHeadersHandler.java:111)

 at org.codehaus.xfire.soap.handler.ReadHeadersHandler.invoke(ReadHeadersHandler.java:67)

 at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)

 at org.codehaus.xfire.client.Client.onReceive(Client.java:406)

 at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)

 at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)

 at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)

 at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)

 at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)

 at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)

 at org.codehaus.xfire.client.Client.invoke(Client.java:336)

 at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)

 at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)

 at $Proxy0.pay(Unknown Source)

解决办法:类不能访问,构造函数修改为public 看看。

5.       XFire 性能

最近项目需求..利用Xfire这个经典的WebService框架,搭建了与单片机通信的桥梁...(这个WebService不是我搭建的..我只负责调

用客户端).目前利用Xfire客户端并发访问的有30台服务器左右,开始每个服务器开启一条线程(包括自己写的WebService链接超时

机制的线程)多线程进行对所有服务器的并发访问,获取反馈数据.因为WebService创建链接并获取反馈数据,消耗CPU量比较大.所以

.通过普通线程创建访问的方式..给CPU带来非常大的压力.后来改用jdk5新加入的ThreadPoolExecutor管理线程,因为大量的线程创

建也有非常大的资源消耗.所以利用线程池进行管理..xfire的通信是中断式的,并不保持链接.所以利用hashmap把链接对象缓存起

来.(xfire创建对象需要消耗500毫秒,客户端不是我写的..因此无法优化).减少创建对象的消耗.因此cpu的峰值从85%降低到45%.

不知道其他高手还有没有其他较好的解决方案.

使用Stax解释XML,性能有了质的提高。XFire采用Woodstox 作Stax实现;

XFire是完全基于流数据处理进行工作的系统,这意味着XFire不是将整个SOAP文档缓存在内存中,而是以管道的方

式接收SOAP流数据。这种工作方式的转变带来了可观的性能回报,同时节省了内存的占用。

  XFire从管道中接收一个SOAP请求到返回一个SOAP响应,会经历一系列的阶段。在管道调用的任何一个阶段,

XFire都可以添加一些额外的Handler,在对消息进行加工处理后再传入到下一个阶段中。在SOAP请求消息对Web

Service发起真正调用之前,分别会经过传输、预转发、转发、策略实施、用户信息处理、预调用、服务调用等阶段。

6.       Java中double除法出现除不尽小数解决办法

主要是要算出除法运算完成后有多少小数位数

   publicstaticvoid main(String[] args){

      double d = 45.22;

      int i = (d+"").indexOf(".");

      int scal = (d+"").substring(i+1).length();

     

      BigDecimal b1 = new BigDecimal(d);

      BigDecimal b2 = new BigDecimal(1000);

      System.out.println(DoubleTest.div(d,new Double(1000),scal+3));

   }

   publicstatic  Double div(Double v1, Double v2, int scale) {

      BigDecimal b1 = new BigDecimal(v1.toString());

      BigDecimal b2 = new BigDecimal(v2.toString());

      returnnew Double(b1.divide(b2).setScale(scale).doubleValue());  

   }

7.       java反射执行指定的方法

   

/**

 * 创建日期:2011<br>

 * Title:文件所属模块:对类操作封装<br>

 * Description:对本文件的详细描述,原则上不能少于50字

 * @author  xyj

 * @mender:(文件的修改者,文件创建者之外的人)

 * @version 1.0

 * Remark:认为有必要的其他信息

 */

publicclass EntiyUtils {

   publicstatic HashMap<String,Method> mtd = new HashMap<String,Method>();

    static{

        //执行操作前先清理一下

       mtd.clear();

    }

   /**

    * 功能:此方法用于判断两个对象指定的方法的值是否相同

    * @param source  源对象

    * @param targer  目标对象

    * @param methods 要对比值的get方法

    * @return  两个对象的属性是否相同

    * @throws InvocationTargetException

    * @throws IllegalAccessException

    * @throws IllegalArgumentException 

    */

    publicstaticboolean compareProperties(Object source,Object targer,String[] methods) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException{

      boolean ok = true;

      Class<?> cl = source.getClass();

      Method[] methds = cl.getMethods();

      for(String methodname: methods){

         if(null != methodname){

              Method md =  getMethod(methodname,methds); //获取当前方法

             Object sVal = md.invoke(source);           //获取源对象的值

             Object tVal = md.invoke(targer);           //获取目标对象的值

             if(sVal==null && tVal==null){

                 continue;

             }elseif(sVal==null || tVal==null){ //如果其中一个为空则中断

                 ok = false;

                 break;

             }else{  //---------如果两个对象都不是空则判断是否相等

                    if(sVal instanceof Date){

                       Date d1 = (Date)sVal;

                       Date d2 = (Date)tVal;

                       if(d1.compareTo(d2)!=0){

                          ok = false;

                          break;

                       }

                  }elseif(sVal instanceof String){

                    String s1 = (String)sVal;

                    String s2 = (String)tVal;

                    if(!s1.equals(s2)){

                       ok = false;

                       break;

                    }

                  }elseif(sVal instanceof Double){

                    double d1 = (Double)sVal;

                    double d2 = (Double)tVal;

                    if(d1!=d2){

                       ok = false;

                       break;

                    }

              }elseif(sVal instanceof Long){

                  long l1= (Long)sVal;

                  long l2= (Long)tVal;

                  if(l1 != l2){

                     ok = false;

                     break;

                  }

              }elseif(sVal instanceof Integer){

                  int  t1 = (Integer)sVal;

                  int  t2 = (Integer)tVal;

                  if(t1!=t2){

                     ok = false;

                     break;

                  }

              }else{

                  if(sVal != tVal){

                     ok = false;

                     break;

                  }

              }

             }

         }

      }

      return ok;

    }

   /**

    * 根据name获取方法对象

    * @param name

    * @param methds

    * @return

    */

   publicstatic Method getMethod(String name,Method[] methds){

      if(!mtd.containsKey(name)){

       mtd.clear();

      for(int j=0;j<methds.length;j++){

          mtd.put(methds[j].getName(), methds[j]);

        }

      }

      returnmtd.get(name);

   }

  

   publicstaticvoid main(String[] args){

      TestObj t1 = new TestObj();

      t1.setDbb(new Double(12.3));

      t1.setS("myss天ffff津");

      t1.setInttSs(new Integer(23));

      t1.setDelete_flag("23");

     

      TestObj t2 = new TestObj();

      t2.setDbb(new Double(12.3));

      t2.setS("myss天津");

      t2.setInttSs(new Integer(23));

      t2.setDelete_flag("23");

     

      String[] md = {"getDbb","getS","getInttSs","getDelete_flag"};

      try {

         System.out.print(compareProperties(t1,t2,md));

      } catch (IllegalArgumentException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (IllegalAccessException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      } catch (InvocationTargetException e) {

         // TODO Auto-generated catch block

         e.printStackTrace();

      }

   }}

8.  Java枚举

publicenum PEnum {

 RED {

     public String getRED(){

       return "ss";

     }

    },

 WHRIT{

     public String getWHRIT(){

          return "ss";

        }

    },

 BLUE{

     public String getBLUE(){

          return "ss";

        }

       },

 BLAK{

     publicint getBLAK(){

          return 5;

        }

    }

}

   publicstaticvoid main(String[] args) {

      // TODO Auto-generated method stub

      PEnum p = PEnum.BLAK;

      if(true)

         p=PEnum.BLUE;

      if(PEnum.BLAK.equals("S")){

       

      }

      for(PEnum C : PEnum.values()){

         System.out.println(C);

      }

      switch(p){

       case  BLAK:

           System.out.print("111"+p);

       caseBLUE:

          System.out.print("222"+p);

      }

   }

9.  list,set,map,数组间的相互转换

list,set,map,数组间的相互转换

1.list转set

Set set = new HashSet(new ArrayList());

2.set转list

List list = new ArrayList(new HashSet());

3.数组转为list

List stooges = Arrays.asList("Larry", "Moe", "Curly");

或者

String[] arr = {"1", "2"};

List list = Arrays.asList(arr);

4.数组转为set

int[] a = { 1, 2, 3 };

Set set = new HashSet(Arrays.asList(a));

5.map的相关操作。

Map map = new HashMap();

map.put("1", "a");

map.put('2', 'b');

map.put('3', 'c');

System.out.println(map);

// 输出所有的值

System.out.println(map.keySet());

// 输出所有的键

System.out.println(map.values());

// 将map的值转化为List

List list = new ArrayList(map.values());

System.out.println(list);

// 将map的值转化为Set

Set set = new HashSet(map.values());

System.out.println(set);

6.list转数组

List list = Arrays.asList("a","b");

String[] arr = (String[])list.toArray(new String[list.size()]);

System.out.println(Arrays.toString(arr));

10.  Java调用C,VB dll文件等

java调用vc dllvb dll(Com 组件)

11.  JAVA注解的使用

1.       注解的定义:

/**

 * 注解测试

 * @author Administrator

 *

 */

@Target(ElementType.METHOD

@Retention(RetentionPolicy.RUNTIME

public@interface Annotion{

   int    id(); 

    String synopsis(); 

    String engineer() default "[unassigned]";  

    String date()     default "[unimplemented]";  

}

/**

 *

 其中的id()、synopsis()可以认为是该注解的元素,或者属性,这些方法声明不能有任何参数,或者抛出异常,可以通过default 来定义它的默认值

 而且这些类型只能是原语类型、String、Annotation或者这些类型的数组。

 最上面的@Target表面了改注解使用的范围(是一个方法还是一个类,或者一个域),@Retention表面了注解可以用在哪个级别上(源代码中、类文件中、还是运行时)

 这样,便定义了一个注解

**/

2.       注解的使用和解析

publicclass AnnotionTest {

   @Annotion(

         id       = 2868724,

          synopsis = "Enable time-travel", 

          engineer = "Mr. Peabody", 

          date     = "4/1/3007" )

         

   publicvoid Test1(){

      System.out.print("-->>");

   }

  

   publicstaticvoid main(String[] args){

     

      AnnotionTest t = new AnnotionTest();

      Method[] ans =   t.getClass().getMethods();

       

      for(Method an: ans){

        if(an.isAnnotationPresent(Annotion.class)){  //如果当前注解有定义类里的注解

           System.out.println(an.getAnnotation(Annotion.class));

           Annotion ns = (Annotion)an.getAnnotation(Annotion.class); //直接访问Annotion自定义注解里的属性

           System.out.print(ns.id()+"eng:"+ns.engineer());

        }

      }

     

     }

}

12.  CollectionUtils.transform()


该方法接收两个参数, 用来通过Transformer, 将制定的Collection进行转换, 得到一个新的经过转换后的Collection

CollectionUtils.transform(argsClses, new Transformer() {

            public Object transform(Object element) {

                Class ret = (Class) element;

                if (Enhancer.isEnhanced(ret)) {

                ret = ReflectHelper.getClass(getUnEnhancer(ret

                         .getName()));

                }

                return ret;

            }

        });

13.  使用SQL批量执行语句

* 功能:批量更新计划

 * @param obj

 */

privatevoid batchUpdateBySQL(String sql,Map<String,String> obj){

   Session session = null;

   try {

      SessionFactory sessionFact = BeanProvider.getSessionFactory();

      session = sessionFact.openSession();

      Transaction tx = session.beginTransaction(); // 使用Hibernate事务处理

      Connection conn = session.connection();

      PreparedStatement stmt = conn.prepareStatement(sql);

      Iterator<String> plans = obj.keySet().iterator();

      while (plans.hasNext()) {

         String key = plans.next();

         stmt.setString(1, obj.get(key));

         stmt.setString(2, key);

         stmt.addBatch();

      }

      int[] i = stmt.executeBatch();

      System.out.println("======>>成功更新:"+(i==null?0:i.length)+"->条");

      tx.commit(); // 使用 Hibernate事务处理边界

   } catch(Exception e) {

         e.printStackTrace();

   } finally {

      session.close();

   }

}

14.  获取java报错的堆栈信息

try{
      Exception exception = messageErrorLog.getException();
      StringWriter writer = new StringWriter();
      exception.printStackTrace(new PrintWriter(writer));
      errorLogDetailText.setText(writer.getBuffer().toString());
   }finally {
      if(writer != null)
        try {
           writer.close();
        }catch (Exception e) {
          e.printStackTrace();
        }
    }

Eclipse

1.       时间设置:

在eclipse中设置

   在 首选项->Tomcat ->JVM Settings 项,设定JRE的版本为'jre1.5.0_06',并且添加如下几个JVM Parameters:

   -Xms128m

   -Xmx512m

 -Dfile.encoding=UTF8

   -Duser.timezone=GMT+08

2.       CGLIB 报错

  查看/lib下面是否 有重复的 asm.jar包

3.       Alt + 回车 ->调出当前资源的属性

4.       MyEclipse编译的时候内存不足配置:

Defalut VM Arguments: 这儿设置即可。

5.       指定Eclipse  VM在 eclipse.ini文件里加入

-vm

C:\Program Files\Java\jdk1.5.0_04\bin\javaw.exe    #指定路径

Oracle

1.       Oracle树结构查询

 

 SELECT * FROM t_bns_prjm_project t where t.delete_flag=0

 CONNECT BY PRIOR t.id=t.super_projectid

 START WITH  t.project_name like '%北京~天津330kV送电工程%';

2.       同一张表数据copy

 CREATE OR REPLACE TRIGGER SETOLD

    BEFORE INSERT ON T_BPM_FORM_TEMPLATE

    FOR EACH ROW

BEGIN

      SELECT IDS.nextval INTO :new.id  FROM dual;

   END;

  

 insert into 表 (select * from 表 where 条件)

3.       查询某个相对时间段内的数据

  SELECT * FROM   T_GATHER_PROJECT_TREE

      WHERE   PROVINCE = REC.PROVINCE

              AND CREATE_TIME > (SELECT   MAX (CREATE_TIME) - 3 / 24 / 60

                                   FROM   T_GATHER_PROJECT_TREE

                                  WHERE   PROVINCE = REC.PROVINCE);

4.       oracle执行sql文件

 start  E:\database\3.sql

5.       orcle删除表 恢复

  

      SELECT * FROM user_recyclebin WHERE original_name=‘drop_test’; //

       //那么现在就可以用如下语句进行恢复:

     

           drop table drop_test //逻辑删除

          

      FLASHBACK TABLE drop_test TO BEFORE DROP //从回收站恢复

      PURGE table drop_test   //物理删除

6.       oracle连接查询 +

  1. LEFT OUTER JOIN:左外关联

SELECT e.last_name, e.department_id, d.department_name 

FROM employees e 

LEFT OUTER JOIN departments d 

ON (e.department_id = d.department_id);

等价于

SELECT e.last_name, e.department_id, d.department_name 

FROM employees e, departments d 

WHERE e.department_id=d.department_id(+);

结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。

2. RIGHT OUTER JOIN:右外关联

SELECT e.last_name, e.department_id, d.department_name 

FROM employees e 

RIGHT OUTER JOIN departments d 

ON (e.department_id = d.department_id);

等价于

SELECT e.last_name, e.department_id, d.department_name 

FROM employees e, departments d 

WHERE e.department_id(+)=d.department_id;

7.       oracle查询实例

   cmd:输入 lsnrctl status 查看日志文件路径,实例情况等

8.       查询树形结构sql语句

                SELECT  SYS_CONNECT_BY_PATH(PARENT_ID, '/') || '/' || ID as LEVEL_REF,ID FROM T_PGC_PROJECT_PLAN_AUDITING T

                   WHERE T.PLAN_TYPE IN (4,5,6,7)

                   AND T.PROJECT_ID IN (2000003352452,2000003352452) AND T.DELETE_FLAG = '0'

                     

                   START WITH T.PARENT_ID IN (-1)

                   CONNECT BY PRIOR T.ID = T.PARENT_ID ORDER BY length(LEVEL_REF),T.ORDER_ID ASC

9.       复制同一表中的数据从A字段到B字段

update T_YZJ_JUNG_JIES t set t.BIANZHI_USER=(select b.CREATE_USER from T_YZJ_JUNG_JIES b where t.id=b.id);

update T_YZJ_JUNG_JIES t set t.BIANZHI_DATE=(select b.CREATE_TIME from T_YZJ_JUNG_JIES b where t.id=b.id);      

10.   sql case:语句

UPDATE Personnel

SET salary = CASE WHEN salary >= 5000

             THEN salary * 0.9

WHEN salary >= 20## AND salary < 4600

THEN salary * 1.15

ELSE salary END

11.   oracle行列转换wmsys.wm_concat,乱码用tochar解决.

  select t.project_id,

         wmsys.wm_concat(to_char(fengx_leix || '&&&')),

         wmsys.wm_concat(to_char(kenyfsg || '&&&'))

    from t_sxm_fengxian t

    where t.jl_direct_id='2000003353567'

   group by t.project_id

12.   判断函数: decode(f_region, 1, null, branch)

13.   oracle  TNS 配置

    在ORACLE当中,如果想访问某个服务器,必需要设置TNS,它不想SQLSERVER那样,客户端会自动列举出在局域网内所有的在线服务器,只需在客户端选择需要的服务器,然后使用帐号与密码登录即可。而ORCAL是不会自动列举出网内的服务器的,需要通过读取TNS配置文件才能列出经过配置的服务器名。

ORACLE的配置文件名:tnsnames.ora

文件所在路径:安装ORACLE所在的目录\oracle\ora92\network\admin\tnsnames.ora

配置的一个实例:

# TNSNAMES.ORA Network Configuration File: D:\Oracle\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.

ODS =

  (description =

    (address = (protocol = tcp)(host = 10.201.64.12)(port = 1521))

    (connect_data =

      (sid = ods)

    )

  )

AUTOCLM_10.210.4.11 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.210.4.11)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = autoclm)

      (SERVER = DEDICATED)

    )

  )

CHELP =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.203.68.137)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = autoclm)

    )

  )

14.   Oracle双机的配置

ods.driver=oracle.jdbc.driver.OracleDriver

ods.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=10.1.30.68)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.30.69) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=dwth)))

ods.username=ODS_JJGKYY

ods.password=ODS_JJGKYY2009*

15.   oracle账户解锁

conn /as sysdba;

alert user system account unlock;

16.   oracle用户密码修改,如果不记得可以修改

方式一>

select username,password from dba_users;

 alter user system identified by 新密码;


17.   oracle字段乱码恢复,程序跟踪为乱码字符,无法复制到外面进行编辑

UPDATE   T_BNS_PRJM_SETPROJECTDIRECT T

   SET   T.CONTAIN_BIDSECT =

            (SELECT   ZH_CONCAT (TO_CHAR (CONTAIN_BIDSECT))

               FROM   T_BNS_PRJM_SETPROJECTDIRECT W

              WHERE       W.DELETE_FLAG = '0'

                      AND W.PARENT_ID = T.ID

                      AND W.DEPT_TYPE = '0')

 WHERE   T.DELETE_FLAG = '0' AND T.DEPT_TYPE='1'

         AND T.SUB_PROJECTID IN

                  (SELECT   ID

                     FROM   T_BNS_PRJM_PROJECT P

                    WHERE       P.DELETE_FLAG = '0'

                            AND P.PROJECT_LEVEL = '0002'

                            AND P.LEVEL_TYPE = '0010');

COMMIT;

18.   全角半角转换SQL

String sql = "SELECT CONCAT_RESULT(TO_SINGLE_BYTE(TO_CHAR(ID))) RST FROM T_BNS_PRJM_PROJECT WHERE ROWNUM<10";

19.   oracle查询表空间大小[时间较长]

select

a.a1 表空间名称,

c.c2 类型,

c.c3 区管理,

b.b2/1024/1024 表空间大小(M),

(b.b2-a.a2)/1024/1024 已使用(M),

substr((b.b2-a.a2)/b.b2*100,1,5) 利用率 from

(select tablespace_name a1, sum(nvl(bytes,0)) a2 from dba_free_space group by tablespace_name) a,

(select tablespace_name b1,sum(bytes) b2 from dba_data_files group by tablespace_name) b,(select tablespace_name c1,contents c2,extent_management c3 from dba_tablespaces) c where a.a1=b.b1 and c.c1=b.b1;

select

b.file_name 物理文件名,

b.tablespace_name 表空间,

b.bytes/1024/1024 大小M,

(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,

substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.bytes order by b.tablespace_name

 select
a.talbespace_name 表空间名称,
b.bytes 大小bytes,
b.file_name 数据文件名from dba_tablespaces a, dba_data_files bWhere a.talbespace_name=b.talbespace_name and a.contents=’TEMPORARY’;

查询结果如下:


从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使用临时文件。临时文件的信息被存储在数据字典V$tempfile中。命令如下:


Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

Select file#,status,name from V$tempfile;

查询数据字典V$tempfile结果如下:


在上面介绍的方法中,建议掌握命令方法,因为你的环境可能没有图形工具,而SQLPLUS一般情况下都是可以使用的,有了命令脚本,很容易得到表空间和数据文件的相关信息。另外,数据库管理员应该多整理命令脚本,在需要时直接执行脚本以提高工作效率。
在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误

20.   oracle锁表进程的查看和解除.

select sess.sid,

   sess.serial#,

   lo.oracle_username,

   lo.os_user_name,

   ao.object_name,

   lo.locked_mode

   from v$locked_object lo,

   dba_objects ao,

   v$session sess

where ao.object_id = lo.object_id and lo.session_id = sess.sid;

--查看锁表进程SQL语句2:

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;

--杀掉锁表进程:

--如有记录则表示有lock,记录下SID和serial# ,將记录的ID替換下面的738,1429,即--可解除LOCK

alter system kill session '738,1429';

oracle  IMP参数
C:\>imp help=y

可以通过输入 IMP 命令和您的用户名/口令
跟有您的用户名 / 口令的命令:

实例: IMP SCOTT/TIGER

或者, 可以通过输入 IMP 命令和各种自变量来控制“导入”按照不同参数。
要指定参数,您可以使用关键字:

格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
实例: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

21.   oracle  if  else 用法

if ... then

...  

elsif ... then

...  

else

...  

end if;  

   

or    

if ... then    

  ...  

else

...  

end if;  

   

or    

if ... then

...  

end if;

注:if后的条件不加括号

例子如下:

           if   p_fh <> ''   then

               p_strsql := p_strsql || ' and b.fh = p_fh';

           end if;

22.   oracle WITH DETAIL 用法

WITH DETAIL

       AS (SELECT   (    SELECT   id

                           FROM   T_BNS_PRJM_PROJECT m

                          WHERE   M.PROJECT_LEVEL = '0001'

                                  AND M.DELETE_FLAG = '0'

                     START WITH   m.id = PROJECT_ID

                     CONNECT BY   PRIOR m.SUPER_PROJECTID = m.id)

                       SUPER_ID,

                    TO_CHAR (CREATE_TIME, 'yyyy-mm-dd') CREATE_TIME

             FROM   T_PGC_VISUAL_DETAIL A

            WHERE   A.DELETE_FLAG = '0'

           UNION ALL

           SELECT   (    SELECT   id

                           FROM   T_BNS_PRJM_PROJECT m

                          WHERE   M.PROJECT_LEVEL = '0001'

                                  AND M.DELETE_FLAG = '0'

                     START WITH   m.id = PROJECT_ID

                     CONNECT BY   PRIOR m.SUPER_PROJECTID = m.id)

                       SUPER_ID,

                    TO_CHAR (CREATE_TIME, 'yyyy-mm-dd') CREATE_TIME

             FROM   T_PGC_NOVISUAL_DETAIL B

            WHERE   B.DELETE_FLAG = '0')

SELECT   PROJECT_CODE "输变电工程编码",

         PROJECT_NAME "输变电工程名称",

         TO_CHAR (START_DATE, 'yyyy-mm-dd') "实际开工日期",

         (SELECT   MIN (CREATE_TIME)

            FROM   DETAIL D1

           WHERE   D1.SUPER_ID = ID)

            "进度最早填报日期",

         (SELECT   MAX (CREATE_TIME)

            FROM   DETAIL D2

           WHERE   D2.SUPER_ID = ID)

            "进度最后更新日期"

  FROM   T_BNS_PRJM_PROJECT T

 WHERE       T.DELETE_FLAG = '0'

         AND T.PROJECT_LEVEL = '0001'

         AND (TO_CHAR (START_DATE, 'yyyy') = '2011' OR PROJ_STATUS = '4001')

JS

1.       Js中parseFloat()方法所产的精度不一致问题

 <script language="javascript">

var a = "0.11";

var b = "0.2801";

var c = "1.002";

var sum1 = parseFloat(a)+parseFloat(b)+parseFloat(c);

var sum2 = (parseFloat(a)+parseFloat(b)+parseFloat(c)).toFixed(4)

document.write("a+b+c="+sum1);

document.write("<br/>")

document.write("a+b+c="+sum2)

</script>

a,b,c相加本来为1.3921,但sum1得出的结果为:1.3921000000000001,显然不正确,通过toFixed(n)方法修正后(n是精确的小数点位数),得到正确结果。

例如:parseFloat(1.392143).toFixed(3)=1.392;

2.       2 .Jquery的Ajax同步调用方式

  var data="name=1";

  $.ajax({

                        type: "post",

                        url : "<%=basePath%>projectinfo/projAjax.action?method=getProjCodeState",

                        data:data,

                        async:false,

                        success: function(msg){

                            if(msg == "error"){    

                            new iMsgBox("项目编码["+code+"]已经存在,请重新输入!", "信息提示").showAlert();

                            flag = false;                       

                                                return false;

                                 }

                        }

            });       

3.       输入框只能填写数字

 onKeypress=check(value=value.replace(/[^\d]/g,'') );

4.       js参数乱码问题

 前台:var imType = encodeURI(encodeURI(imageType));

 后台: try {

                                               //对中文参数进行解码(前台js需进行两次编码或不编码)

                                               imageType = URLDecoder.decode(imageType, "UTF-8");

                      }catch (UnsupportedEncodingException e){

                                               e.printStackTrace();

           }

          

5.       js获取文件扩展名

   filename.substring(filename.lastIndexOf('.')+1, filename.length); 

6.       正则表达式 整数判断

                 var RegExps = function(){};

                     RegExps.isNumber =/^[0-9]*[1-9][0-9]*$/; //整数正则表达式

                                                RegExps.isNumber.test(val) //执行判断val

1.       frame对象的处理

 window.frames['showKgbstj_frame'].document.onreadystatechange=function(){

  if(this.readyState=='complete'){ //当frame里的文档加载完成的时候触发共有三种状态

     $(window.frames['showKgbstj_frame'].document.body).css("overflow","scroll");

  }

};

2.       也可以给frame加事件监听文档的加载

 window.frames[this.divName + "_frame"].attachEvent("onload",function(){

          alert("更新完成");

 });

3.       数据不能读可以写 readonly="readonly";

4.       frame可以添加事件:

var ifram = document.createElement('<iframe scrolling="yes"  marginHeight="10px" name="'+this.divName +'_frame"></iframe>');

         ifram.setAttribute("id",this.divName + "_frame");

         ifram.attachEvent("onload",function(){

            alert("123");  //只要frme页面加载一次就会执行一次

         });

5.       avascript设置一个变量,只允许提交一次[防止重复提交。

<script language="javascript">  

 var checkSubmit*** = false;   

 function checkSubmit() {     

 if (checkSubmit*** == true) {        

    return false;     

 }     

 checkSubmit*** = true;     

   return true;  

}

document.ondblclick = function docondblclick() {   

  window.event.returnValue = false;

 }

document.onclick = function doconclick() {

  if (checkSubmit***) {         window.event.returnValue = false;    

  }  

 }

 </script>

<html:form action="myAction.do" method="post" onsubmit="return checkSubmit();">

6.       如果刷新一个已经提交过的页面时系统总是会提示一个"重试或取消”的对话框.,

如果是一个普通的页面,好象也无所谓,有就有,大不了多点一下.但是当我们是在子窗体中刷新父窗体时,就显得有点多余了.所以就想把这个对话框给去了.找了很的办法.总结一下.

一, window.opener.location.reload() 如果改页面没提交过,这个方法好使.但是这个页面一旦提交过后,系统就会提示"重试或取消”的对话框.

二 window.opener.location = window.opener.location;这个方法肯定不提示,但是有个问题就是分页显示的时候,一刷新总是会显示第一页,这个也是理所当然,因为默认请求的就是第一页

三 window.opener.form1.submit();这个方法也不提示了,这个方法就是自动提交页面,绕开那个烦人提示的界面,但是如果被刷新的页面用到了比如gridwiew控件之类的,里面的数据可能不会随着刷新而发生变化,原因就是gridwiew的数据绑定是在某个控件的事件中进行,而页面是通过submit()提交的,不会触发该控件的事件.gridwiew中的数据也是通过读取viewstat中内容获得的,所以在刷新过程中数据不会发生变化.

四  window.opener.__doPostBack(" Control","");其中 Control 是控件ID,这个方法就是克服了三的缺点,不用.opener.form1.submit()这样直接提交.不仅让页面自动提交,而且还要想办法让控件的事件也执行.

   注意第四种方法也不是完美的,有的页面是没有这样的控件,有的页面有这个控件但也不能触发数据绑定事件.比如页面数据是随下框内容发生变化的那种页面.因为页面数据是否重新绑定取决于下拉框中内容是否发生变化.而打开子窗体前后时下拉框内容肯定没有变化,所以页面内容也不会变化.       

五,针对四,我们可以在父页面用点小技巧,比如在Page_Load中绑定数据时不加IsPostBack判断,但是不好就不好在点按钮时同样的数据会绑定两遍

7.       .FCKeditor:使用

 1)获取对象和值

var o = window.frames['MOVEMENT_CONTENT___Frame'].FCKeditorAPI.GetInstance("MOVEMENT_CONTENT");//获取的编辑值

alert(o.GetXHTML(true));

8.       URL乱码转化

后台:java.net.URLDecoder.decode(content, "UTF-8");

前台:       var reqUrl = encodeURI(basePath+saveUrl);

             reqUrl = encodeURI(reqUrl);

                  

为什么要连续两次调用 encodeURI(String) 方法呢?是因为 Java 中的

request.getParameter(String) 方法会进行一次 URI 的解码过程,

调用时内置的解码过程会导致乱码出现。而 URI 编码两次后, request.getParameter(String)

函数得到的是原信息 URI 编码一次的内容。接着用 java.net.URLDecoder.decode(String str,String codename) 方法,将已经编码的 URI 转换成原文

9.       html的form中定义submit按钮后无法用js提交

10.   输入文本框长度检查

<script language="javascript" type="text/javascript">

function DjCheckMaxlength(oInObj)

{

    var iMaxLen = parseInt(oInObj.getAttribute('maxlength'));

    var iCurLen = oInObj.value.length;

    if ( oInObj.getAttribute && iCurLen > iMaxLen )

    {

        oInObj.value = oInObj.value.substring(0, iMaxLen);

    }

} //@ END OF DjCheckMaxlength()

</script>

.....

<textarea maxlength="80" onkeyup="return DjCheckMaxlength(this);"></textarea>

.....

11.   页面刷新出现IE浏览器”重试””取消”的提示框

if(window.opener.pageForm){

             window.opener.pageForm.submit();

        }else{

                 window.opener.location.reload();      

        }

12.   JQuery实现复选框多选取值

1.全选按钮给定ID : checkAll  并添加事件   并排除id是 1047231的选项

$(function(){          //全选或者全不选

  $("#checkAll").click(function(){               $(":checkbox").not($("#1047231")).attr("checked",$(this).attr("checked"));

            });

   });

2.遍历选择:

        $(":checkbox:checked").each(function(){

                 var name = $(this).attr("name");

                 if(name!="allCheck"){

                   tids +=  $(this).attr("towerIdt")+",";

                 }

});

13.   JQuery下拉选取值

  

var sArray = ["基础工程","架线工程","杆塔组立","基础浇筑"]; //送电类型

var bArray = [""]; //变电类型

var sType = $("#session\\.SPEC_TYPE").val(); //获取类型 0011:变电   0010:送电

//获取下拉框的值

$(document).ready(function(){

 $("#TYPE").find("option").each(function(i){

  alert($(this).text());

  if(sType=='0011'){

   for(var i=0;i<sArray.length;i++){

     if($(this).text()==sArray[i]){

       $(this).remove();

    }

   }

  }else if(sType=='0010'){

    for(var j=0;j<bArray.length;j++){

    if($(this).text()==bArray[j]){

      $(this).remove();

     }

   }

  }

});

14.   TD文字多的时候换行CSS

<td style="white-space:normal;word-wrap:break-word;word-break:break-all;text-align:left">

15.   JS解析地址栏里的参数信息

var LocString=String(window.document.location.href);
    
    function getQueryStr(str){
        var rs = new RegExp("(^|)"+str+"=([^\&]*)(\&|$)","gi").exec(LocString), tmp;
    
        if(tmp=rs){
            return tmp[2];
        }
    
        // parameter cannot be found
        return "";
    }

    document.getElementById("user").value = getQueryStr("user");
    document.getElementById("password").value = getQueryStr("password");
    document.getElementById("sysno").value = getQueryStr("sysno");

16.   Frame使用,

.页面之间的简单跳转:
1-1.可以利用document.referrer属性与document.location.href属性来实现.
1-2.利用history对象来实现:

Js代码  

  1. //go back one page   
  2. history.go(-1);   
  3. //go forward one page   
  4. history.go(1);   
  5. //go forward two pages   
  6. history.go(2);   
  7. //go to nearest wrox.com page   
  8. history.go('wrox.com');   
  9. //go to nearest nczonline.net page   
  10. history.go('nczonline.net');   
  11. //go back one page   
  12. history.back();   
  13. //go forward one page   
  14. history.forward();  

   //go back one page

   history.go(-1);

   //go forward one page

   history.go(1);

   //go forward two pages

   history.go(2);

   //go to nearest wrox.com page

   history.go('wrox.com');

   //go to nearest nczonline.net page

   history.go('nczonline.net');

   //go back one page

   history.back();

   //go forward one page

   history.forward();


2.在top页面中定义的全局变量/函数,在frame中可以通过获取其它frame的window对象,然后执行访问。

window.frames 包含了页面的所有的iframe/frame;
frame[i] 都代表了对应页面的window对象。
top 对象用于指向浏览器中最外层的frame,也就是浏览器窗口。
即:

Js代码  

  1. alert(top === top.window)//true  

alert(top === top.window)//true


注意:如果采用var iframe=getElementById(iframeId)方法获取Iframe,得到的是一个HTML下的DOM对象,需要使用 iframe.contentWindow 才可以获取该iframe下的window对象。
在子frame中访问其它的frame的方式:

Js代码  

  1. var someFrame = top.frames[i];//或者通过frame的name属性访问   
  2. someFrame.varName //访问某个全局变量   
  3. someFrame.fn()//执行某个全局函数 .  

  var someFrame = top.frames[i];//或者通过frame的name属性访问

  someFrame.varName //访问某个全局变量

  someFrame.fn()//执行某个全局函数 .


3.全局变量为parent,用于访问frame的父级frame.

   最外层的frame,parent等于自己。如果仅存在一层frame嵌套,则top可以用parent替代。

4.另一个全局变量self,指向本身页面window。

alert(self == window)

5.判断页面是否存在iframe。
        alert(window.frames.length)

6.访问iframe所在页面的内容。
      var f = document.getElementById('bframe');
      var doc = f.contentDocument ? f.contentDocument : f.contentWindow.document;
      alert(doc.body.innerHTML)

7.iframe高度自适应的一种解决方法。

Js代码  

  1. function reinitIframe(){   
  2.     var iframe = document.getElementById("targetFrame");   
  3.     try{   
  4.         var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;    
  5.         var bHeight = doc.body.scrollHeight;   
  6.         var dHeight = doc.documentElement.scrollHeight;   
  7.         var height = Math.max(bHeight, dHeight);   
  8.         iframe.height =  height;   
  9.     }catch (ex){}   
  10. }   
  11. window.setInterval("reinitIframe()", 200);  

17.   Frame 调用其他frame的方法,点击别的页面隐藏最外层框架的弹出菜单。

Top.window是最外层的框架,使用top.windows.frames.length可以取到当前页面的包含的框架.

使用 windows.frame[框架ID].方法名(); 可以执行指定框架里的js方法。

Windows.opener();是打开当前窗口的父窗口值向。

  /**

     功能:点击别的页面隐藏当前面板

   */

    $(function(){

         setInterval(  //循环的原因是如果点击了新的菜单之前的事件就会丢失

           function(){

            try{

              window.frames['headerFrame'].document.body.onclick=function(){

              closeTreePanel();

            };

            top.window.frames['main'].document.body.onclick=function(){

               top.window.closeTreePanel();

            };

            allRightFrame();

          }catch(e){}

         }

         ,1000);

      });

     

    function allRightFrame(){

      var frms =  top.window.frames['main'].frames;

      if(frms!=null && frms!=undefined && frms.length>0){

         for(var i=0;i<frms.length;i++){

            frms[i].document.body.onclick=function(){

                 top.window.closeTreePanel();

            }; 

         }

      }

    }    

   /*

    功能:隐藏面板.

   */

   function closeTreePanel(){

      var stt = $("#tree_gcl").css('display');

      if(stt!='none'){

        $("#tree_gcl").hide();

        $("#tree_gc").width(20);

        addTipMsg();

      }

   }

18.   File控件 设置onchange事件,清空路径后会再次出发解决方法。

 function change(obj){

   alert("change...");

   var nf = obj.cloneNode(true);

   nf.value=''; // 设计新控件value为空

   obj.parentNode.replaceChild(nf, obj);

}

<input type="file" name="f1" id="file1" onchange="change(this)"/>

19.   Frame模拟单击事件

        refreshStr="getRootWindow().frames('main').frames('frameLeft').tonclick("+imagetempId+");";

20.   通过滤镜获取图片高度等.

样式.

 <style type="text/css"> 

#preview_wrapper{  

    display:inline-block;  

    width:300px;  

   height:300px;  

    background-color:#CCC;  

}  

#preview_fake{ /* 该对象用于在IE下显示预览图片 */  

   filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);

   visibility:hidden;   

}  

#preview_size_fake{ /* 该对象只用来在IE下获得图片的原始尺寸,无其它用途 */  

    filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);    

    visibility:hidden;  

}  

#preview{ /* 该对象用于在FF下显示预览图片 */  

    width:300px;  

    height:300px;  

}  

</style>

代码:

……

<div id="preview_fake">

<img id="preview_size_fake" name="preview_size_fake"/>

</div>

……

Js:代码

    var objPreview = document.getElementById('preview');  

    var objPreviewFake = document.getElementById('preview_fake');  

    var objPreviewSizeFake = document.getElementById('preview_size_fake');  

      

    if( sender.files &&  sender.files[0] ){  

        objPreview.style.display = 'block';  

        objPreview.style.width = 'auto';

        objPreview.style.height = 'auto';  

          

        // Firefox 因安全性问题已无法直接通过 input[file].value 获取完整的文件路径  

        objPreview.src = sender.files[0].getAsDataURL();      

    }else if( objPreviewFake.filters ){   

        // IE7,IE8 在设置本地图片地址为 img.src 时出现莫名其妙的后果  

        //(相同环境有时能显示,有时不显示),因此只能用滤镜来解决  

          

        // IE7, IE8因安全性问题已无法直接通过 input[file].value 获取完整的文件路径  

        sender.select();

        var imgSrc = document.selection.createRange().text;  

        objPreviewFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc; 

      // objPreviewFake.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image"//当需要预览的时候启用

       objPreviewSizeFake.filters.item('DXImageTransform.Microsoft.AlphaImageLoader').src = imgSrc;    

        setTimeout("", 1500);

       //autoSizePreview(objPreviewFake,objPreviewSizeFake.offsetWidth, objPreviewSizeFake.offsetHeight );//当需要预览的时候启用      

      var width = objPreviewSizeFake.offsetWidth;//获取图片的宽度;   

      var hight =  objPreviewSizeFake.offsetHeight;//获取图片的高度;

      $("#preview_size_fake").removeAttr("id"); //由于产生了预览的div来获取长度和宽度,获取之后马上删除的id,避免div占取控件

      $("img[name='preview_size_fake']").attr("id","preview_size_fake");//当删除id之后,用此方法将id再添加回来,以便下次使用。 

      var widthbz = 1200;//预定义的宽度标准(bz)

      var hightbz =1200; //预定义的高度标准(bz)

      if(width < widthbz ||hight < hightbz){ 

         new iMsgBox("你所上传照片的像素为"+width+"*"+hight+"<br/>"+"照片的像素不得低于1200*1600的像素标准", "错误提示","e").showAlert();

             $("input[name='images'][type='file']").unbind("change"); //移除第一个控件的事件

               var nf = sender.cloneNode(true);

                nf.value=""; // 设计新控件value为空

                sender.parentNode.replaceChild(nf, sender);

            

                $("input[name='images'][type='file']").bind("change",function(){ //给第一个控件bind事件

                  onUploadImgChange(this);      

               });

           return false;         

           

      }

 WEB服务器

1.       weblogic 编码问题:

一、  描述

项目编码一向做为系统设计级别难题,servlet2.4还未实现跨应用服务器编码支持,个应用服务器之间编码存在很大差异,因此导致部署不同应用服务器上会出现不同乱码问题。为了实现开发环境(tomcat)和生产环境(weblogic9.2)编码统一,特此实现WEB.XML配置FILTER过滤编码,经过多次测试,基本实现跨应用服务器编码统一。

二、  配置(工程编码:UTF-8)

1.个人编码规范

由于一些模块存在GET请求,在处理request.getParameter后出现乱码问题,一般个人实现方式为dwmc = new String(dwmc.getBytes("iso-8859-1"), "gb2312"); 此转码形式只适合一种应用服务器tomcat,为保证生产环境下weblogic能正常编码,需要:完全清理因个人书写而改变编码设置代码。并使用系统编码设置。

2.系统配置TOMCAT

POST:系统web.xml中使用filter进行过滤POST请求,并其自动对其编码转换为utf-8。实现代码为

request.setCharacterEncoding(encod);

GET:filter过滤无法为TOMCAT进行GET编码转换,因此需要修改TOMCAT/CONF/ server.xml文件,在项目Connector标签下增加URIEncoding="GB2312"属性。

3.系统配置WEBLOGIC9.2

POST与GET统一处理方式,使用FILTER进行处理。判断request.getContentType()空的时候则为GET 请求,处理如下:

request.setCharacterEncoding(encod_wlc);

response.setContentType("application/x-www-form-urlencoded;charset="+ encod_wlc);

response.setCharacterEncoding(encod_wlc);

encod_wlc:为配置参数,此处:GB2312

POST请求则正常转换成utf-8即可,

request.setCharacterEncoding(encod);

2.       2.Linux下字体乱码终极解决方案

 在windows下找到系统使用到的字体,这里以楷体举例

 到c盘的 windows文件夹的 Fonts文件夹里面存放了windows中用到的所有字体,具体路径C:\WINDOWS\Fonts

 找到楷体字体SIMKAI.TTF

http://www.finereport.com/forumimages/e1.png

2:将楷体字体拷贝到Linux下JRE下的\lib\fonts文件夹

  注意这个JRE必须是服务器用到的JDK下的JRE

例如服务器为tomcat

使用的 jdk是usr下 /java/jdk1.5.0_13

登陆到linux系统

Cd到usr/java/jdk1.5.0_13/jre/lib/fonts

  登陆到ftp 将之前准备好的楷体拷贝到当前目录下

ftp id

转到字体所在位置

get SIMKAL.TTF 到当前目录下

exit 退出ftp

3:重启服务器 解决linux下字体乱码问题

JSP

1.       EL取值

  ${requestScope.name}

  ${sessionScope.name}

  ${param.from}

2.       md5加密:

 --更新数据库密码 为MD5加密

 update t_pdc_user set password = func_md5(func_md5('1')||id);

 commit;

3.       标签

<s:iterator id=s value="list">

<s:if test={s.name=='ss' || s.id==#request.ids}>

</s:if>

</s:iterator>

<s:if test="userId==#request.thisuserid">

 ${userId}==<s:property value="#request.thisuserid"/>

</s:if>

  

4.       Struts标签执行静态类的方法

<s:if test="#loopTowers.tower.downBase!=null&&#loopTowers.tower.downBase!=0">

<s:property value="%{@com.hhwy.iepip.progress.utils.Arith                                          @format(#loopTowers.tower.downBase)}"/>

</s:if>

EXT.

视频下载:  http://www.uspcat.com/forum.php?mod=forumdisplay&fid=53

更多相关推荐:
小学校本课程开发总结

(20xx-20xx年度)洪濑第二小学校本课程总结课程建设是学校教学基本建设的重要内容之一。加强课程建设是有效落实教学计划,提高教学水平和人才培养质量的重要保证。因此,我校结合实际情况对校本课程进行了研究与开发…

软件工程实训 期刊管理系统 项目开发总结报告(PDSR)

项目开发总结报告(PDSR)目录项目开发总结报告(PDSR)...........................................................................…

物理校本课程开发总结

三、《》校本课程总结近一年来,我校开展了《》校本课程的开发。我们组织全体教师认真学习并作周密部署,使这一活动的开展做到学校有方案、年级有计划、学生有保证,在思想上重视,在认识上提高,在做法上统一。通过收集、整理…

校本课程开发总结

校本课程不仅仅是新课程改革中一门新兴的课程,而是一种教育观,更是一种学习观,这种观念对各门学科课改的推进,对素质教育的促动有着深远影响。我校的校本课程在不断的调整中日趋完善,以便能更好的展示“爱心建构民主教育,…

项目开发总结报告

10、项目开发总结10.1引言10.1.1编写目的银行ATM自动取款机系统的开发已经基本完成。写此项目开发总结报告,以方便我们在以后的项目开发中来更好的实施项目的订制开发;让我们在今后的项目开发中有更多的有据的…

项目开发总结报告

I引言1.1编写目的说明编写这份项目开发总结报告的目的,指出预期的阅读范围。1.2背景说明:a.本项目的名称和所开发出来的软件系统的名称;b.此软件的任务提出者、开发者、用户及安装此软件的计算中心。I.3定义列…

项目开发总结报告(PDSR)4Y

项目开发总结报告(PDSR)说明:项目开发总结报告的编制是为了总结本项目开发工作的经验,说明实际取得的开发结果以及对整个开发工作的各个方面的评价。1引言1.1标识本条应包含本文档适用的系统和软件的完整标识,(若…

Android开发总结

出来工作半年多了没啥好交代的就说说自己半年来的Android开发经历1IDE这半年来从Eclipse到AndroidStudio经历了两个IDE在这里做一下简单的评价如果真要说AndroidStudio是基本上...

Web开发经验总结

1不要认为Struts已经过时了也不要盲目的去追随JSF以及更新的MVC框架在目前Struts仍旧是最为优秀的MVC框架尤其是后来与SpringHibernate或者Ibatis的结合使得Struts的应用得到...

网上书城项目开发总结报告

目录1引言111编写目的112背景113定义114参考资料12实际开发结果121产品122主要功能和性能323基本流程324进度425费用43开发工作评价531对生产效率的评价532对产品质量的评价533对技术...

项目开发总结报告

第七届齐鲁大学生软件设计大赛智我团队手机游戏长征手机游戏开发长征项目开发总结报告团队名称智我团队所属学校山东海天软件工程专修学院团队成员李运强邹乐华路丛磊刘鸿媛宋慧指导老师岳茂顺发扬长征精神强我中华1第七届齐鲁...

项目开发总结报告

数字音频信息系统AudioMIS项目开发总结报告作者完成日期签收人签收日期修改情况记录目录项目开发总结报告I1引言111编写目的112背景113定义114参考资料12实际开发结果221产品222主要功能和性能3...

开发总结(145篇)