##1.開發Servlethtml
###第一個servlet程序java
執行頁面打印「hello world!」程序的功能。web
以後,在自定義的Servlet類中覆寫HttpServlet裏的doGet()方法,此方法定義以下:api
public void doGet(HttpServletRequest request , HttpServletResponse response)throws ServletExceptoin ,IOException { }
在導包的時候應該按照如下的順序才稱爲標準:瀏覽器
範例:編譯一個servlet服務器
import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { public void doGet(HttpServletRequest request , HttpServletResponse response)throws ServletException ,IOException { PrintWriter out=response.getWriter(); out.println("<html>"); out.println("<head><title>Hello</title></head>"); out.println("<body>"); out.println("<center>"); out.println("<h1>Hello World!</h1>"); out.println("</center>"); out.println("</body>"); out.println("</html>"); out.close(); } }
此servlet在用javac編譯時,會出現有幾個錯誤session
FirstServlet.java:3: 軟件包 javax.servlet 不存在 import javax.servlet.ServletException; ^ FirstServlet.java:4: 軟件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServlet; ^ FirstServlet.java:5: 軟件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServletRequest; ^ FirstServlet.java:6: 軟件包 javax.servlet.http 不存在 import javax.servlet.http.HttpServletResponse; ^ FirstServlet.java:8: 找不到符號 符號: 類 HttpServlet public class FirstServlet extends HttpServlet ^ FirstServlet.java:10: 找不到符號 符號: 類 HttpServletRequest 位置: 類 FirstServlet public void doGet(HttpServletRequest request , HttpServletResponse resp nse)throws ServletException ,IOException { ^ FirstServlet.java:10: 找不到符號 符號: 類 HttpServletResponse 位置: 類 FirstServlet public void doGet(HttpServletRequest request , HttpServletResponse resp nse)throws ServletException ,IOException { ^ FirstServlet.java:10: 找不到符號 符號: 類 ServletException 位置: 類 FirstServlet public void doGet(HttpServletRequest request , HttpServletResponse resp nse)throws ServletException ,IOException { 8 錯誤
以上的8個錯誤,都是針對於Servlet程序包的,爲何會有這樣的問題那? 實際上以前在講解JAVA基礎的時候說過JAVA的三個分支:app
由於如今使用的是JAVA SE的編譯環境,因此這些包確定不存在,則確定沒法經過編譯,既然沒法經過,就要找到這些擴展的包,並將其設置到classpath之中,這樣纔可使用,那麼這些包在哪裏呢?jsp
分析:Tomcat的執行流程:.jsp > .java >.class 文件,能夠發現,須要將一個.java編譯成*.class,實際上編譯出來的程序集已經很是相似於Servlet類,那麼證實在Tomcat中可能就存在了這樣的擴展包。servlet-api.jar文件post
能夠把它放到D:\java\jre\ext目錄下,此文件夾表示的是存放全部的擴展文件。
Servlet在web.xml文件中的配置
<servlet> <servlet-name>hello</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
通過以上配置以後,瀏覽器就能夠經過/hello訪問以前編寫的內容HelloWorld程序。 從第一個程序中能夠清楚的發現,一個Servlet程序除了須要編寫類以外還必須對其進行映射的配置,以後瀏覽器經過映射路徑找到一個Servlet程序。
一個Servlet程序能夠同時配置多個名稱
<servlet> <servlet-name>hello</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> <servlet> <servlet-name>hello2</servlet-name> <servlet-class>FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello2</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
##2.接受表單參數
既然在servlet中存在request對象,則能夠利用request對象來接受參數。
405錯誤,沒有方法支持。由於在以前編寫的Servlet程序中,使用到是doGet()處理, 因此只能處理get請求,若是要想能夠同時處理post提交,則要覆寫doPost()方法。
##3.Servlet的生命週期
##4.取得session對象
HttpSession是其類型,若是在一個servlet中要取得此對象,則必須依靠request對象完成,在此接口中有以下兩個方法: Public HttpSession getSession();表示直接取走當前的session Public HttpSession getSession(Boolean flag);取得session,若是session不存在,則建立,falg=true;
##5.取得application 對象
使用getServletContext()來代替application
ServletContext application = this.getServletContext();
##6.Servlet跳轉
RequestDispatcher rd=request.getRequestDispatcher("tiao.jsp"); request.setAttribute("name","cs"); rd.forward(request, response);