Java Servlet技术就是在服务器端创建响应用户请求对象的技术,被创建的对象习惯上称为一个Servlet对象。
1. Servlet对象的创建与使用
编写一个创建Servlet对象的类就是编写一个特殊类的子类,这个特殊的类就是javax.servlet.http包中的HttpServlet类。HttpServlet类实现了Servlet接口,实现了响应用户的方法
2.部署Servlet
1.如果Servlet类Hello的包名是:star.moon.首先将Servlet源文件编译生成字节码文件:Hello.class ,然后复制到:
Web服务目录\WEB-INF\classes\star\moon
2. 编写web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>star.moon.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/lookHello</url-pattern>
</servlet-mapping>
</web-app>
3.运行Servlet
根据web.xml部署文件来请求服务器执行一个Servlet对象
根据 web.xml文件中<servlet-mapping>标记指定的格式输入请求,
例如:
http://127.0.0.1:8080/ch7/lookHello
4. Servlet的生命周期
(1) 初始化Servlet对象。Servlet对象第一次被请求加载时,服务器初始化这个Servlet对象,即创建一个Servlet对象,对象调用init()方法完成必要的初始化工作。
(2)诞生的Servlet对象再调用service()方法响应客户的请求。
(3)当服务器关闭时,调用destroy()方法,消灭Servlet对象。
5. Servlet的共享变量
Servlet类是HttpServlet的一个子类,那么在编写子类时就可以声明某些成员变量。当用户请求加载Servlet时,服务器分别为每个用户启动一个线程,在该线程中,Servlet调用service()方法响应客户请求,那么Servlet类的成员变量是被所有线程共享的数据。
6. doGet()方法和doPost()方法
可以在Servlet类中重写doPost()或doGet()方法来响应用户的请求,如果不论用户请求类型是POST还是GET,服务器的处理过程完全相同,那么我们可以只在doPost()方法中编写处理过程,而在doGet()方法中再调用doPost()方法即可,或只在doGet()方法中编写处理过程,而在doPost()方法中再调用doGet()方法。如果根据请求的类型进行不同的处理,就需在两个方法中编写不同的处理过程。
7.重定向与转发
使用重定向方法sendRedirect()将用户重新定向到一个JSP页面或另一个Servlet
RequestDispatcher对象调用
void forward(ServletRequest request,ServletResponse response)
方法可以将用户对当前JSP页面或Servlet的请求转发给RequestDispatcher对象所指定的JSP页面或Servlet。
8.会话管理
request调用getSession()方法获取用户的会话对象:
HttpSession session=request.getSession(true);
一个用户在不同的Servlet中获取的session对象是完全相同的,不同的用户的session对象互不相同。
HelloBeijing.java:
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloBeijing extends HttpServlet
{ public void init(ServletConfig config) throws ServletException
{ super.init(config);
}
public void service(HttpServletRequest reqest,HttpServletResponse response)
throws IOException
{ response.setContentType("text/html;charset=GB2312");//设置响应的MIME类型
PrintWriter out=response.getWriter();//获得一个向客户发送数据的输出流
out.println("<html><body>");
out.println("<h2>北京奥运圆满成功!</h2>");
out.println("</body></html>");
}
}
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>star.moon.HelloBeijing</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/lookHello</url-pattern>
</servlet-mapping>
</web-app>
例子1
giveRadius.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY ><Font size=3>
<FORM action="getResult" method=post>
<BR>输入圆的半径:<Input Type=text name=radius>
<Input Type=submit value="提交">
</FORM>
</Font></BODY></HTML>
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("<html><body>");
String str=request.getParameter("radius"); //获取客户提交的信息
double r=0;
try{ r=Double.parseDouble(str);
if(r>=0)
{ out.print("<BR>半径是 "+r+" 的圆的面积:");
out.print("<BR>"+Math.PI*r*r);
}
else
{ out.print("<BR>圆的半径不可以是负数:"+r);
}
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
}
例子2
showLetter.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY ><Font size=3>
单击超链接查看希腊字母表:
<BR><A href="helpMeShow">查看希腊字母表</A>
</Font></BODY></HTML>
ShowLetter.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ShowLetter 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("<html><body>");
out.print("<BR>小写希腊字母: ");
for(char c='α';c<='ω';c++)
{ out.print(" "+c);
}
out.print("<BR>大写希腊字母: ");
for(char c='Α';c<='Ω';c++)
{ out.print(" "+c);
}
out.println("</body></html>");
}
}
例子3
showPI.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=5>
<A Href="computerPI" >参与计算PI的值<A>
</BODY></HTML>
ComputerPI.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ComputerPI extends HttpServlet
{ double sum=0,i=1,j=1;
int number=0;
public void init(ServletConfig config) throws ServletException
{super.init(config);
}
public synchronized void service(HttpServletRequest request,
HttpServletResponse response) throws IOException
{ response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html><body>");
number++;
sum=sum+i/j;
j=j+2;
i=-i;
out.println("servlet:"+getServletName()+"已经被请求了"+number+"次");
out.println("<BR>现在PI的值是:");
out.println(4*sum);
out.println("</body></html>");
}
}
例子4
method.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<P>输入一个数,提交给servlet(Post方式):
<FORM action="showSquare" method=post>
<Input Type=text name=number>
<Input Type=submit value="提交">
</FORM>
<P>输入一个数,提交给servlet(Get方式):
<FORM action="showSquareOrCubic" method=get>
<Input Type=text name=number>
<Input Type=submit value="提交">
</FORM>
<P>输入一个数,提交给servlet(Post方式):
<FORM action="showSquareOrCubic" method=get>
<Input Type=text name=number>
<Input Type=submit value="提交">
</FORM>
</BODY></HTML>
GetSqare.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetSquare 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();
out.println("<html><body>");
String number=request.getParameter("number"); //获取客户提交的信息
double n=0;
try{ n=Double.parseDouble(number);
out.print("<BR>"+number+"的平方是:");
out.print("<BR>"+n*n);
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
doPost(request,response);
}
}
GetSquareOrCubic.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetSquareOrCubic 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();
out.println("<html><body>");
String number=request.getParameter("number"); //获取客户提交的信息
double n=0;
try{ n=Double.parseDouble(number);
out.print("<BR>"+number+"的平方是:");
out.print("<BR>"+n*n);
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html><body>");
String number=request.getParameter("number"); //获取客户提交的信息
double n=0;
try{ n=Double.parseDouble(number);
out.print("<BR>"+number+"的立方是:");
out.print("<BR>"+n*n*n);
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
}
例子5
input.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<FORM action="verifyYourMessage" method=post>
输入姓名:<Input Type=text name=name>
<BR>输入年龄:<Input Type=text name=age>
<BR><Input Type=submit value="提交">
</FORM></BODY></HTML>
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"); //获取客户提交的信息
if(name.length()==0||name==null)
{ response.sendRedirect("input.jsp"); //重定向
}
else if(age.length()==0||name==null)
{ response.sendRedirect("input.jsp"); //重定向
}
else if(age.length()>0)
{ try { int numberAge=Integer.parseInt(age);
if(numberAge<=0||numberAge>=150)
{ response.sendRedirect("input.jsp");
}
else
{ RequestDispatcher dispatcher=
request.getRequestDispatcher("forYouShowMessage");
dispatcher.forward(request, response); //转发
}
}
catch(NumberFormatException e)
{ response.sendRedirect("input.jsp");
}
}
}
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){}
out.print("<Font color=blue size=4>您的姓名是:");
out.print(name);
out.print("<BR><Font color=pink size=3>您的年龄是:");
out.print(age);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
例子6
Boy.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Boy 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();
out.print("<html><body>");
HttpSession session=request.getSession(true); //获取客户的会话对象
session.setAttribute("number",new Integer(668));
out.println("您请求的servlet对象是:"+getServletName()+",您的会话的id:");
out.println("<BR>"+session.getId());
out.println("<BR>单击超链接请求另一个servlet:");
out.println("<A href=lookMySession>请求另一个servlet</A>");
out.print("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
Look.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Look 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();
out.print("<html><body>");
HttpSession session=request.getSession(true); //获取客户的会话对象
Integer number=(Integer)session.getAttribute("number");//获取会话中存储的数据
int n=number.intValue();
int m=n*n*n;
out.println("您请求的servlet对象是:"+getServletName()+",您的会话的id:");
out.println("<BR>"+session.getId());
out.println("<BR>您的会话中存储的整数:"+n);
out.println("<BR>"+n+"的立方:"+m);
out.print("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
例子7
getLetter.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=3>
<% session.setAttribute("message","请您猜字母");
char a[]=new char[26];
int m=0;
for(char c='a';c<='z';c++)
{ a[m]=c;
m++;
}
int randomIndex=(int)(Math.random()*a.length);
char ch=a[randomIndex]; //获取一个英文字母
session.setAttribute("savedLetter",new Character(ch));
%>
访问或刷新该页面可以随机得到一个英文字母.
<BR>单击超链接去猜出这个字母:<A href="inputLetter.jsp">去猜字母</A>
</Font></BODY></HTML>
inputLetter.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<% String message=(String)session.getAttribute("message"); //获取会话中的信息
%>
<Table border=1>
<FORM action="handleGuess" method=post>
<tr><td> 输入您的猜测(a~z之间的字母):</td>
<td><Input Type=text name=clientGuessLetter size=4><Input Type=submit value="提交"></td>
</tr><td> 提示信息:</td>
<td> <%= message%></td>
</FORM>
<FORM action="getLetter.jsp" method=post>
<tr><td>单击按钮重新开始: </td>
<td><Input Type=submit value="随机得到一个字母"></td>
</tr>
</FORM>
</Font></BODY></HTML>
HandleGuess.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleGuess extends HttpServlet
{ public void init(ServletConfig config) throws ServletException
{super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ HttpSession session=request.getSession(true); //获取客户的会话对象
String str=request.getParameter("clientGuessLetter");
Character guessLetter=str.trim().charAt(0); //获取客户猜测所提交的字母
Character savedLetter=(Character)session.getAttribute("savedLetter");
char realLetter=savedLetter.charValue();
if(Character.isUpperCase(guessLetter))
{ guessLetter=Character.toLowerCase(guessLetter);
}
if(guessLetter<realLetter)
{ session.setAttribute("message","您猜小了");
response.sendRedirect("inputLetter.jsp");
}
if(guessLetter>realLetter)
{ session.setAttribute("message","您猜大了");
response.sendRedirect("inputLetter.jsp");
}
if(guessLetter==realLetter)
{ session.setAttribute("message","您猜对了");
response.sendRedirect("inputLetter.jsp");
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
1. Servlet对象的创建与使用
编写一个创建Servlet对象的类就是编写一个特殊类的子类,这个特殊的类就是javax.servlet.http包中的HttpServlet类。HttpServlet类实现了Servlet接口,实现了响应用户的方法
2.部署Servlet
1.如果Servlet类Hello的包名是:star.moon.首先将Servlet源文件编译生成字节码文件:Hello.class ,然后复制到:
Web服务目录\WEB-INF\classes\star\moon
2. 编写web.xml文件
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>star.moon.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/lookHello</url-pattern>
</servlet-mapping>
</web-app>
3.运行Servlet
根据web.xml部署文件来请求服务器执行一个Servlet对象
根据 web.xml文件中<servlet-mapping>标记指定的格式输入请求,
例如:
http://127.0.0.1:8080/ch7/lookHello
4. Servlet的生命周期
(1) 初始化Servlet对象。Servlet对象第一次被请求加载时,服务器初始化这个Servlet对象,即创建一个Servlet对象,对象调用init()方法完成必要的初始化工作。
(2)诞生的Servlet对象再调用service()方法响应客户的请求。
(3)当服务器关闭时,调用destroy()方法,消灭Servlet对象。
5. Servlet的共享变量
Servlet类是HttpServlet的一个子类,那么在编写子类时就可以声明某些成员变量。当用户请求加载Servlet时,服务器分别为每个用户启动一个线程,在该线程中,Servlet调用service()方法响应客户请求,那么Servlet类的成员变量是被所有线程共享的数据。
6. doGet()方法和doPost()方法
可以在Servlet类中重写doPost()或doGet()方法来响应用户的请求,如果不论用户请求类型是POST还是GET,服务器的处理过程完全相同,那么我们可以只在doPost()方法中编写处理过程,而在doGet()方法中再调用doPost()方法即可,或只在doGet()方法中编写处理过程,而在doPost()方法中再调用doGet()方法。如果根据请求的类型进行不同的处理,就需在两个方法中编写不同的处理过程。
7.重定向与转发
使用重定向方法sendRedirect()将用户重新定向到一个JSP页面或另一个Servlet
RequestDispatcher对象调用
void forward(ServletRequest request,ServletResponse response)
方法可以将用户对当前JSP页面或Servlet的请求转发给RequestDispatcher对象所指定的JSP页面或Servlet。
8.会话管理
request调用getSession()方法获取用户的会话对象:
HttpSession session=request.getSession(true);
一个用户在不同的Servlet中获取的session对象是完全相同的,不同的用户的session对象互不相同。
HelloBeijing.java:
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloBeijing extends HttpServlet
{ public void init(ServletConfig config) throws ServletException
{ super.init(config);
}
public void service(HttpServletRequest reqest,HttpServletResponse response)
throws IOException
{ response.setContentType("text/html;charset=GB2312");//设置响应的MIME类型
PrintWriter out=response.getWriter();//获得一个向客户发送数据的输出流
out.println("<html><body>");
out.println("<h2>北京奥运圆满成功!</h2>");
out.println("</body></html>");
}
}
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>star.moon.HelloBeijing</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/lookHello</url-pattern>
</servlet-mapping>
</web-app>
例子1
giveRadius.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY ><Font size=3>
<FORM action="getResult" method=post>
<BR>输入圆的半径:<Input Type=text name=radius>
<Input Type=submit value="提交">
</FORM>
</Font></BODY></HTML>
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("<html><body>");
String str=request.getParameter("radius"); //获取客户提交的信息
double r=0;
try{ r=Double.parseDouble(str);
if(r>=0)
{ out.print("<BR>半径是 "+r+" 的圆的面积:");
out.print("<BR>"+Math.PI*r*r);
}
else
{ out.print("<BR>圆的半径不可以是负数:"+r);
}
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
}
例子2
showLetter.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY ><Font size=3>
单击超链接查看希腊字母表:
<BR><A href="helpMeShow">查看希腊字母表</A>
</Font></BODY></HTML>
ShowLetter.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ShowLetter 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("<html><body>");
out.print("<BR>小写希腊字母: ");
for(char c='α';c<='ω';c++)
{ out.print(" "+c);
}
out.print("<BR>大写希腊字母: ");
for(char c='Α';c<='Ω';c++)
{ out.print(" "+c);
}
out.println("</body></html>");
}
}
例子3
showPI.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=5>
<A Href="computerPI" >参与计算PI的值<A>
</BODY></HTML>
ComputerPI.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ComputerPI extends HttpServlet
{ double sum=0,i=1,j=1;
int number=0;
public void init(ServletConfig config) throws ServletException
{super.init(config);
}
public synchronized void service(HttpServletRequest request,
HttpServletResponse response) throws IOException
{ response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html><body>");
number++;
sum=sum+i/j;
j=j+2;
i=-i;
out.println("servlet:"+getServletName()+"已经被请求了"+number+"次");
out.println("<BR>现在PI的值是:");
out.println(4*sum);
out.println("</body></html>");
}
}
例子4
method.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<P>输入一个数,提交给servlet(Post方式):
<FORM action="showSquare" method=post>
<Input Type=text name=number>
<Input Type=submit value="提交">
</FORM>
<P>输入一个数,提交给servlet(Get方式):
<FORM action="showSquareOrCubic" method=get>
<Input Type=text name=number>
<Input Type=submit value="提交">
</FORM>
<P>输入一个数,提交给servlet(Post方式):
<FORM action="showSquareOrCubic" method=get>
<Input Type=text name=number>
<Input Type=submit value="提交">
</FORM>
</BODY></HTML>
GetSqare.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetSquare 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();
out.println("<html><body>");
String number=request.getParameter("number"); //获取客户提交的信息
double n=0;
try{ n=Double.parseDouble(number);
out.print("<BR>"+number+"的平方是:");
out.print("<BR>"+n*n);
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{
doPost(request,response);
}
}
GetSquareOrCubic.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class GetSquareOrCubic 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();
out.println("<html><body>");
String number=request.getParameter("number"); //获取客户提交的信息
double n=0;
try{ n=Double.parseDouble(number);
out.print("<BR>"+number+"的平方是:");
out.print("<BR>"+n*n);
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html><body>");
String number=request.getParameter("number"); //获取客户提交的信息
double n=0;
try{ n=Double.parseDouble(number);
out.print("<BR>"+number+"的立方是:");
out.print("<BR>"+n*n*n);
}
catch(NumberFormatException e)
{ out.print("<H1>请输入数字字符! </H1>");
}
out.println("</body></html>");
}
}
例子5
input.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<FORM action="verifyYourMessage" method=post>
输入姓名:<Input Type=text name=name>
<BR>输入年龄:<Input Type=text name=age>
<BR><Input Type=submit value="提交">
</FORM></BODY></HTML>
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"); //获取客户提交的信息
if(name.length()==0||name==null)
{ response.sendRedirect("input.jsp"); //重定向
}
else if(age.length()==0||name==null)
{ response.sendRedirect("input.jsp"); //重定向
}
else if(age.length()>0)
{ try { int numberAge=Integer.parseInt(age);
if(numberAge<=0||numberAge>=150)
{ response.sendRedirect("input.jsp");
}
else
{ RequestDispatcher dispatcher=
request.getRequestDispatcher("forYouShowMessage");
dispatcher.forward(request, response); //转发
}
}
catch(NumberFormatException e)
{ response.sendRedirect("input.jsp");
}
}
}
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){}
out.print("<Font color=blue size=4>您的姓名是:");
out.print(name);
out.print("<BR><Font color=pink size=3>您的年龄是:");
out.print(age);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
例子6
Boy.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Boy 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();
out.print("<html><body>");
HttpSession session=request.getSession(true); //获取客户的会话对象
session.setAttribute("number",new Integer(668));
out.println("您请求的servlet对象是:"+getServletName()+",您的会话的id:");
out.println("<BR>"+session.getId());
out.println("<BR>单击超链接请求另一个servlet:");
out.println("<A href=lookMySession>请求另一个servlet</A>");
out.print("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
Look.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Look 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();
out.print("<html><body>");
HttpSession session=request.getSession(true); //获取客户的会话对象
Integer number=(Integer)session.getAttribute("number");//获取会话中存储的数据
int n=number.intValue();
int m=n*n*n;
out.println("您请求的servlet对象是:"+getServletName()+",您的会话的id:");
out.println("<BR>"+session.getId());
out.println("<BR>您的会话中存储的整数:"+n);
out.println("<BR>"+n+"的立方:"+m);
out.print("</body></html>");
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}
例子7
getLetter.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=3>
<% session.setAttribute("message","请您猜字母");
char a[]=new char[26];
int m=0;
for(char c='a';c<='z';c++)
{ a[m]=c;
m++;
}
int randomIndex=(int)(Math.random()*a.length);
char ch=a[randomIndex]; //获取一个英文字母
session.setAttribute("savedLetter",new Character(ch));
%>
访问或刷新该页面可以随机得到一个英文字母.
<BR>单击超链接去猜出这个字母:<A href="inputLetter.jsp">去猜字母</A>
</Font></BODY></HTML>
inputLetter.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY ><Font size=2>
<% String message=(String)session.getAttribute("message"); //获取会话中的信息
%>
<Table border=1>
<FORM action="handleGuess" method=post>
<tr><td> 输入您的猜测(a~z之间的字母):</td>
<td><Input Type=text name=clientGuessLetter size=4><Input Type=submit value="提交"></td>
</tr><td> 提示信息:</td>
<td> <%= message%></td>
</FORM>
<FORM action="getLetter.jsp" method=post>
<tr><td>单击按钮重新开始: </td>
<td><Input Type=submit value="随机得到一个字母"></td>
</tr>
</FORM>
</Font></BODY></HTML>
HandleGuess.java
package star.moon;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleGuess extends HttpServlet
{ public void init(ServletConfig config) throws ServletException
{super.init(config);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ HttpSession session=request.getSession(true); //获取客户的会话对象
String str=request.getParameter("clientGuessLetter");
Character guessLetter=str.trim().charAt(0); //获取客户猜测所提交的字母
Character savedLetter=(Character)session.getAttribute("savedLetter");
char realLetter=savedLetter.charValue();
if(Character.isUpperCase(guessLetter))
{ guessLetter=Character.toLowerCase(guessLetter);
}
if(guessLetter<realLetter)
{ session.setAttribute("message","您猜小了");
response.sendRedirect("inputLetter.jsp");
}
if(guessLetter>realLetter)
{ session.setAttribute("message","您猜大了");
response.sendRedirect("inputLetter.jsp");
}
if(guessLetter==realLetter)
{ session.setAttribute("message","您猜对了");
response.sendRedirect("inputLetter.jsp");
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException
{ doPost(request,response);
}
}