jsp第七课-java servlet基础

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);
   }
}

首先引入一个WebBrowser在需要打印的页面,可以直接添加: 复制代码 代码如下: <object id="WebBrowser" classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height="0" width="0"> </object> 2 .页面设置和打印预览 如下所示,直接调用即可 复制代码 代码如下: document.all.WebBrowser.ExecWB(6,6) 直接打印 document.all.WebBrowser.ExecWB(8,1) 页面设置 document.all.WebBrowser.ExecWB(7,1) 打印预览 3 隐藏不打印的页面元素和分页 CSS 有个Media 属性,可以分开设置打印和显示的格式。 如 <style media="print" type="text/css"> …</style> 中间的格式将只在打印时起作用,不会影响显示界面。 所以可以设定 <style media="print" type="text/css"> .Noprint{display:none;} .PageNext{page-break-after: always;} </style> 然后给不想打印的页面元素添加: class="Noprint" ,那就不会出现在打印和打印预览中了。 想分页的地方添加: <div class="PageNext"></div> 就可以了。 4.打印页面的特定部分 通过将需要打印的特定部分另建一个页面,然后装入主页面的一个IFrame中,再调用IFrame的打印方法,只打印IFrame中的内容实现的。 如: <iframe visible" name="FrameId" width="100%" height="30%" src="NeedPrintedPage.asp"></iframe> 下面的pringFrame js函数将只打印Iframe中的内容,可以直接引用使用,如printFrame(FrameId); 复制代码 代码如下: window.print = printFrame; // main stuff function printFrame(frame, onfinish) { if ( !frame ) frame = window; function execOnFinish() { switch ( typeof(onfinish) ) { case "string": execScript(onfinish); break;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值