Servlet

一、常見狀態碼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);
    }

}
相關文章
相關標籤/搜索