分页: 1 / 1

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

发表于 : 2009-05-12 15:33
nbsven
一、相关软件介绍
  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,你就可以成功的看到几个超大的welcome 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下新建个文件名为readdata的文件夹,将编译好的ioFileServlet.class文件放入,在浏览器中输入http://localhost:80/examples/ioFileServlet.jsp,你会看到等待你要输入内容的页面,提交之后便调用了Servlet文件ioFileServlet.class;如果你将ioFileServlet.jsp放置于examples/servlets/ioFileServlet底下,那么相应的在ioFileServlet.jsp文件中要修改action为action="../../servlet/readdata/ioFileServlet",此时UFO默认的访问Servlet路径是http://localhost:80/examples/servlet/ioFileServlet/ioFileServlet,需要先返回到examples底下,所以用到了相对路径。

五、 结束语
UFO中的Servlet的使用两个字:“简单”。