《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){}