以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  Servlet/JSP的配置使用,原来这么简单!  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=74786)


--  作者: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的使用两个字:“简单”。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
1,453.125ms