Jsp 验证码(检验码)的实现

九月 11, 2007 by admin  
类别:JAVA开发

利用Apache的一个 开源项目Image Tag Library(http://jakarta.apache.org/taglibs/sandbox/doc/image-doc/intro.html)

下载必要文件
1)下载Jakarta-Taglibs:
http://people.apache.org/builds/jakarta-taglibs-sandbox/nightly/
解压后取出taglibs-image.jar放于/WEB-INF/lib下
将taglibs-image.tld拷到/WEB-INF/下

2)下载Poor Man’s Imaging Wrapper:Image Tag 用到了这个包
http://www.mullassery.com/downloads/ 填写一些必要信息后就可以免费下载了
解压后将pmiw.jar拷到/WEB-INF/lib下

在web.xml中配置ImageServlet
<context-param>
<param-name>ImageServletMapping</param-name>
<param-value>/gen-image</param-value>
</context-param>
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>org.apache.taglibs.image.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/gen-image/*</url-pattern>
</servlet-mapping>

在jsp页面中加入实现代码(部分内容参考了http://technology.a.lunqun.com/read.php?tid=149894&page=e&fpage=1)

1)在页首加入<%@ taglib uri=”/WEB-INF/taglibs-image.tld” prefix=”img” %>

2)在页面顶端加入
<%
response.setHeader(“Pragma”, “No-cache”);
response.setHeader(“Cache-Control”, “no-cache”);
response.setDateHeader(“Expires”, 0);
%>

3)在想加上验证码的地方加上如下代码:
<%
int num = (int) java.lang.Math.round(java.lang.Math.random() * 8999);
String sRand = “” + (1000 +num);
session.setAttribute(“userInfo.authcode”,sRand);
%>

<img:image src=”/graphics/auth.jpg” refresh=”true”>

<img:text text=”<%=sRand.substring(0,1)%>” x=”7″ y=”-1″ font=”Times New Roman” bold=”false” size=”22″ color=”0×993399″ italic=”true” />
<img:text text=”<%=sRand.substring(1,2)%>” x=”17″ y=”-1″ font=”Times New Roman” bold=”false” size=”22″ color=”0×660033″ italic=”false” />
<img:text text=”<%=sRand.substring(2,3)%>” x=”27″ y=”-1″ font=”Times New Roman” bold=”true” size=”18″ color=”0xcc3366″ italic=”true” />
<img:text text=”<%=sRand.substring(3,4)%>” x=”37″ y=”-1″ font=”Times New Roman” bold=”false” size=”22″ color=”0×990099″ italic=”false” />

<%if(num<4500){%>
<img:grayscale brightness=”90″ />
<%}%>
</img:image>

Java中文乱码问题大全

九月 11, 2007 by admin  
类别:JAVA开发

这里只有一些文档链接,没有进一步的整理。相信如果您能平心静气的读完的话,一定会对中文问题有个彻底的认识,能够应对各种中文乱码问题 :)


Web应用中的中文乱码问题


中文乱码问题原理阐述


使用JDBC连接数据库时的中文乱码问题 TODO


英文参考文档

jsp防盗链技巧

五月 2, 2007 by admin  
类别:JAVA开发

index.jsp

—————————–

<html>
<head><title>Simple jsp page</title></head>
<body>Place your content here

here is index jsp
get header info
<a href=”a.jsp”>a.jsp</a>
</body>
</html>

——————————

a.jsp页面
通过判断 referer, 判断你从哪里来。

<html>
<head><title>Simple jsp page</title></head>
<body>Place your content here

here is a. jsp
get header info
<%=request.getHeader(“Referer”)%>
<%if(null == request.getHeader(“Referer”) || request.getHeader(“Referer”).indexOf(“yourdomain.com”) < 0){%>
做人要厚道
<%}else{%>
合法访问
<%}%>
</body>
</html>

Jsp基础知识总结

五月 2, 2007 by admin  
类别:JAVA开发

Jsp我们学完也有好长一段时间间了,过程中总结的一点点基础知识,拿来与初学者分享,直到最后做我们一个小小的项目,宠物医院,也是用我们最简单的工具 Jcreater4.0来做的,呵,到了Ecliplse下才发现,开发速度如此之快,不过这样也打好了我们的基础….不多说了,把所学到的小小总结 发来至此吧,愿给初学者带来便利,同时愿高人给以指点不足之处…..

首先来说一下我们jsp的课程:第一部分为Servlet技术,包括Servelt入门,会话跟踪,JavaMal和Servlet.第二部分就是Jsp 技术,包括:jsp简介,jsp脚本和指令的使用,jsp隐式对象,JavaBean与jsp中的标准动作,jsp表达式语言,自定义标签,jsp自定义 表签库.第三部分就是过滤器的设计模式,包括过滤器和MVC设计模式.

一.Servlet知识及常见错误和规律.

1.桌面运行程序与WEB应用程序在过程实质是一样的—基于请求与响应的过程.
2.http协议(超文本传输协议)
1).无状态:多次请求信息之间无联系.
2).用于internet发送请求和响应消息
3).使用端口接收和发送消息,默认为80端口.
端口:为内存缓冲区(多线程接收数据)
windows: 0—65535端口
0—4096为系统端口
3.什么是Servlet?
Server let服务器端小程序.
用来处理客户端发送的请求,并由服务器响应给客户端的java编写的程序.
Servlet只在服务器运行

4.Servlet详解:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class MyServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
response.setContentType(“text/html;charset=gb2312″);
request.setCharacterEncoding(“gb2312″);

response.sendRedirect(“Login.jsp”); //重定向方法
request.getParameter(“”);  //读取客户端数据

/ /以下方法为转发,不同于重定向的是:转发时数据不丢失.
ServletContext context=this.getServletContext();
RequestDispatcher dispatcher=context.getRequestDispatcher(“/welcome.jsp”);
dispatcher.forward(request,response);

…//以下方法为包含(用得相对较少)
dispatcher.include(request,response);

}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
doGet(request,response);
}
}

(2).当需要向Servlet传递参数的时候,Src=”Servlet?name=’ ‘  “;

5.执行servlet时,发生下载提示:

(1).可能性一:text/html;charset=GBK中间分号写成逗号.
(2).可能性二:XML中配置信息出错.
(3).可能性三:如定义全局变量时,例:CONTENT_TYPED在以后所用中放在双引号之中.
(4).可能性四:当上面的text/html,charset中写错字符的时候,也会提示下载.

6执行servlet时,发生404错误:

(1).多为xml中配置出错.
(2).可能在servlet通信方法中url出错.
(3).表单提交时:action路径.
(4).比较弱智的错误就是标记写错,请仔细检查.

7.执行servlet时,发生403错误:

(1).tomcat下站点里发生错误.

8.执行servlet时,发生405错误:

(1).servlet中没有post提交方法时.

95.执行servlet时,发生500错误:

(1).多数为servlet程序代码中发生异常错误.

10.执行时,取出的数据为null.就要根据实际情况对应错误提示去找.

11.执行jsp页时,发生500错误提示….

多数为jsp页面在转译过程中发生编译错误! 甚是严重错误,可以按提示回头去找…

二.XML配置

<!–config中的配置信息,当中配置需要在servlet中的xml中–>
<servlet>
<init-param>
<param-name>sess</param-name>
<param-class>com.serv<param-class>
</init-param>
<servlet-name>Myservlet</servlet-name>
<servlet-class>com.Myservetl</servlet-class>
</servlet>

<!–此为对Myservlet进行映射–>
<servlet-mapping>
<servlet-name>Myservlet</servlet-name>
<servlet-class>/url</servlet-class>
<servlet-mapping>

<!–context中配置信息–>
<context-param>
<param-name>ses</param-name>
<param-class>com.ser</param-class>
</context-param>

注意:配置信息只能读取,并且config是在单个Servlet中能访问,context是全局访问

三.
========================会话跟踪技术总结========================

用户授权.
隐藏表单域
URL重写
Cookie使用
——————————————————————————————–
1.会话:是同一客户端和服务器之间在同一段时间的多次请求和响应.

2.Session使用(重点)

HttpSession session=request.getSession();
session.setAttribute(“name”,Object); //附值
session.getAttribute(); //取值
session.removeAttributer();

3.Cookie(类)
1).Cookie是什么?
cookie是一段字符串,由HTTP支持,在客户端可以永久保存.写入(硬盘).
每次请求,响应中都会为cookie留有空间.
2).用法:
Cookie cookie

=new Cookie(“name”,cookie); //必须指定cookie的键与值,且必须为字符串.
response.addcookie(cookie);
cookie.setMaxAge(3600);  //以秒为单位.

//读取客户端发送过来的cookie,返回值类型为: cookie数组
request.getCookies();
//循环读取键与值.

使用过程:(1).生成cookie, new cookie(“”,”")
(2).设置生存周期 >0,SetMaxAge(秒).
(3).发送到客户端:response.addCookie(cookie);

小常识:(1).一个网站最多向一个客户端写20个cookie.
(2).一个客户端最多接收300个cookie.

4.Session与Cookie这间的关系:
session的ID作为Cookie的值在客户端与服务器之间进行传递.
——————————————————————————————–

四.构建实体Bean的原则:

/*
*  1.bean类为公有
*  2.类成员为私有
*  3.必有一个无参构造
*  4.有set()和get()方法
*  5.方法命名为setXxx()或getXxx()方法
*/

五.MVC实现数据封装

此数据封装标准按MVC总结.

所需内容: 1.Servlet 2.JavaBean 3.OperBean(DBconnection) 4.Jsp

由Servlet提取前台数据,然后将数据封装于JavaBean中,再实例化OperBean,调用OperBean中方法,
将JavaBean对象以参数的形式传过去,并进行一系列的操作后,返回数据存入ArrayList中或者其它集合内,并将集合对象封装Session对象中,便于在前台取值.

Servlet控制:

……..
Arraylist lis=new ArrayList();

String name=request.getParameter(“username”);

JavaBean bean=new JavaBean();
bean.setName(name);

OperBean oper=new OperBean();
lis=oper.operMethod(bean);

HttpSession session=request.getSession();
session.setAttribute(“list”,lis);

OperBean逻辑:

public ArrayList OperMethod(JavaBean bean)
{
ArrayList lis=new ArrayList();
String usr=bean.getName(“name”);

String sql=”select * from student where name=’”+usr+”‘”;

DBconnection db=new DBconnection();
…//操作数据业务

return lis;
}

前台业务:

ArrayList list=(ArrayList)session.getAttribute(“lis”);
Iterator ite=list.iterator();
while(ite.harNext())  //遍历输出
{
JavaBean bean=(JavaBean)ite.next();
.
//取bean中值
}

//由此可以进行”用户登陆”,”数据的增删改查”,”注销登陆”等操作…..

以上所有jsp技术都是没有与struts等框架相关的,只是简单的MVC思想,只有懂得以上简单的思想,才可以进一步的对框架这些高层次的东西 钻研,我感觉是如此,毕竟我也是个初学者,还有好多知识不懂,也在不停的学习之中,如果有哪个朋友有好的见意或者好的学习方法,请多多指教!

From:动态网站制作指南

Tomcat JSP经典配置实例

四月 28, 2007 by admin  
类别:JAVA开发

一、开发环境配置

第一步:下载j2sdk和tomcat:到sun官方站(http://java.sun.com/j2se/1.5.0/download.jsp)下载j2sdk,注意下载版本为Windows Offline Installation的SDK,同时最好下载J2SE 1.5.0 Documentation,然后到tomcat官方站点(http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi)下载tomcat(下载最新5.5.9版本的tomcat);

第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后按默认设置进行安装即可。

1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:\j2sdk1.5.0):

JAVA_HOME=c:\j2sdk1.5.0
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%\bin

接着可以写一个简单的java程序来测试J2SDK是否已安装成功:

public class Test{
public static void main(String args[]){
System.out.println(“This is a test program.”);
}
}

将上面的这段程序保存为文件名为Test.java的文件。

然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令

javac Test.java
java Test

此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。

2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat):

CATALINA_HOME=c:\tomcat
CATALINA_BASE=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,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。

第三步:建立自己的jsp app目录

1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
http://java.sun.com/dtd/web-app_2_3.dtd“>
<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
</web-app>

5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:

<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>

6.重启Tomcat

7.打开浏览器,输入http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。

第四步:建立自己的Servlet:

1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个servlet程序,文件名为Test.java,文件内容如下:

package test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out=response.getWriter();
out.println(“<html><body><h1>This is a servlet test.</h1></body></html>”);
out.flush();
}
}
}

2 .编译
将Test.java放在c:\test下,使用如下命令编译:

C:\Test>javac Test.java

然后在c:\Test下会产生一个编译后的servlet文件:Test.class

3 .将结构test\Test.class剪切到%CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那个test目录到classes目录下,如果classes目录不存在,就新建一个。 现在webapps\myapp\WEB-INF\classes下有test\Test.class的文件目录结构

4 .修改webapps\myapp\WEB-INF\web.xml,添加servlet和servlet-mapping

编辑后的web.xml如下所示,红色为添加的内容:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<!DOCTYPE web-app
PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”
http://java.sun.com/dtd/web-app_2_3.dtd“>
<web-app>
<display-name>My Web Application</display-name>
<description>
A application for test.
</description>
<servlet>
<servlet-name>Test</servlet-name>
<display-name>Test</display-name>
<description>A test Servlet</description>
<servlet-class>test.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
</web-app>

这段话中的servlet这一段声明了你要调用的Servlet,而servlet-mapping则是将声明的servlet”映射”到地址/Test上

5 .好了,重启动Tomcat,启动浏览器,输入http://localhost:8080/myapp/Test 如果看到输出This is a servlet test.就说明编写的servlet成功了。

注意:修改了web.xml以及新加了class,都要重启Tomcat

第四步:建立自己的Bean:

1.用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个java程序,文件名为TestBean.java,文件内容如下:

package test;
public class TestBean{
private String name = null;
public TestBean(String strName_p){
this.name=strName_p;
}
public void setName(String strName_p){
this.name=strName_p;
}
public String getName(){
return this.name;
}
}

2 .编译

将TestBean.java放在c:\test下,使用如下命令编译:
C:\Test>javac TestBean.java

然后在c:\Test下会产生一个编译后的bean文件:TestBean.class

3 .将TestBean.class文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,

4 .新建一个TestBean.jsp文件,文件内容为:

<%@ page import=”test.TestBean” %>
<html>
<body>
<center>
<%
TestBean testBean=new TestBean(“This is a test java bean.”);
%>
Java bean name is: <%=testBean.getName()%>
</center>
</body>
</html>

5 .好了,重启Tomcat,启动浏览器,输入http://localhost:8080/myapp/TestBean.jsp 如果看到输出Java bean name is: This is a test java bean.就说明编写的Bean成功了。

这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。接下来需要做的事情就是多看书、多读别人的好代码,自己多动手写代码以增强自己在这方面开发的能力了。

jsp 内嵌网页内容–iframe

四月 8, 2007 by admin  
类别:JAVA开发

ZZzzz~ may wind<Iframe src=”/URL” width=”x” height=”x” scrolling=”[OPTION]” frameborder=”x”></iframe>
src:文件的路径,既可是HTML文件,也可以是文本、ASP等;
width、height:”画中画”区域的宽与高;
scrolling:当SRC的指定的HTML文件在指定的区域不显不完时,滚动选项,如果设置为NO,则不出现滚动条;如为Auto:则自动出现滚动条;如为Yes,则显示;
frameborder:区域边框的宽度,为了让“画中画“与邻近的内容相融合,常设置为0。

比如:

<Iframe src=”http://www.xyz.com/xyz“; width=”250″ height=”200″ scrolling=”no” frameborder=”0″></iframe>

窗口与浮动帧之间的相互控制
在脚本语言与对象层次中,包含Iframe的窗口我们称之为父窗体,而浮动帧则称为子窗体,弄清这两者的关系很重要,因为要在父窗体中访问子窗体或相反都必须清楚对象层次,才能通过程序来访问并控制窗体。

1、在父窗体中访问并控制子窗体中的对象
在父窗体中,Iframe即子窗体是document对象的一个子对象,可以直接在脚本中访问子窗体中的对象。
现在就有一个问题,即,我们怎样来控制这个Iframe,这里需要讲一下Iframe对象。当我们给这个标记设置了ID 属性后,就可通过文档对象模型DOM对Iframe所含的HTML进行一系列控制。

比如在example.htm里嵌入test.htm文件,并控制test.htm里一些标记对象:
<Iframe src=”test.htm” id=”test” width=”250″ height=”200″ scrolling=”no” frameborder=”0″></iframe>
test.htm文件代码为:
<html>
<body>
<h1 id=”myH1″>hello,my boy</h1>
</body>
</html>
如我们要改变ID号为myH1的H1标记里的文字为hello,my dear,则可用:
document.myH1.innerText=”hello,my dear”(其中,document可省)
在example.htm文件中,Iframe标记对象所指的子窗体与一般的DHTML对象模型一致,对对象访问控制方式一样,就不再赘述。

2、在子窗体中访问并控制父窗体中对象
在子窗体中我们可以通过其parent即父(双亲)对象来访问父窗口中的对象。
如example.htm:
<html>
<body onclick=”alert(tt.myH1.innerHTML)”>  <Iframe name=”tt” src=”frame1.htm” width=”250″ height=”200″ scrolling=”no” frameborder=”0″></iframe>
<h1 id=”myH2″>hello,my wife</h1>
</body>
</html>
如果要在frame1.htm中访问ID号为myH2中的标题文字并将之改为”hello,my friend”,我们就可以这样写:
parent.myH2.innerText=”hello,my friend”
这里parent对象就代表当前窗体(example.htm所在窗体),要在子窗体中访问父窗体中的对象,无一例外都通过parent对象来进行。

Iframe虽然内嵌在另一个HTML文件中,但它保持相对的独立,是一个“独立王国“哟,在单一HTML中的特性同样适用于浮动帧中。

试想一下,通过Iframe标记,我们可将那些不变的内容以Iframe来表示,这样,不必重复写相同的内容,这有点象程序设计中的过程或函数,减省了 多少繁琐的手工劳动!另外,至关重要的是,它使页面的修改更为可行,因为,不必因为版式的调整而修改每个页面,你只需修改一个父窗体的版式即可了。
要注意的是,Nestscape6.0之前版本不支持Iframe标记。

例子:

<iframe src=”页面” width=”宽度”  height=”高度” align=”排列可以是left或right,center” scrolling=”是否有滚动条可以填no或yes”></iframe>

<IFRAME frameBorder=0 frameSpacing=0 height=25 marginHeight=0 marginWidth=0 scrolling=no
name=main src=”/bgm/bgm.html” width=300></IFRAME>

用了iframe后 发现滚动条不漂亮 想用2个图片来代替↑↓
应该怎么实现呢?

回答:
用下列代码替换网页的<title>..</title>
<SCRIPT LANGUAGE=”javascript“>
function scroll(n)
{temp=n;
Out1.scrollTop=Out1.scrollTop+temp;
if (temp==0) return;
setTimeout(“scroll(temp)”,80);
}
</SCRIPT>
<TABLE WIDTH=”330″>
<TR>
<TD WIDTH=”304″ VALIGN=”TOP” ROWSPAN=”2″ >
<DIV ID=Out1 STYLE=”width:100%; height:100;overflow: hidden ;border-style:dashed;border-width:
1px,1px,1px,1px;”>
文字<BR> 文字<BR>
文字<BR>
文字<BR>
文字
<BR>
<BR>
</DIV>
</TD>
< TD WIDTH=”14″ VALIGN=”TOP”><IMG SRC=”photo/up0605.gif” WIDTH=”14″ HEIGHT =”20″ onmouseover=”scroll(-1)” onmouseout=”scroll(0)” onmousedown=”scroll (-3)” BORDER=”0″ ALT=”按下鼠标速度会更快!”></TD>
</TR>
<TR>
< TD WIDTH=”14″ VALIGN=”BOTTOM”><IMG SRC=”photo/down0605.gif” onmouseover =”scroll(1)” onmouseout=”scroll(0)”  onmousedown=”scroll(3)” BORDER=”0″ WIDTH =”15″ HEIGHT=”21″ ALT=”按下鼠标速度会更快!”></TD>
</TR>
</TABLE>

下面这段代码可以实现IFrame自适应高度,即随着页面的长度,自动适应以免除页面和IFrame同时出现滚动条。
源代码如下

<script type=”text/javascript”>
//** iframe自动适应页面 **//

//输入你希望根据页面高度自动调整高度的iframe的名称的列表
//用逗号把每个iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一个窗体,则不用逗号。

//定义iframe的ID
var iframeids=["test"]

//如果用户的浏览器不支持iframe是否将iframe隐藏 yes 表示隐藏,no表示不隐藏
var iframehide=”yes”

function dyniframesize()
{
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++)
{
if (document.getElementById)
{
//自动调整iframe高度
dyniframe[dyniframe.length] = document.getElementById(iframeids);
if (dyniframe && !window.opera)
{
dyniframe.style.display=”block”
if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) //如果用户的浏览器是NetScape
dyniframe.height = dyniframe.contentDocument.body.offsetHeight;
else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) //如果用户的浏览器是IE
dyniframe.height = dyniframe.Document.body.scrollHeight;
}
}
//根据设定的参数来处理不支持iframe的浏览器的显示问题
if ((document.all || document.getElementById) && iframehide==”no”)
{
var tempobj=document.all? document.all[iframeids] : document.getElementById(i

frameids)
tempobj.style.display=”block”
}
}
}

if (window.addEventListener)
window.addEventListener(“load”, dyniframesize, false)
else if (window.attachEvent)
window.attachEvent(“onload”, dyniframesize)
else
window.onload=dyniframesize
</script>

其他有参考价值的网址:
http://www.webshu.com/tutorial/tor/7,id=0408.htm //iframe嵌入网页的用法
http://www.phpx.com/man/dhtmlcn/objects/IFRAME.html //IFRAME对象
http://www.hoyo.idv.tw/web-program/html/iframe.htm //内嵌框架iframe

在jsp环境中配置使用fckeditor

四月 8, 2007 by admin  
类别:生活匣子

       FCKeditor是sourceforge.net上面的一个开源项目,主要是实现在线网页编辑器的功能,可以让web程序拥有如MS Word这样强大的编辑功能。官方网站为http://www.fckeditor.net ,在服务器端支持ASP.Net、ASP、ClodFusion、PHP、Java等语言,并且支持IE 5+、Mozilla 、Netscape等主流浏览器。 
  首先在官方网站下载fckeditor,注意有两个包,一个是主文件,一个是jsp整合包的。

  1、解压FCKeditor_2.2.zip,(FCKeditor主文件),将FCKeditor目录复制到网站根目录下,

  2、解压FCKeditor-2.3.zip,(jsp,FCKeditor整合包),作用:This is the JSP Integration Pack for using FCKeditor inside a java server page without the complexity of using a Java scriptlets or the javascript api.

  3、将FCKeditor-2.3/web/WEB-INF/web.xml中的两个servlet,servlet-mapping定义复制到自已项目的web.xml文件中
修改

<servlet-mapping>
<servlet-name>Connector</servlet-name>
<url-pattern>/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>SimpleUploader</servlet-name>
<url-pattern>/editor/filemanager/upload/simpleuploader</url-pattern>
</servlet-mapping>
  为

<servlet-mapping>
<servlet-name>Connector</servlet-name>
<url-pattern>/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>SimpleUploader</servlet-name>
<url-pattern>/FCKeditor/editor/filemanager/upload/simpleuploader</url-pattern>
</servlet-mapping>
  4、将FCKeditor-2.3/web/WEB-INF/lib目录下文件复制到自已项目的lib文件夹中

  5、在需使用FCKeditor的jsp界面中加入:

// 文件开头处加入
<%@ taglib uri="http://fckeditor.net/tags-fckeditor" prefix="FCK" %>
//要使用的地方加入
<FCK:editor id="content" basePath="/FCKeditor/"
imageBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector"
linkBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector"
flashBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector"
imageUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Image"
linkUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=File"
flashUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Flash">
this is default content :)
</FCK:editor>
  启动服务器测试。。。。成功后,来给FCKeditor瘦瘦身.

  1、将FCKeditor目录下及子目录下所有以”_”下划线开头的文件夹删除
  2.FCKeditor根目录下只保留fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml其余全部删除
  3.将editor/filemanager/upload目录下文件及文件夹清空.
  4.还可以将editor/skins目录下的皮肤文件删除,只留下default一套皮肤(如果你不需要换皮肤的话)
  5.还可以将editor/lang目录下文件删除,只保留en.js, fcklanguagemanager.js, zh-cn.js, zh.js文件(英文,简体中文,繁体中文一般应该够用了:) )

  完成,现在看是不是清爽了很多?

  其它问题:
在struts+spring+hibernate中使用,上传图像功能中可能会出现报:
The output format must have a ‘{http://xml.apache.org/xalan}content-handler’ property!
错的情况,将WEB-INF/lib目录下xalan*.jar删除试试

  安全问题:
假如在前台让普通用户也能使用FCKEditor,要注意相关安全问题,在前台使用时,不要使用默认的ToolBar,
要将添加图像,flash,图像域按钮去掉
在fckconfig.js中大约78行配置 那些数组中的值就像当于界面上的一个功能,你可以强行把每组值试出来代表什么。:P

  到此安装FCKeditor就完成了,相关详细配置你可以看FCKeditor-2.3.zip,(jsp,FCKeditor整合包)文件夹中web/_samples目录下的例子。

J2EE的三个关键性问题

三月 18, 2007 by admin  
类别:生活匣子

 一、J2EE提出的背景

  1、 企业级应用框架的需求

  在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列同陈为中间件。

  2、 为了通用必须要提出规范,不然无法达到通用

  在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实J2EE就是基于Java技术的一系列标准

  注:中间件的解释

  中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力。我们后面说到的容器的概念就是中间件的一种。

  二、相关名词解释

  容器:充当中间件的角色

  容器:它是一种概念,它为容器里面的各个类,提供一个管理机制,如生存周期管理,消息传递管理等等。

  J2EE是由SUN 公司开发的一套企业级应用规范。现在最高版本是1.4。支持J2EE的应用服务器有IBM WebSphere Application Server,BEA WebLogic Server,JBOSS,Oracle Application Server,SUN ONE Application Server等。

  WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

  EJB容器:Enterprise Java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。

  WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。

  RMI/IIOP:远程方法调用/internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是Java特有的。

  JNDI:Java命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

  JMS:Java消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。

  JavaMAIL:Java邮件服务。提供邮件的存储、传输功能。他是Java编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。

  JTA:Java事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

  JAF:Java安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

  EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。

  三、J2EE的优越性

  1、 基于Java 技术,平台无关性表现突出

  2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如BEA ,IBM,ORACLE等。

  3、 提供相当专业的通用软件服务。

  4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础

下一页 »