Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

Servlet/JSP的配置使用,原来这么简单!

[复制链接]
nbsven 发表于 2009-5-12 13:33:32 | 显示全部楼层 |阅读模式
一、相关软件介绍
  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">
  请输入文件内容:
</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的使用两个字:“简单”。
pc77maikongjian 发表于 2009-5-12 14:10:38 | 显示全部楼层
感谢楼主的分享哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-17 20:20 , Processed in 0.033549 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表