-- 作者:nbsven
-- 发布时间:5/12/2009 2:07:00 PM
-- Servlet/JSP的配置使用,原来这么简单!
一、相关软件介绍 1、 JDK:Java2的软件开发工具,是Java应用程序的基础。JSP是基于Java技术的,所以配置JSP环境 之前必须要安装JDK。 2、 UFO:最新发布的支持jsp的服务器软件,作为独立的Web服务器来使用。即支持静态页面、同时 也支持动态页面,处理这两种页面都很迅速;而软件自身很健壮,不会出现内存泄漏和服务器自己宕掉的 现象。对于初学者来说不用做任何部署配置环境变量的工作,简直可以说是初学者的首选。 二、 软件下载 1、JDK1.5.0 版本:JDK1.5.0_16 (JDK1.5.0及以上版本都可以) 地址:http://java.sun.com/javase/downloads/index_jdk5.jsp 2、UFO 1.10 版本:1.10(1.50MB) 地址:http://www.gm365.com 主页面上 三、软件的安装 1、安装JDK1.5.0_16 (1)、这个不用说大家都会,直接运行下载的jdk-1_5_0_16-windows-i586-p文件,根据安装向导安 装到一个目录,例如安装到D:\DK1.5.0_16。 (2)、不用添加环境变量,只需要做如下工作: a: Windows下,打开UFO中的bin目录,打开编辑setclasspath.bat文件插入一行:set JAVA_HOME=D:\jdk1.5.0_16 (即把JAVA_HOME设置成JDK在您计算机上的安装目录),修改后敲startup.bat即可启动UFO; b: Linux下、打开bin目录下的setclasspath.bat文件,敲./startup.sh 即可直接启动UFO; 四、Servlet/JSP在UFO中的使用(你会发现Servlet的使用原来这么简单) 1、先拿个简单的单纯的Servlet来介绍。 编写一个文件名为FirstServlet.java的Servlet,代码如下: package test; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FirstServlet extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head><title>"); out.println("It's my first Servlet"); out.println("</title></head><body>"); out.println("<h1>welcome to use UFO!</h1>"); out.println("</body></html>"); } } 在UFO的ROOT或是examples(当然也可以是webapps底下自己新建的)的WEB-INF/classes下新建个文件 名为test的文件夹,将编译好的FirstServlet.class文件放入;启动UFO,如果class文件放置ROOT底下浏 览器中输入http://localhost:80/servlet/test/FirstServlet,如果class文件放置examples底下浏览器 中输入http://localhost:80/examples/servlet/test/FirstServlet,你就可以成功的看到几个超大的we lcome to use UFO!。 说明:UFO中Servlet是不用在WEB-INF中的web.xml文件中注册的,UFO直接根据URL中的/servlet/认 定,也就是说在UFO中如果要用到Servlet是需要在访问调用的Servlet前面加上一个标志符——servlet即 可。 2、 JSP中调用Servlet 编写一个Servlet,用JSP调用这个Servlet来存储字符内容: a)、编写一个JSP文件ioFileServlet.jsp,用来写入文字内容,其代码如下: <%@ page contentType="text/html;charset=GB2312" %> <script language="javascript"> function on_submit() {//验证数据的合法性 if (form1.file_content.value == "") { alert("文件内容不能为空,请输入文件内容!"); form1.file_content.focus(); return false; } } </script> <HTML> <head> <title>提交文件内容</title> </head> <BODY> <div align="center"> <center> <table border="1"> <tr><td colspan="2" align="center">用servlet处理输入的文件内容</td></tr> <tr> <tr><td> <form name="form1" action="servlet/readdata/ioFileServlet" method="post" onsubmit="return on_submit()"> 请输入文件内容: </td><td> <textarea rows="7" name="file_content" cols="52"></textarea> </td></tr> <tr><td colspan="2" align="center"><input type="submit" value="提交"></td></tr> </form> </table> </center> </div> </html> 再编写一个名为ioFileServlet.java的Servlet用来存储ioFileServlet.jsp中写入的内容: package readdata; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ioFileServlet extends HttpServlet { public String codeToString(String str) {//处理中文字符串的函数 String s=str; try { byte tempB[]=s.getBytes("ISO-8859-1"); s=new String(tempB); return s; } catch(Exception e) { return s; } } public void init(ServletConfig config) throws ServletException { super.init(config); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { //设置mime response.setContentType("text/html;charset=GB2312"); PrintWriter out=response.getWriter(); out.println("<HTML><head><title>接收新用户注册</title></head><BODY>"); //把提交的文件内容写入文件 int RowSize=30;//文件每行的字符数 String tempString1=null; String tempString2=null; tempString1=codeToString(request.getParameter("file_content")); if(tempString1!=null) { File tempFile1=new File("d:/fileContent.txt"); FileWriter outfile1=new FileWriter(tempFile1,true); BufferedWriter outbuffer1=new BufferedWriter(outfile1); int writeStringLength=tempString1.length(); for(int i=0;i<writeStringLength/RowSize+1;i++) { if((i+1)*20<writeStringLength) { tempString2=tempString1.substring(i*RowSize,(i+1)*RowSize); } else { tempString2=tempString1.substring(i*RowSize,writeStringLength); } outbuffer1.write(tempString2); outbuffer1.newLine(); } outbuffer1.flush(); outbuffer1.close(); outfile1.close(); } out.println("写入的文件内容是:<br>"); //从文件中读取内容 File f=new File("d:/fileContent.txt"); if(f.exists()) { FileReader fileReader1=new FileReader(f); BufferedReader buffer1=new BufferedReader(fileReader1); byte bufferArray[]=new byte[90]; String tempString=null; while((tempString=buffer1.readLine())!=null) { out.println(tempString+"<br>"); } buffer1.close() fileReader1.close(); } else { out.println("故事中暂时没有内容。"); } out.println("</body> </html>"); } } 将ioFileServlet.jsp放置于examples底下,接着在examples的WEB-INF/classes下新建个文件名为readda ta的文件夹,将编译好的ioFileServlet.class文件放入,在浏览器中输入http://localhost:80/examples /ioFileServlet.jsp,你会看到等待你要输入内容的页面,提交之后便调用了Servlet文件ioFileServlet .class;如果你将ioFileServlet.jsp放置于examples/servlets/ioFileServlet底下,那么相应的在ioFi leServlet.jsp文件中要修改action为action="../../servlet/readdata/ioFileServlet",此时UFO默认的 访问Servlet路径是http://localhost:80/examples/servlet/ioFileServlet/ioFileServlet,需要先返 回到examples底下,所以用到了相对路径。 五、 结束语 UFO中的Servlet的使用两个字:“简单”。
|