servlet+重定向+轉發+數據傳遞

servlet+重定向+轉發+數據傳遞

  • 1,最簡單的servlet使用

 i,寫一個類,類名以Servlet結束(不強制)
   清單:src/servlet/TestServlet.java
   TestServlet extends HttpServlet
   override method:
 //頁面form中的method以post方式發送調用該方法
 doPost(HttpServletRequest req,HttpServletResponse resp)
 //頁面form中的method以get方式發送調用該方法
 doGet(HttpServletRequest req,HttpServletResponse resp)
 
ii,配置servlet
  清單:/WebRoot/WEB-INF/web.xml
  //配置servlet在程序中對應的類
  <servlet>
       //指定servlet名字,用於在servlet-mapping中進行對應
        <servlet-name>test</servlet-name>
        //指定servlet對應的class
        <servlet-class>servlet.TestServlet</servlet-class>
   </servlet>
  <servlet-mapping>
        //對應servlet名字
        <servlet-name>test</servlet-name>
        //在頁面的form中的action爲test時匹配該mapping(action中不需要帶'/')
        <url-pattern>/test</url-pattern>
   </servlet-mapping>

 iii,寫界面
   <form action="test" method="get/post">
       //elements
      <input type="submit" value="submit"/>
   </form>

流程:
 用戶訪問,提交請求,服務器讀取web.xml,匹配請求對應的servlet-mapping,
 進而匹配servlet對應的class,根據請求執行對應的doGet/doPost,doGet/doPost中
 處理完數據進行重定向或者轉發到另一個頁面。在這期間,可以進行數據傳遞


重定向(redirect):客戶端的要求當前服務器無法達到,請求別的服務器幫助,當前服務器相當於代理
 servlet中
        response.sendRedirect("URL");
 jsp中
        <%response.sendRedirect("URL")%>
        i,可以是任何一個地址,也可以是jpg,png,avi等文件
        ii,改變了瀏覽器的訪問地址
 
  
轉發(forward):屬於服務端的動作,有一系列完整的客戶端請求響應動作,無需別的服務器幫助
 servlet中
        request.getRequestDispatcher("本工程路徑[默認爲WebRoot]").forward();
 jsp中
        <jsp:forward page="本工程路徑[默認爲WebRoot]"/>
     i,只能是本工程的文件,不能是servlet等類
     ii,不改變瀏覽器的訪問地址

數據傳遞
 i,jsp的隱式對象(9個)容器
  request(客戶端每一次請求都將生成一個request,請求結束request被銷燬)
      servlet傳值
                request.setAttribute("attName","attValue");
      jsp拿值
          i,<%request.getAttribute("attName")%> // 使用隱式對象拿值
          ii,${attName} //使用El拿值


  cookie(客戶端所攜帶的信息,由request獲得,由客戶清空信息)
      servlet中拿值
          request.getCookies() return Cookie[]


  session(客戶端訪問服務端的整個過程[認爲是在交談所以稱爲會話],
    瀏覽器關閉丟失sessionId,隨後服務將銷燬session)
      servlet傳值
          session.setAttribute("attName","attValue");
      jsp拿值
          i,session.getAttribute("attName");
          ii,${attName}
  application(服務器開啓對象被生成,關閉被銷燬)
   application實際對應的是ServletContext
      servlet傳值
          this.getServletContext().setAttribute("attName","attValue");
      jsp拿值
          i,<%application.getAttribute("attname')%>
          ii,${attName}
  
  request,response,cookie,session和application解釋
   學生和老師交談,學生問一句,老師答一句,
   request表示學生問的信息
   response表示老師答的信息
   cookie表示學生本身攜帶的信息,例如學生的名字。
   session表示整個交談都一直存在的信息,例如學生一直圍繞一道題而產生很多的問題,
    那麼這道題可以理解爲session,其他的題可以理解爲request。
   application表示所有學生在與老師交談中都可以拿到的信息,可以理解成在javaSE中的
   static修飾後的效果,每個方法爲一個學生。每個客戶訪問都共享一個application對象。
 

ii,url傳值
  xx.jsp?parameterName = parameterValue & parameterName1 = parameterValue1
  獲得值
   request.getParameter(parameterName);
  (EL無法獲得參數內容)
 
 iii,form傳值(相當於request.setAttribute("attName","attValue"))
  前提:可攜帶值的元素(text,hidden,,,)帶有name屬性
  servlet拿值
        request.getAttribute("name");

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章