Java綠地(~ming~)

          Java 草地

          常用鏈接

          統(tǒng)計

          最新評論

          Servlet實例應用

          1.雖然可以用:String name=getServletConfig().getServletName()得到Servlet名稱,但可以從GenericServlet直接繼承getServletName方法更方便. Service就不用象doPost激活了

          public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  response.setContentType("text/html");

                  PrintWriter out=response.getWriter(); out.print( this.getServletName( ) );

                  Enumeration e=this.getInitParameterNames();//得到多個參數(shù)玫舉數(shù)組

                  while(e.hasMoreElements()){  String key=(String)e.nextElement();

                    String value=getInitParameter(key);    out.print(key+"="+value);  }

          ServletContext context=this.getServletContext();//也可從GenericServlet中直接得到

          String path=context.getRealPath("/"); out.print(path); 得到:C:\tomcat\webapps\test\



          2.
          ServletContext得到初始化參數(shù):(從GenericServlet中直接得到)

          public class Context extends HttpServlet {

          public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException   { PrintWriter out=response.getWriter();

          Enumeration e=getServletContext().getInitParameterNames();

                while(e.hasMoreElements()){       String key=(String)e.nextElement();

          String value=getServletContext().getInitParameter(key);out.print(key+"="+value);}}}

          ServletContext在web.xml中的配置: <servlet>   <servlet-name>Context</servlet-name>

                                      <servlet-class>test.Context</servlet-class>  </servlet>

          不同于<init-param>在Servlet內(nèi)部配  <context-param><param-name>company</param-name>

                                        <param-value>witbridge</param-value></context-param>

           



          3.使用輸入流訪問資源文件:public class FileAccess extends HttpServlet {

          public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {PrintWriter out=response.getWriter();

          FileInputStream fis=new FileInputStream("it315.properties");

          //文件必和tomcat啟動程序同級別目錄: user=root,否則全路徑:c:\\test\\it315.properties

          Properties props=new Properties(); props.load(fis);

          //Properties保存在流中或從流中加載, load從輸入流中讀取屬性列表,getPXX返回String

          out.print(props.getProperty("user")); fis.close();}} //用指定鍵在屬性列表中搜索屬性




          4.使用ServletContext接口訪問資源文件:public class Resource extends HttpServlet {

          protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter();

          URL  urlIt315=this.getServletContext().getResource("/it315.properties");

          InputStream ips=this.getServletContext().getResourceAsStream("/it315.properties");

          out.print(urlIt315.toString());Properties props=new Properties();props.load(ips);

          out.print(props.getProperty("dataBase"));   } }//好處:路徑與調(diào)試環(huán)境無關,只要/

          setHeader(java.lang.String name, java.lang.String value)



          5.HttpServletResponse的應用:響應消息頭:如setContentType(“text/html;charset=””);

          a.SetHeader(自動刷新,URL覆蓋)public class Refresh extends HttpServlet {

              protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //response.setHeader("Refresh", "2");

          response.setHeader("Refresh", 1;URL=http://localhost:8080/ ");  } }

          b.禁止瀏覽器緩存顯示動態(tài)圖片:public class Cache extends HttpServlet {

              protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html ");

              response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache");

              response.setHeader("Cache-Control", "no-cache"); //防止不同瀏覽器支持不同響應頭

                  PrintWriter out=response.getWriter();    out.print(Math.random()); }}

          response.setBufferSize(0);int len=response.getBufferSize( );out.print(len);//8192

           



          6.RequestDispatcher(共享數(shù)據(jù)和URL不變)和response.SendRidirect:

          a.Include:被包含的Servlet程序不能改變響應消息的狀態(tài)碼和響應頭,如果他里面存在這樣的語句執(zhí)行結(jié)果將被忽略:public class Included extends HttpServlet {

          protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

          response.setContentType("text/html;charset=GB2312");//被包含執(zhí)行時將被忽略

          PrintWriter out=response.getWriter();    out.print("中國"+"<br>");

          out.print("URL"+request.getRequestURI()+"<br>");///test/servlet/Include根目錄下

          out.print("QueryString:"+request.getQueryString()+"<br>");//為null,得到?后面語句

          out.print("Param p1:"+request.getParameter("p1")+"<br>");}} //可以得到參數(shù)的

          測試:public class Include extends HttpServlet {

          protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

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

                  PrintWriter out=response.getWriter();        String china="中國";

          RequestDispatcher rd=this.getServletContext().getRequestDispatcher

          ("/servlet/Included?p1="+china); rd.include(request, response);} }//從Config中繼承

          b.forward:在調(diào)用者和被調(diào)用者程序中設置響應狀態(tài)碼和狀態(tài)頭都不會被忽略,URL仍為調(diào)用方

          response.setContentType("text/html;charset=GB2312");//也需要設置,轉(zhuǎn)向全部元素全路徑

          RequestDispatcher rd=this.getServletContext().getRequestDispatcher("/index.jsp");

          rd.forward(request, response);

          c:sendRedirect方法用于生成302響應碼和Location響應頭,從而通知客戶端去重新訪問

          Location響應頭中指定的URL,調(diào)用和被調(diào)用者之間就不能共同享用request和response對象.

          response.sendRedirect(request.getContextPath()+”/page.jsp”);

           



          7. 為防止用戶在等待過程中多次提交數(shù)據(jù):

          <script>  Var isCommitted=false;//通過返回值進行判斷

           Function checkPost(){ if(!isCommitted){isCommitted=true;return true;}

          Else { alert(“不能重復提交表單”);return false;} } </script>

          posted on 2007-07-10 20:28 mrklmxy 閱讀(1745) 評論(1)  編輯  收藏

          評論

          # re: Servlet實例應用[未登錄] 2012-08-21 09:41 aa

          31  回復  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 沙洋县| 轮台县| 兴宁市| 张家川| 宁阳县| 武强县| 方正县| 砚山县| 裕民县| 大关县| 陆川县| 固始县| 五寨县| 道真| 黄梅县| 鱼台县| 新乡市| 游戏| 和林格尔县| 忻州市| 普洱| 德化县| 本溪| 湄潭县| 定南县| 两当县| 奉化市| 临高县| 观塘区| 濉溪县| 鹰潭市| 昆明市| 额敏县| 客服| 海安县| 宜黄县| 清丰县| 莆田市| 莒南县| 台州市| 龙岩市|