JavaScript 关闭页面(IE, firefox, Chrome)兼容问题

设计页面时加上了Exit按钮,希望点击之后浏览器页面可以自动关闭。用JavaScript写了下面的脚本:

<script language="javascript" type="text/javascript"> 
function winClose()
{  
	window.close(); 
} 
</script> 

但是发现在Firefox,跟Chrome浏览器中,这段脚本不起作用,上网查了之后发现这段介绍:

众所周知,在javascript中window.close()是用来关闭窗口的,而且ie和firefox都是支持的。为了实现用户对浏览器的绝对控制,ie中用close关闭非open打开的窗口时会弹出一个对话框询问用户。有时候我们不希望再这样哆嗦,但是怎么去掉这个框呢,请看下面的代码。

function winClose(){ window.top.opener = null; window.close(); }

在window.close之前加上window.top.opener = null就可以了。

不过,把上面的代码用来试一下的话,我们会发现,在FireFox中好像没起作用。会不会是firefox不支持close,其实不然。之所以window.close在firefox不能使用,是因为firefox默认不能关闭用户打开的网页,我们可以这样设置firefox:

打开firefox,在地址栏输入about:config

找到dom.allow_scripts_to_close_windows这项并改为true。

再把上面的代码用来试一下吧!

Ref:http://hi.baidu.com/suen_%CB%EF/blog/item/bedca57f8932480d28388a49.html

MyEclipse 无法自动编译

最近用MyEclipse遇到很多诡异的问题,但也都是有迹可循的,比如java类无法自动编译的问题,折腾了一个晚上,算是解决了。这篇博客对这个问题总结得很好:

http://xinkong1010.iteye.com/blog/852162

PS:在JSP文件中调用java类,如果java类不放在package中,调用<<%page import="example">>会显示example can't be resolved.但是把example.java放在包hanle中,调用<<%page import="handle.example">>表不会出错了。

JSP获取客户端IP地址

正在做一个交互式网站,需要记住用户的IP来生成user profile,使用JSP的response.getRemoteAddr()可以做到,但是在网上查资料后发现这种方法解决不了客户端使用代理软件来访问网站的问题,这篇文章给出了很好的解决办法:

http://blog.csdn.net/maxracer/article/details/6118460

但是使用上述方法,会出现记录的IP地址为 0:0:0:0:0:1,出现会误以为是IPv6的地址,其实是客户端与服务器使用同一机器的原因,将主机名localhost改为真实IP地址就不会出现这个问题了。这篇文章给出了详细的分析

http://java161.iteye.com/blog/1189279

表单传值错误

使用图片作为按钮,点击按钮后都跳转到同一页面,

此时如何判断用户点击的是哪个图片呢?

隐藏标签可以帮上忙了,下面代码中可以使用id来传递value值“next”.在跳转之后的页面中可以使用request.getParameter("id")来获取所要传递的参数值。

<form name="tonext" action="factAssess.jsp" method="post">
	<input type="hidden" name="id" value="next"/>
  	<input type="image" src="next.png" name="nextButton"></input>
</form>

可是要传递的是一个java类型的变量怎么办?自然是:

<% out.print("<td><input type=\"hidden\" name=\"factId\" value='"+factId+"'</input></td>");%>

在这里忘了变量factId需要加上引号'"+factId+"',在跳转后的页面中factId的String值可以正确获取,而使用Integer.parseInt(request.getParameter("factId"))来获取factId的int值总是会出现“Integer parseint NumberFormatException”,花了很长时间才找到错误所在。

java 环境变量、tomcat 环境变量配置

1、java 环境变量配置

JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:/java/jdk1.5.0_08,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因   为以后运行tomcat,eclipse等都需要依*此变量);

Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin

 CLASSPATH为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar (要加.表示当前路径)

“开始”->;“运行”,键入“cmd”;

键入命令“java -version”,“java”,“javac”几个命令,出现画面,说明环境变量配置成功;

2、tomcat 环境变量配置

CATALINA_HOMEc:\tomcat

CATALINA_BASEc:\tomcat

TOMCAT_HOME: C:\Tomcat

然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:

classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;

接着可以启动tomcat

运行cat目录\bin—startup.bat

: shutdown.bat是关闭服务器

IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。

 

 

解决 ENCTYPE="multipart/form-data 无法获取表单数据

在form表单中上传文件时,编码必须是ENCTYPE="multipart/form-data,这种编码使得文件上传是使用二进制编码,从而提高上传效率,但是这使得其它类型的表单数据使用request.getParameter("***")时无法获取,搜到一篇很有用的资料

http://yjandx.iteye.com/blog/1170356

http://apps.hi.baidu.com/share/detail/59523

JSP 文件上传下载 mysql数据库

尝试在JSP中将文件上传到mysql数据库,没有多少资料支持,自己先摸索摸索吧!

http://junier.javaeye.com/blog/607473

mysql BLOB类型

TinyBlob    最大255

Blob        最大65k

MediumBlob  最大16M

LongBlob    最大4G

参数配置

Windows通过文件my.ini (在系统盘)

[mysqld]
set-variable = max_allowed_packet=10M

JSP 页面之间传递参数

数据库课程设计,将学生所选课程的名字设为链接,学生点击链接后,进入课程相关页面,但是必须记住用户点击链接课程的ID,以便在重定向的页面中以课程ID访问数据库,得到课程的详细信息,想了很久没有解决方法,有人说用cookie,学了一点JS,觉得不行。于是发现了这个网站从而解决了问题。

http://stanlyy.javaeye.com/blog/462161

其中的链接可以传递多参数

 

JSP 注意点

1. 使用javascript验证用户输入密码与确认密码时,使用

form.initPwd.value !=  而非 equals 来判定

2. 同一个session变量在多个用户之间是共享的,比如使用userRole来记住用户身份,学生登陆后,uerRole的值赋为1,教师登陆后,uerRole的值赋为2,实验发现,在同一浏览器中,教师先登录,学生后登录,userRole的值会发生变化。上网查了之后发现:session对象当客户端首次访问时,创建一个新的session对象.并同时生成一个sessionId,并在此次响应中将sessionId以响应报文的方式些回客户端浏览器内存或以重写url方式送回客户端,来保持整个会话,只要sever端的这个session对象没有销毁,以后再调用 request.getSession()时就直接根据客户端的sessionId来检索server端生成的session对象并返回,不会再次去新建,除非根据此sessionId没有检索到session对象.

由此看来,使用同一个浏览器,同一session变量便会在多用户之间共享,而使用不同浏览器这个现象就不会发生,事实也是如此。早上痛下决心解决了这个问题,还是使用链接传递参数,看来最朴实的东西有时也是最有用的。

JSP 页面之间传递参数的五种方法:

http://developer.51cto.com/art/200907/133815.htm