《Web应用程序设计实验》实验指导书-实验八

  • 格式:doc
  • 大小:167.50 KB
  • 文档页数:5

实验八 Servlet技术的应用

一、实验目的

(1)、掌握怎样编写和使用Servlet。

(2)、掌握编写和配置和Servlet有关的web.xml文件。

(3)、掌握在Servlet中使用session的方法;熟悉把用户对某JSP页面或Servlet的请求转发给另一个JSP页面或Servlet的方法。

二、实验工具

(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载

(2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003

(3)Tomcat服务器,也可以从网上免费下载

(4)Netbeans 4.1或Jcreator

三、实验原理与内容

(1)、有些Web应用可能需要JSP+JavaBean+Servlet来完成,需要服务器再创建一些Servlet对象,配合JSP页面来完成整个Web应用程序的工作。本小节实验将介绍怎样编写创建Servlet对象的类,怎样在Tomcat服务器上保存编译后的字节码、编写部署文件,怎样请求Tomcat服务器创建一个Servlet对象。

① 复制需要的jar文件:为了编译Servlet源文件,需要HttpServlet、HttpServletRequest等类,JDK内置包中并不包含这些类文件,用户需要将Tomcat服务器中common\lib目录下的servlet-api.jar文件复制到JDK安装目录的\jre\lib\ext子目录中。

② 添加Servlet类的字节码文件:编写如下的Servlet类:Computer.java,保存在D:盘根目录下,编译该类,形成star\moon\Computer.class,将此文件夹保存到Tomcat当前Web目录(如:ROOT目录)下的\WEB-INF\classes子目录中,重新启动Tomcat。

Computer.java:

package star.moon;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Computer extends HttpServlet

{ public void init(ServletConfig config) throws ServletException

{ super.init(config);

}

public void service(HttpServletRequest request,HttpServletResponse response)

throws IOException

{ response.setContentType("text/html;charset=GB2312");

PrintWriter out=response.getWriter();

out.println("");

String number=request.getParameter("number"); //获取客户提交的信息。

double n=0;

try{ n=Double.parseDouble(number);

out.print(""+number+"的平方根是:"); out.print(""+Math.sqrt(n));

}

catch(NumberFormatException e)

{ out.print("

}

out.println("");

}

}

③编写部署文件:在 Web当前目录\WEB-INF\classes子目录中,用记事本打开web.xml文件,在“”标记下,添加如下几行并保存:

computer

puter

computer

/getResult

④运行Servlet:编写givenumber.jsp文件,该文件通过表单向Servlet提交一个正实数,Servlet负责计算这个数的平方根并返回给客户。

givenumber.jsp

<%@ page contentType="text/html;Charset=GB2312" %>

输入一个数,servlet求这个数的平方根:

(2)、当用户请求一个Servlet时,Sevlet会调用doPost()或doGet()方法响应用户的请求。doPost()或doGet()方法的两个参数类型都是HttpServletRequest和HttpServletResponse,而且由服务器负责实例化,因此在Servlet类中可以直接使用这两个参数。本小节实验学习在Servlet类中使用HttpServletResponse类的重定向方法sendRedirect()和RequestDispatcher类的转发方法forward()。

①添加Servlet类的字节码文件:编写如下的两个Servlet类:Verify.java和ShowMessage.java,保存在D:盘根目录下,编译该类,形成***.class的字节码文件,将此文件夹保存到Tomcat当前Web目录(如:ROOT目录)下的\WEB-INF\classes子目录中。

Verify.java

package star.moon;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class Verify extends HttpServlet

{ public void init(ServletConfig config) throws ServletException

{super.init(config);

} public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{ String name=request.getParameter("name"); //获取客户提交的信息

String age=request.getParameter("age"); //获取客户提交的信息

int numberAge=Integer.parseInt(age);

if(name.length()==0||name==null)

{ response.sendRedirect("input.jsp"); //重定向

}

else if(age.length()==0||name==null)

{ response.sendRedirect("input.jsp"); //重定向

}

else if(numberAge<=0||numberAge>=150)

{ response.sendRedirect("input.jsp");

}

else

{ RequestDispatcher dispatcher=

request.getRequestDispatcher("forYouShowMessage");

dispatcher.forward(request, response); //重定向

}

}

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{ doPost(request,response);

}

}

ShowMessage.java

package star.moon;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class ShowMessage extends HttpServlet

{ public void init(ServletConfig config) throws ServletException

{super.init(config);

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{ response.setContentType("text/html;charset=GB2312");

PrintWriter out=response.getWriter();

String name=request.getParameter("name"); //获取客户提交的信息

String age=request.getParameter("age"); //获取客户提交的信息

try{ byte bb[]=name.getBytes("ISO-8859-1");

name=new String(bb,"gb2312");

}

catch(Exception exp){}