散个分,顺带讨点技术

kevinliuu 2006-07-28 02:38:14
也算个技术贴吧

大家伙贴点web开发中常用到的技术吧,随便什么都行。java, jsp, javascript,servlet.....Ajax(这个偶没用过).....or some other techs.....也算帮助一些新人吧


最近发现java版冷清了不少,trumplet回家了,狂奔java大地几个活跃分子也因为倒分把号都给封了,觉得这有点过于严厉了。。。。


Only4Love来捧场啊,还有其他的朋友们,5个角的结贴时会多给一些分
...全文
816 59 打赏 收藏 转发到动态 举报
写回复
用AI写文章
59 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongganwoniu 2006-07-29
  • 打赏
  • 举报
回复
新人,不知道分有什么用啊?
appleyy 2006-07-29
  • 打赏
  • 举报
回复
学习~~~~
接分~~~^^
wangpeng8675 2006-07-29
  • 打赏
  • 举报
回复
学习struts中,呵呵,用jsp+javaBean做过不少东西了.
killme2008 2006-07-29
  • 打赏
  • 举报
回复
再推荐几个常用站点:
www.serverside.com
www.javaresearch.org
www.javaeye.com
www.redsaga.com/mambo/
www-128.ibm.com/developerworks/cn/
www.springside.org.cn/
www.gotapi.com/
mingxuan3000 2006-07-29
  • 打赏
  • 举报
回复
up
mx1029 2006-07-29
  • 打赏
  • 举报
回复
自己收藏的:
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。
  问题一:我声明了什么!
  String s = "Hello world!";

  许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。
  这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:
  String string = s;
  我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象。

   问题二:"=="和equals方法究竟有什么区别?

  ==操作符专门用来比较变量的值是否相等。比较好理解的一点是:
  int a=10;
  int b=10;
  则a==b将是true。
  但不好理解的地方是:
  String a=new String("foo");
  String b=new String("foo");
  则a==b将返回false。

  根据前一帖说过,对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身。a和b都使用了new操作符,意味着将在内存中产生两个内容为"foo"的字符串,既然是“两个”,它们自然位于不同的内存地址。a和b的值其实是两个不同的内存地址的值,所以使用"=="操作符,结果会是false。诚然,a和b所指的对象,它们的内容都是"foo",应该是“相等”,但是==操作符并不涉及到对象内容的比较。
  对象内容的比较,正是equals方法做的事。
  看一下Object对象的equals方法是如何实现的:
  boolean equals(Object o){
  return this==o;
  }
  Object对象默认使用了==操作符。所以如果你自创的类没有覆盖equals方法,那你的类使用equals和使用==会得到同样的结果。同样也可以看出,Object的equals方法没有达到equals方法应该达到的目标:比较两个对象内容是否相等。因为答案应该由类的创建者决定,所以Object把这个任务留给了类的创建者。
  看一下一个极端的类:
  Class Monster{
  private String content;
  ...
  boolean equals(Object another){ return true;}
  }
  我覆盖了equals方法。这个实现会导致无论Monster实例内容如何,它们之间的比较永远返回true。
  所以当你是用equals方法判断对象的内容是否相等,请不要想当然。因为可能你认为相等,而这个类的作者不这样认为,而类的equals方法的实现是由他掌握的。如果你需要使用equals方法,或者使用任何基于散列码的集合(HashSet,HashMap,HashTable),请察看一下java doc以确认这个类的equals逻辑是如何实现的。
  问题三:String到底变了没有?
  没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。请看下列代码:
  String s = "Hello";
  s = s + " world!";
  s所指向的对象是否改变了呢?从本系列第一篇的结论很容易导出这个结论。我们来看看发生了什么事情。在这段代码中,s原先指向一个String对象,内容是"Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s不指向原来那个对象了,而指向了另一个String对象,内容为"Hello world!",原来那个对象还存在于内存之中,只是s这个引用变量不再指向它了。
  通过上面的说明,我们很容易导出另一个结论,如果经常对字符串进行各种各样的修改,或者说,不可预见的修改,那么使用String来代表字符串的话会引起很大的内存开销。因为String对象建立之后不能再改变,所以对于每一个不同的字符串,都需要一个String对象来表示。这时,应该考虑使用StringBuffer类,它允许修改,而不是每个不同的字符串都要生成一个新的对象。并且,这两种类的对象转换十分容易。
  同时,我们还可以知道,如果要使用内容相同的字符串,不必每次都new一个String。例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做:
  public class Demo {
  private String s;
  ...
  public Demo {
  s = "Initial Value";
  }
  ...
  }

  而非
  s = new String("Initial Value");
  后者每次都会调用构造器,生成新对象,性能低下且内存开销大,并且没有意义,因为String对象不可改变,所以对于内容相同的字符串,只要一个String对象来表示就可以了。也就说,多次调用上面的构造器创建多个对象,他们的String类型属性s都指向同一个对象。
  上面的结论还基于这样一个事实:对于字符串常量,如果内容相同,Java认为它们代表同一个String对象。而用关键字new调用构造器,总是会创建一个新的对象,无论内容是否相同。

  至于为什么要把String类设计成不可变类,是它的用途决定的。其实不只String,很多Java标准类库中的类都是不可变的。在开发一个系统的时候,我们有时候也需要设计不可变类,来传递一组相关的值,这也是面向对象思想的体现。不可变类有一些优点,比如因为它的对象是只读的,所以多线程并发访问也不会有任何问题。当然也有一些缺点,比如每个不同的状态都要一个对象来代表,可能会造成性能上的问题。所以Java标准类库还提供了一个可变版本,即StringBuffer。
jnch 2006-07-29
  • 打赏
  • 举报
回复
一个角的顶你一个
liuxinhongxin 2006-07-29
  • 打赏
  • 举报
回复
下一个jspSmartUpload包,就搞定上传和下载了,将里边的class文件放到你的tomcat下WEB_INF里的class目录下就行!上传文件程序:upload.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.text.SimpleDateFormat,java.util.*,java.io.*,com.jspsmart.upload.*" errorPage="" %>
<jsp:useBean id="mySmartUpload" scope="page" class="com.jspsmart.upload.SmartUpload" />
mySmartUpload.initialize(pageContext);
mySmartUpload.setMaxFileSize(10000000);
mySmartUpload.setTotalMaxFileSize(30000000);
mySmartUpload.setDeniedFilesList("dll,,");
// Upload
mySmartUpload.upload();

// Select each file
for (int i=0;i<mySmartUpload.getFiles().getCount();i++){

// Retreive the current file
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);

// Save it only if this file exists
if (!myFile.isMissing()) {

// Save the files with its original names in a virtual path of the web server
myFile.saveAs("/upload/" + myFile.getFileName());
// myFile.saveAs("/upload/" + myFile.getFileName(), mySmartUpload.SAVE_VIRTUAL);

// sample with a physical path
// myFile.saveAs("c:\\temp\\" + myFile.getFileName(), mySmartUpload.SAVE_PHYSICAL);

// Display the properties of the current file
tt=tt+myFile.getFileName()+"&";
}

}
下载文件程序:download.jsp
<%@ page import="com.jspsmart.upload.*" contentType="text/html; charset=gb2312"%><%@ include file="inc/trans1.inc"%><%
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
String str=trans(request.getParameter("str"));
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件
su.downloadFile("/upload/"+str);
%>
再写一个上传页面:1.html
<HTML>
<BODY BGCOLOR="white">

<H1>jspSmartUpload : Sample 2</H1>
<HR>

<FORM METHOD="POST" ACTION="download.jsp" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>

</BODY>
</HTML>
这是最简单的组件!
cdwei80 2006-07-29
  • 打赏
  • 举报
回复
java, jsp, javascript,servlet.....Ajax
STRUTS, SPRING, HIBERBATE, IBATIS
FASTM

接点分了
jackson416 2006-07-29
  • 打赏
  • 举报
回复
我没有五角星的....

但求楼主给多点分.
success_dream 2006-07-28
  • 打赏
  • 举报
回复
问下楼主,你升级到两个星星花了多久时间啊???
wuyg719 2006-07-28
  • 打赏
  • 举报
回复
iText, jfreechart, struts, jsf

我是五个角的,请多多帮忙
fffddd 2006-07-28
  • 打赏
  • 举报
回复
JF
  • 打赏
  • 举报
回复
JF

程序的东西太多了 主攻JAVA

我是用到什么学什么的人

不是流行什么学什么的人

^_^
KevinXie 2006-07-28
  • 打赏
  • 举报
回复
JF struts
削死壹狼 2006-07-28
  • 打赏
  • 举报
回复
俺只有四个角 楼主的条件不能满足啦 放个简单的东东 能不能多来点哈 嘿嘿

在jsp里实现从数据库里读出数据后,类似排成一个矩阵排列。一排显示M个,显示N排。

大概写一下:
<table>
<%
String sql;
ResultSet rs;

sql="select * form table";
rs=stmt.executeQuery(sql);
if(!rs.last()){
out.println("没数据!");
}else{
rs.beforeFirst();
while(!rs.isAfterLast()&&rs.next()){
%>
<tr>
<%
for(int i=0;i<4;i++){
if(!rs.isAfterLast()){
%>
<td><%=rs.getString("name")%></td>
<%
rs.next();
}
}
</tr>
<%
rs.prevous();
}
}
rs.close();
%>
</table>
没严格按格式写,一些简单部分我略过啦,当是给大家做个参考。
阳阳 2006-07-28
  • 打赏
  • 举报
回复
<SCRIPT>
//从服务器上获取初始时间
var currentDate = new Date(<%=new java.util.Date().getTime()%>);
function run()
{
currentDate.setSeconds(currentDate.getSeconds()+1);
document.getElementById("dt").innerHTML = currentDate.toLocaleString();

}
window.setInterval("run();", 1000);
</SCRIPT>
<div id="dt">time</div>
网上看到的,不错。贴在这共享
kevinliuu 2006-07-28
  • 打赏
  • 举报
回复
very good

carry on~~~~
fangjj 2006-07-28
  • 打赏
  • 举报
回复
Iterator用法
就是说用这个东西你能够把集合中的对象一个一个地拿出来。
list nodes= new ArrayLIst();
Iterator it = nodes.iterator();
while(it.hasNext())
{
Object obj = (Object)it.next();
}
killme2008 2006-07-28
  • 打赏
  • 举报
回复
维护公司一个项目,使用WSAD开发,与oracle交互的一个信息查询系统,开发的时候就遇到警告:

7d24cad5 SharedPool I J2CA0086W: 在本地事务包含边界中使用的资源 jdbc/dbName 的可分享连接 MCWrapper id 9024ad6 Managed connection com.ibm.ws.rsadapter.spi.WSRdbManagedConnectionImpl@28558af8 State:STATE_TRAN_WRAPPER_INUSE


一直没引起重视,以为是正常的。我更新了一个模块传上去不久,用户反应过来说服务器越来越慢,查看了控制台和日志,唯一不正常的还是这个警告,搜索下资料,得到答案:

当日志中出现 J2CA0086W 时,要检查程序中管理数据库连接的方法。
Websphere中最好的办法是在已经取得一个连接的情况下,在没有关闭它之前不要取第二个连接,也就是要顺序处理连接,否则的话,websphere的本地事务处理规则会把它们放到shared pool中,连接数量有限的情况下会导致系统中大量的线程等待连接,造成性能急剧下降。

所以:websphere中的进行数据库编程,一定要注意数据库获取连接的问题,因为websphere有自己的本地事务处理规则。
加载更多回复(39)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧