設定 Header 都是 HttpServletResponse 的方法
首先是最基本的 setHeader(),第一個參數是 Header 名稱,第二個是 Header 值。
@WebServlet( urlPatterns = "/set-header" ) public class SetHeader extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setHeader("Content-Type", "text/plain"); resp.setHeader("Content-Type", "text/html"); } }
這時候在 Response Headers 內可以看到
Content-Type: text/html
可以看到我們重複設定的話,只有最後的才會被設定進去
另外還有一個 addHeader() 方法,一樣第一個參數是 Header 名稱,第二個是 Header 值。
@WebServlet( urlPatterns = "/add-header" ) public class AddHeader extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.addHeader("Test-Header", "aaa"); resp.addHeader("Test-Header", "bbb"); resp.addHeader("Test-Header", "ccc"); } }
這時候在 Response Headers 內可以看到
Test-Header: aaa Test-Header: bbb Test-Header: ccc
這時候會看到同個 header 有帶三個值。
接下來,我們來看看怎麽取用這兩種值吧~
如果是 Header 只有一個值,我們可以簡單的使用 HttpServletRequest 的 getHeader() 方法,他就是單純的回傳一個字串值。
@WebServlet( urlPatterns = "/get-header" ) public class GetHeader extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String contentHeader = req.getHeader("Content-Type"); String testHeader = req.getHeader("Test-Header"); resp.getWriter().println("Content-Type -> " + contentHeader); resp.getWriter().println("Test-Header -> " + testHeader); } } // output: // // Content-Type -> text/html // Test-Header -> aaa
可以看到我們的 Content-Type 值如預期的取得了,可是 Test-Header 就不如預期了。
要取的多個值的話可以使用 getHeaders() 方法,它會回傳一個 Enumeration<String>
@WebServlet( urlPatterns = "/get-header" ) public class GetHeader extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Enumeration<String> testHeaders = req.getHeaders("Test-Header"); PrintWriter out = resp.getWriter(); while (testHeaders.hasMoreElements()) { String testHeader = testHeaders.nextElement(); out.println("Test-Header -> " + testHeader); } } } // output // // Test-Header -> aaa // Test-Header -> bbb // Test-Header -> ccc
這樣就沒問題囉!