1. 程式人生 > >Servlet中的一些基本方法

Servlet中的一些基本方法

獲取servlet配置資訊(需要在web.xml中進行配置)

getServletConfig()
然後getInitParameter()
獲getInitParameterNames()
然後就可以獲取web.xml中的配置資訊了在這裡插入圖片描述

獲取ServletContext物件

1.getServletConfig().getServletContext();
2.getServletContext();

  • ServletContext物件中的方法
  • 1.setAttribute
  • 2.getAttribute
  • 3.removeAttribute
  • 域物件的作用:
  • 1.存值取值
  • 2.進行傳值
  • 3.可以獲取全域性配置資訊 web.xml
  • 4.可以獲取專案中所有資源的在TomCat上的絕對路徑 getRealPath
  • 5.可以進行請求轉發
    可以在一個servlet進行setAttribute,然後在另一個servlet中getAttribute獲取屬性

3.獲取伺服器上的真實路徑
String realPath1 = application.getRealPath("/WEB-INF/classes/a.properties");

4.利用Context域進行轉發

        ServletContext application =
getServletContext(); // 獲取請求轉發器 引數:要轉發到的路徑 // 注意:請求轉發只能轉發站內的路徑 並且傳入的地址相對於工程的 /* * 請求轉發注意 * 1.請求轉發使用者只發送了一次請求 * 2.網址沒有發生變化(使用者並不知道內部你怎麼操作) * 3.只能轉發站內 */ RequestDispatcher dispatcher = application.getRequestDispatcher("/demo07"
); // 轉發請求 dispatcher.forward(request, response);

響應(response)

/*
 * 響應(response)響應回瀏覽器(使用者)
 * 響應行
 *      響應狀態碼 200(成功) 302(重定向) http協議1.1
 * 響應頭
 *      告訴瀏覽器 我要做什麼
 * 響應體
 *      響應的內容
 */
public class Demo08 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TomCat預設編碼格式 Tomcat9 之前 是ISO-8859-1
        // response.setCharacterEncoding("UTF-8");
        // 設定響應頭告訴瀏覽器以什麼編碼格式來解析響應
        // response.setHeader("Content-Type", "text/html;charset=UTF-8");
        
        // 相當於上面兩句二合一
        response.setContentType("text/html;charset=UTF-8");
        // 利用response獲取 字元流 和 位元組流
        PrintWriter writer = response.getWriter();
        writer.write("你好");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

下載圖片

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 下載圖片
        // 獲取圖片在伺服器上的真實路徑
        ServletContext application = getServletContext();
        String realPath = application.getRealPath("/WEB-INF/classes/哈哈.png");
        // 通過file類獲取檔名
        File file = new File(realPath);
        String fileName = file.getName();
        // 需要設定圖片名的編碼格式iso-8859-1
        
        fileName = new String(fileName.getBytes(), "iso-8859-1");
        // 通過設定響應頭來告訴瀏覽器 我給你的資源 下載用
        response.setHeader("content-disposition", "attachment;filename=" + fileName);
        // 設定下載內容的格式(去TomCat下的config中的web.xml查詢資源格式)
        response.setHeader("Content-Type", "image/png");
        // 讀取圖片 位元組流
        FileInputStream fis = new FileInputStream(realPath);
        ServletOutputStream outputStream = response.getOutputStream();
        // 使用響應中的位元組流 將圖片寫回瀏覽器
        byte[] b = new byte[1024];
        int len;
        while ((len = fis.read(b)) != -1) {
            outputStream.write(b, 0, len);
        }
        fis.close();
    }

response重定向

    private void chongdingxiang(HttpServletResponse response) {
        System.out.println("你好1");
        // 通過響應response進行請求重定向
        // 可以進行站內重定向  相當於8080後的斜槓
        // 也可以進行站外重定向
        response.setHeader("location", "/xx/demo11");
        // 需要新增重定向的狀態碼
        response.setStatus(302);
        /*
         * 注意
         * 1.重定向 傳送了兩次請求(網址變了)
         * 2.重定向 會執行完第一次請求的方法 在進行第二次請求
         */
        System.out.println("成了");
    }

request

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 獲取請求方式 get/post GET
        String method = request.getMethod();
        System.out.println(method);
        // 獲取使用者請求的url(統一資源定位符) http://localhost:8080/xx/demo12
        StringBuffer requestURL = request.getRequestURL();
        System.out.println(requestURL);
        // 獲取使用者請求的uri /xx/demo12
        String requestURI = request.getRequestURI();
        System.out.println(requestURI);
        // 獲取相對路徑 /xx
        String contextPath = request.getContextPath();
        System.out.println(contextPath);
        //http://localhost:8080/xx/demo12?username=wl&password=123
        // 獲取使用者請求的引數    引數相當於key
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
    }