posts - 5,comments - 0,trackbacks - 0

1. 问:在 JAVA JSP 中要调用一个 LINUX 上的脚本程序 , WINDOWS 上的脚本程序 , 该怎么写?

答: System.getRuntime().exec("bash < aaa.sh");

2. 问: java 中用什么表示双引号

答: "\""

3. 问:如何在 JSP 程序里另起一个线程?

答:

JSP 本身就是独立线程运行而不象 CGI 都是独立进程 .

一般 :

Thread t = new Thread(" 你的对象 \\");

t.start(); 就可以了 .

要求你这个对象要实现 runnable 接口或继承 thread.

4. 问: jsp 如何获得客户端的 IP 地址?

答:

request.getRemoteAddr()

看看各个 webserver API 文档说明,一般都有自带的, resin tomcat 都有

5. 问:程序终止与输出终止

答:

程序中止 :return;

输出中止 :out.close(); 这一句相当于 ASP response.end

6. 问: jsp 中如何得到上页的 URL

答: request.getHeader("referer");

7. 问:提交网页的网页过期功能是怎么做的?

答: response.setHader("Expires","0");

8. 问:在 JSP 网页中如何知道自已打开的页面的名称

答:

request.getRequestURI() ;// 文件名

request.getRequestURL() ;// 全部URL

9. 问:提交表单后验证没有通过,返回提交页面,如何使原提交页面中的数据保留?

答: javascript go(-1) 可以把上页的表单内容重新显示出来 , password 域没有

10. 问:如何取得 http 的头信息?

答: request.getHader(headerName);

11. 问: && & 的区别?

答: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与( and )。

12. 问:将 * 以正弦曲线的一个周期显示出来

答:

public void paint(Graphics g)

{

for(int i=0;i<200;i++)

g.drawString("*",i,(int)(Math.sin(i)*20)+50);

}

}

13. 问:浮点数相乘后结果不精确如 100.0 * 0.6 结果等于 60.0004

答:

这不叫错误 ,float double 是这样实现的 . 如果要精确计算, java 提供了一个 strictfp, 它的计算遵循 IEEE 754 标准 . 而普通的 float double 是由地平台浮点格式或硬件提供的额外精度或表示范围。

14. 问:如何获得当前用的 cursors 的位置?

答:

int row = rs.getRow() 就是当前指针行数 , 还有 isFrist();isBeforeFist();isLast();isAfterLast(); 可以测试是不是在方法名所说的位置

15. 问:表单成功提交了,点后退显示网页过期

答:

<head></head> 里面加以下代码

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">

<META HTTP-EQUIV="Expires" CONTENT="0">

或者在表单页中加上

<%

response.setHeader("Pragma","no-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires",0);

%>

16. 问:接口的简单理解

答:接口为了规范 , 比如我在接口中定义了一个方法 :

getData()

这是用来从不同的数据库中取数据的 , 就是 JDBC 的实现对于用户 , 我不要知道每种数据库是如何做的 , 但我知道如何它们要实现这个接口就一定有这个方法可以供我调用 . 这样 SUN 就把这个接口给各个数据库开发商 , 让他们自己实现 . 但为什么不用继承而用接口哩 , 因为继承只能从一个你类继承 , 而接口可以实现多个 , 就是说我实现的子类有多个规定好的接口中的功能 . 这只是简单的理解 , 等你深入理解抽象的时候就知道抽象到抽象类时为什么还要再抽象到接口 .

 

17. 问:怎样编写一个取消按钮(怎样返回上一个页面,象工具栏的后退按钮)?

答:

javascript 把每次浏览过的 location 都压到了一个栈中 , 这个栈就是 history, 然后你如果要回到第几个页面它就做几次 POP 操作 , 把最后 POP 出来的那个 LOCATION 给你 . 这就是 JAVASCRIPT 在实现 history.go(-x) 的原理 .

 

18. 问:什么是回调?

答:

简单说 , 回调用不是让你去监听谁做完了什么事 , 而是谁做完了什么事就报告给你 . 这就是回调用的思想 . 例子太多了 ,AWT 的事件 ,SWING 事件模型都是这样有 . 还有多线程中 , 如果要控制线程数 , 不能总是查询每个线程是否结束 , 要在每个线程结束时让线程自己告诉主线程我结束了 , 你可以开新的线程了 .

19. 问:简要介绍一下 compareTo 方法

答:

compareTo 方法是 Comparable 接口必需实现的方法 , 只要实现 Comparable 就可以用 Arrays.srot() 排序就象实现 Runnable 接口的 run 就能 Thread() 一样 .

20. 问:如何可以从别的 Web 服务器检索页 , 然后把检索到的网页的 HTML 代码储存在一个变量中返回过来

答:这是一个简单的 WEB ROBOT 实现 , URL 类实现从网页中抓内容 , 然后自己写一个分析程序从中找出新的 URL, 不断递归下去就行了 .

21. 问: applet 中如何获得键盘的输入

答: application System.in 是当前系统的标准输入 ,applet 因为安全的原因不可能读取当前系统 ( 客户端 ) 的标准输入 , 只能从它的 ROOT 组件的事件中 , 比如键盘事件中取得键值 .

22. 问:怎样计算代码执行所花费的时间?

答:

代码开始取时间,结束后取时间,相减

long t1 = System.currentTimeMillis();

///////////////// your code

long t2 = System.currentTimeMillis() ;

long time = t2-t1;

23. 问:如何获在程序中获得一个文件的 ContentType

答:

URL u = new URL("file:///aaa.txt");

URLConnection uc = u.openConnection();

String s = uc.getContentType();

24. 问:连接池的使用是建立很多连接池,还是一个连接池里用多个连接?

答:

只有在对象源不同的情况下才会发生多个池化 , 如果你只连一结一个数据源 , 永远不要用多个连结池 . 所以连结池的初始化一定要做成静态的 , 而且应该在构造对象之前 , 也就是只有在类 LOAD 的时候 , 别的时候不应该有任何生成新的连结池的时候。

25. 问: JavaMail 要怎么安装?

答:下载两个包,一个是 javamail 包,另一个是 jaf 包。下载完直接把这两个包不解压加到 CLASSPATH

26. 问:怎样把地址栏里的地址锁定?

答:把你的服务器的可访问目录索引选项关闭就行了 , 任何服务器都有一个 conf 文件 , 里面都有这个选项。

27. 问:在 JAVA 中怎么取得环境变量啊。比如: TEMP = C \TEMP

答: String sss = System.getProperty(key)

28. 问:怎样实现四舍五入,保留小数点后两位小数?

import java.text.*;

...

NumberFormat nf=NumberFormat.getNumberInstance();

nf.setMaximumFractionDigits(2);

nf.setMinimumFractionDigits(2);

nf.format(numb);

29. 问: Applet form 如何通信?

答:

取得的参数传到 param 里面

<%

String xxx = request.getParameter("xxx");

%>

<applet>

<param value="<%=xxx%>">

</applet>

30. 问: java-plug-in 是什么?

答: Java Runtime Environment 的插件。用来运行 java 程序。不需要什么特别的设置。等于你的机器里面有了 jvm

31. 问: WEB 上面怎么样连接上一个 EXCEL 表格?

答:

定义页面得 contentType="application/vnd.ms-excel" ,让页面以 excel 得形式打开。同样也可以以 word 得形式打开: application/msword

32. 问:怎样才能避免 textarea 字数限制?

答:是使用了 FORM 的默认方法的缘故 , 如果什么也不写默认是 GET 改用 Post 即可,在 Form 中定义 mothod="post"

33. 问:为什么加了 <%@page contentType="text/html;charset=gb2312" %> 插入数据库的中文,依然是乱码?

答:

这要从环境看 , 能显示说明你的 JSP 引擎没有问题 , 但写入数据库时你的 JDBC 能不能处理中文 , 同一公司不同版本的 JDBC 都有支持中文和不支持中文的情况 ,RESIN 自带的 MYSQL JDBC 就不支持 ,MM 的就支持 , 还有你的数据库类型是否支持中文 ?CHAR 的一般支持 , 但是否用 binary 存储双字节码

34. 问:对于 JFrame hide() show() setVisibel() 有什么区别吗?

答:

setVisible() Component 继承过来,而 hide(),show() Window 里面继承过来。

Makes the Window visible. If the Window and/or its owner are not yet displa yable, both are made displayable. The Window will be validated prior to being made visible. If t he Window is already visible, this will bring the Window to the front. 区别在这。

36. 问: sendRedirect 为什么不可以转到 mms 协议的地址的? response.sendRedirect("mms://missiah.adsldns.org:9394");

答: java 平台目前实现的 protocol 中并没有 mms, 你可以取系统属性 java.protocol.handler.pkgs 看看它的值中有没有 mms, 所以如果要想重定向到 mms://host 这样和 URL, 只有生成客户端的 JAVASCRIPT 让它来重定向

37. 问: JTable 中怎样定义各个 Columns Width 和怎样设置表格的内容靠做靠右或居中?

答:

TableColumn tc = table.getColumn("Name");// 取得列名为 "Name" 的列 Handle

int currentWidth = tc.getPreferredWidth(); // 取得该列当前的宽度

tc.setPreferredWidth(200); // 设置当前列宽

tc.setMaxWidth(200); // 设置该列最大宽度

tc.setMinWidth(50); // 设置该列最小宽度

38. 问:批操作是否可用于 select 语句?

答:批操作其实是指成批理更新的操作 , 绝对不可能用于 select 操作。

39. 问:为什么 jsp 路径太深文件名太长就无法读取文件?

答: path 不能超过 255 长度 , 不然就找不到了 . 这是作业系统的事。

40. 问:如何让页面不保留缓存?

<%

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires", 0);

%>

41. 我的 applet code 中用到 jbutton 时就出错是否由于 ie 不支持 swing package 请问应怎么办

JBUTTON SWING 基本包啊 , 只要把 jdk/jre/lib/rt.jar 放在 classpath 就行了 . 不要加载任何别的库。

42. 问:不知道 java 是否支持 midi 格式,如果支持,应该怎么把 wave 格式转换成 midi 格式?

答:目前还不行 , 可以看一下 JMF 三个版中对 MIDI 的格式支持是 read only, WAVE read/write,MIDI 只能播放 , 不能生成。

43. 问:在 jsp 里面防止用户直接输入 url 进去页面,应该怎么做呢?

答:

一是从 web 服务器控制 , 对某一目录的所有访问要通过验证 .

二是在要访问的页面中加入控制 . 这个一般用 session, 也可以用请求状态码实现

44. 问:

例如后台有一计算应用程序(此程序运算起来很慢,可持续几分钟到几小时,这不管,主要是能激活它),客户机讲任务提交后,服务器对任务进行检测无误后将向服务器后台程序发送信息,并将其激活。要求如下:

1 )首先将后台程序激活,让它执行此任务(比如,前台将计算的 C 代码提交上后,后台程序程序能马上调用,并将其运行)

2 )要在前台 JSP 页面中显示运行过程信息(由于运行时间长,希望让客户看到运行过程中产生的信息)如何完成?

答:

活是可以的 , 运行一个 shell 让它去运行后台就行 , 但不可能取出运行信息 , 因为 HTTP 的超时限制不可能永远等你后台运行的 , 而且信息如果要动态实时推出来就得用 SERVER PUSH 技术。

45. 问:数据库是 datetime ,插入当前时间到数据库?

答:

java.sql.Date sqlDate = new java.sql.Date();

PreparedStatement pstmt = conn.prepareStatement("insert into foo(time) values(?)");

pstmt.setDate(1,sqlDate);

pstmt.executeUpdate();

46. 问:怎样去掉字符串前后的空格。

答: String.trim()

47. 问: session 怎样存取 int 类型的变量?

答:

session.setAttribute("int", i+"");

int i = Integer.parseInt(session.getAttribute("int"));

48. 问:在 javascript 中如何使输出的 float 类型的数据保留两位小数。

答: Math.round(aaaaa*100)/100

49. 问:在 bean 种如何调用 session

答:

你可把 session 对象作为一个参数传给 bean

BEAN 中定义 HttpServletRequest request;HttpSession session;

然后

session = request.getSession(false);

false 为如果 session 为空 , 不建立新的 session

session 作为参数传入 . 其实只要将 request 传入就可以

50. 问:如何把 txt word 文件按原格式显示在 jsp 页面或 servlet 上?

答:

其实一个非常简单的解决方法就是在服务器的 MIME 中指点定 TEXT WORD 的解释方式 , 然后用 JSP SERVLET 生成它就行了 , 客户端就会自动调用相应程序打开你的文档。

如果是希望按原格式的显示在页面上,而不是调用其他程序打开那么你可以试试用 WEBDEV 协议 , 可以说这是 MS 的一个亮点 . 它是在 WEB 方式下打开文档 , 和共享一样 . 完全符合的要求。

51. 问: object clone 方法为什么不能直接调用?

答:

这个方法在 object 中是 protected

为什么要把这个方法定义为 protected, 这是一个折中 , 它的目的是想知道你这个方法在 Object 里只是一个标记 , 而不是一个实现 , 比如

public class Object

{

.............

protected Object clone()

{}

}

所以直接继承的 clone() 方法并不能做任何时 , 你要使用这个方法就要重载这个方法并放宽访问权限为 public, 或实现 cloneable 接口 . 但它没法这样告诉你它没有真的实现 , 只好用 protected 方法加以警示

52. 问:一个页面中如何刷新另外一个页面?

答:

要求是这些面页必须有关联 , 一是它们都有一个共同的顶层帧 , 也就是说是一个帧内的分级页面 , 当然可以是任意级 , 帧内再分帧也可以 , 另一个可能是当前窗口弹出的窗口 , 如果没有联系 , 那就不可能用一个页面刷新另一个页面 . 帧内只要一级一级引用就行了 . 比如在左帧中一个页面中写 top.right.location.reload(); 那么名为 right 的右帧中的页面就会刷新 . 弹出的一样 , open 时的名称刷新子窗口 , 子窗口用 opener 刷新主窗口

53. 问:如何在 jsp 中怎么样向客户端写 cookies

答:

Cookie coo = new Cookie(name, value);

HttpServletResponse.addCookie(name);

54. 问:为什么 jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 得到的字体宽度不一样?

答:就是说如果不是指定为等宽字体 , 每个字体的宽度都是不一样的 . 因此 JAVA 中用 FontMetrics 类来取字符宽度。

55. 问: String kk=application/octet-stream; name="G:/SMBCrack.exe"; 如何得到 SMBCrack.exe

答:

这应该是解析上传时候的二进制流得到的这一行里面格式是固定的,取到 name=" 后面的字符串,然后把 "; 去掉。然后取最后一个 / 后面的所有字符组成一个新字符串就行了。

56. 问:如何传值并不刷新页面?

答:

弹出一个页面进行值的选择或者输入, ok 后使用将值传给原窗口,使用 javascript 关闭打开的窗口即可:

window.close();opener.focus();

57. 问:有一个字符串: "EF0C114EA4" ,如何变为 a[0] = 0xEF a[1] = 0x0C a[2] = 0x11 a[3] = 0x4E a[4] = 0xA4

答:

String str="EF0C114EA4F";

out.print(str+"<br>");

int l=str.length()/2+str.length()%2,j=0,k=0;

String[] a=new String[l];

for(int i=0;i<l;i++){

if(str.length()-j==1)

k=str.length();

else

k=j+2;

a[i]="0x"+str.substring(j,k);

out.print("a["+Integer.toString(i)+"]="+a[i]+"<br>");

j+=2;

}

58. 问:怎样将一个 int 转换成一个四字节的 byte 数组?

答:

int x = 1234567;

byte[] b = new byte[4];

for(int i=0;i<b.length;i++)

{

b[i] = (x >>( i*8)) & 0xFF;

}

59. 问: indexOf() 的使用需要注意什么?

答:参数是指从第几位( 1 2 3 ... )开始搜索,而返回值是指搜索到的位置( 0 1 2 3....... )注意是从零算起的。

60. 问:在 Java 应用程序中如何动态的添加一个按钮?

答:

这里涉及一个组件重绘的问题 , 组件要先于 panel 被显示之处存在 , 如果一 panel 已经显示了 , 那么加在上面你能看到吗 ? 但如果在同一个 panel , 先有 button A, 假如按下它加了 butt on B, 这时你如果使整个 panel 重给 , 那么 A 本身要重绘 , 它的事件监听就没有了 , 当然也就加不成 B , 所以如果要先有另一个 panel, 当按 A 时把 B 加在这个 panel 上并重绘这个 paenl, 其实更好的方法是先把 B 加在 panel , 同一个也行 . 把它 setVisiable(flase), A 时设为 true

61. 问: book mybook=new book(bookid);book servlet, 出错。

答:

book servlet, book mybook=new book(bookid);

说明自己实现了 servlet 容器 ? 不然 ,servlet 能让你自己去调用 ? servlet 如果调用其实和 EJB 1% 的区别都没有 , 它们都是自己继承或实现一些接口 , 在这些父类或接口中实现了如果和容器 \" 打交道 " 的方法 , 然后容器调用这些方法来管理它 , 让它生成实例 , 池化 , 钝化 , 销毁 , 再生等 . 所以这样写是错误的。

62. 问:给定一个字符串 5*(5+9)/7 怎样计算出结果?

答:

可有两种方法

1 。用堆栈完成

2 。最简单的方法,不用编程,如果有任何一个数据库的化,用 select (5*(5+9)/7) from oneTable

63. 问:如何实现递交表单内容的加密解密?

答:

如果你用 IE 目前只能用 SSL 协议 , 这一层不要你考虑 , 否则只你用你自己的工具加密传输 , 接收后再解密友 , 至于如何加解 , 如果要和公认的系统结合 , 就用通用的 MD5,RAS 等公开算法 , 如果你只是自己传自己解 , 你随便按你的想法把数据加上一些东西 , 取回来按规则减掉这些东西 , 我敢保证除你自己没有任何人能知道解密方法 .

64. 问:为什么 Integer.parseInt("+1"); 会抛出 NumberFormatException 的异常?

答:因为 "+" 运行算在 JAVA 中被重载 . 系统无法确定你用的是算术加还是字符 +

这一点可以在 JAVASCRIPT 中更好地理解 :

<form name="t"><input name=s value=1234></form>

var a = document.t.s.value+1;

这时 a = 12345, 因为 document.t.s.value 作为字符串 . var a = document.t.s.value-1;

a 就是 1233, 因为系统知道 - 运算肯定是算术运行 . 所以把 document.t.s.value 转换成数字 .

65. 问: hashCode() 有什么用为什么有时候需要覆盖 Object 里的 hashcode() 方法?

答:这就是这个对象的身份证啊 , 要不如何区分哪个对象。

66. 问:怎样在 tomcat 中实现一个定时执行的东东?

答:

在应用程序启动时自动运行。 servlet2.3 中定义了 ServletListener, 监听 Servlet Con text 的启动或则关闭(可在配置文件中配置),启动时触发一个守护程序的运行 ( 可以实现 java.util.Timer 或则 javax.swing.Timer).

67. 问:程序可以输出自己吗?

答:孔德悖论这个非常有名的法则 . 就是说任何程序都不可能输出自己 .

68. 问:能够把字符转化成 ASCII 码?比如将 A 转化成 65

答:

int a='A';

out.println(a);

69. 问:如何区分输入的文字中的全角与半角?

答:由于不能分辨出全角和半角字符的值有什么规律 , 只好把全角符号牧举出来了 .

70. 问:用户注册后的自动发信程序该怎么做?

答:

这种发信程序不考虑性能 , 因为不可能 1 秒就有一个人注册 , 我们说的考虑性能的发信程序是指上百万封信在队列里要不停发送的那种 , 象你这个随便怎么写一个程序都行 , 没有必要用 JAVAMAIL. 只要指定一个发信的服务器然后用 cocket 连它的 25 口就行了 . 自己用 SOCKET SMTP 25 口发一封信就好象两个邻居之间送一样东西 , 直接递过去得了 , JAVAMAIL, 消息机制就是你把这个东西从邮局寄给你的邻居了  

posted on 2006-12-06 09:37 zxc 阅读(472) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: