一、常見狀態碼java
200:請求成功web
302:請求重定向小程序
304:請求資源沒有改變,訪問本地緩存api
404:請求資源不存在。一般是用戶路徑編寫錯誤,也多是服務器資源已刪除。瀏覽器
500:服務器內部錯誤。一般程序拋異常。緩存
二、Tomcat的目錄結構服務器
bin目錄下有開啓和關閉的命令app
Webapps下是之後發佈web程序的地方【打成war包放在webapps下】webapp
三、什麼是Servletide
Servlet是運行在服務端的Java小程序,是sun公司提供一套規範(接口),用來處理客戶端請求、響應給瀏覽器的動態資源。但servlet的實質就是java代碼,經過java的API動態的向客戶端輸出內容。
四、servlet三種建立方式
生命週期
出生:第一次請求到達,servlet出生
服務:每次請求到達,都會調用service服務
死亡:當服務器中止,容器(服務器)會調用destroy方法銷燬servlet
第一種:實現servlet接口
步驟
1寫一個類實現了servlet接口,重寫service方法
2在web.xml中配置該servlet
package com.zy.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class MyServlet implements Servlet{ //普通的類 //要想讓該類具有接收請求,完成響應的功能 @Override public void destroy() {//銷燬---servlet生命結束 // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated method stub return null; } @Override public String getServletInfo() { // TODO Auto-generated method stub return null; } @Override public void init(ServletConfig arg0) throws ServletException {//出生---初始化 System.out.println("servlet出生了"); } @Override //請求 //響應 public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // ---最重要的(接收請求,完成響應) //接收請求 System.out.println("收到請求,進入servlet的service方法"); //響應 response.getWriter().write("hello world"); //生命-- //出生--服務--死亡 } }
<!-- 配置servlet --> <servlet> <servlet-name>qwer</servlet-name> <servlet-class>com.zy.servlet.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>qwer</servlet-name><!-- 與上邊匹配 --> <url-pattern>/abc</url-pattern><!--url 請求規則 --> </servlet-mapping>
第二種:繼承HttpServlet
package com.zy.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.net.httpserver.HttpServer; public class MyServlet2 extends HttpServlet{ //重寫doGet和doPost[] @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //寫代碼!!!!!!!!!!!!!!!! System.out.println("收到請求,進入了doGet方法"); resp.getWriter().write("hello zhiyou"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //doPost通常直接調用doGet doGet(req, resp); } }
<servlet> <servlet-name>abc</servlet-name> <servlet-class>com.zy.servlet.MyServlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>abc</servlet-name> <url-pattern>/bcd</url-pattern> </servlet-mapping>
第三種:註解版
package com.zy.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class MyServlet3 */ //基於最新註解版servlet(不用配置web.xml,用註解代替了這段配置) @WebServlet("/MyServlet3")//[這就是url-pattern] public class MyServlet3 extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("接收請求,進入doGet方法"); response.getWriter().write("hello ruhua"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
五、url-pattern
三種模式:
徹底匹配: /abc
目錄匹配: /aaa/bbb/*
後綴匹配:*.action
package com.zy.servlet2; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ParameterServlet */ @WebServlet("/ParameterServlet") public class ParameterServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //若是請求中含有參數,咱們怎麼去接收到servlet中 //url 傳參方式(?好傳參,參數以鍵值對出現) //localhost:8080/web01/ParameterServlet?name=xiaoming //中文參數 //localhost:8080/web01/ParameterServlet?name=老王 //n個參數 //localhost:8080/web01/ParameterServlet?name=老王&age=10&address=湖南 //怎麼接收參數 //java面向對象的思想:xxx對象處理xxx事情 //分析事情:接收請求中的參數問題 //調用request的api String parameter = request.getParameter("name");//根據鍵取值 String parameter2 = request.getParameter("age"); String parameter3 = request.getParameter("address"); System.out.println(parameter); System.out.println(parameter2); System.out.println(parameter3); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }