這篇文章主要介紹了JavaEE中Servlet核心API怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)主要從事做網站、成都做網站、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務威海,10多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
Servlet是JavaWeb的三大組件之一(Servlet、Filter、Listener),它屬于動態(tài)資源。Servlet的作用是處理請求,服務器會把接收到的請求交給Servlet來處理,在Servlet中通常需要:接收請求數(shù)據;處理請求;完成響應。
API | 作用描述 |
---|---|
ServletConfig | 獲取servlet初始化參數(shù)和servletContext對象。 |
ServletContext | 在整個Web應用的動態(tài)資源之間共享數(shù)據。 |
ServletRequest | 封裝Http請求信息,在請求時創(chuàng)建。 |
ServletResponse | 封裝Http響應信息,在請求時創(chuàng)建。 |
容器在初始化servlet時,為該servlet創(chuàng)建一個servletConfig對象,并將這個對象通過init()方法來傳遞并保存在此Servlet對象中。核心作用:1.獲取初始化信息;2.獲取ServletContext對象。
配置文件
my-name cicada servletOneImpl com.node02.servlet.impl.ServletOneImpl servletOneImpl /servletOneImpl
API用法
public class ServletOneImpl implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { String servletName = servletConfig.getServletName() ; System.out.println("servletName="+servletName); String myName = servletConfig.getInitParameter("my-name") ; System.out.println("myName="+myName); Enumeration paramNames = servletConfig.getInitParameterNames() ; while (paramNames.hasMoreElements()){ String paramKey = String.valueOf(paramNames.nextElement()) ; String paramValue = servletConfig.getInitParameter(paramKey) ; System.out.println("paramKey="+paramKey+";paramValue="+paramValue); } ServletContext servletContext = servletConfig.getServletContext() ; servletContext.setAttribute("cicada","smile"); } }
一個項目只有一個ServletContext對象,可以在多個Servlet中來獲取這個對象,使用它可以給多個Servlet傳遞數(shù)據,該對象在Tomcat啟動時就創(chuàng)建,在Tomcat關閉時才會銷毀!作用是在整個Web應用的動態(tài)資源之間共享數(shù)據。
獲取方式
1、ServletConfig#getServletContext(); 2、GenericServlet#getServletContext(); 3、HttpSession#getServletContext() 4、ServletContextEvent#getServletContext()
ServletContext是JavaWeb四大域對象之一:
1、PageContext; 2、ServletRequest; 3、HttpSession; 4、ServletContext;
所有域對象都有存取數(shù)據的功能,因為域對象內部有一個Map,用來存儲數(shù)據。
配置文件
my-blog 2019-11-19 servletTwoImpl com.node02.servlet.impl.ServletTwoImpl servletTwoImpl /servletTwoImpl
API用法
public class ServletTwoImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); // 1、參數(shù)傳遞 ServletContext servletContext = this.getServletContext() ; String value = String.valueOf(servletContext.getAttribute("cicada")) ; System.out.println("value="+value); // 2、獲取初始化參數(shù) String myBlog = servletContext.getInitParameter("my-blog") ; System.out.println("myBlog="+myBlog); // 3、獲取應用信息 String servletContextName = servletContext.getServletContextName() ; System.out.println("servletContextName="+servletContextName); // 4、獲取路徑 String pathOne = servletContext.getRealPath("/") ; String pathTwo = servletContext.getRealPath("/WEB-INF/") ; System.out.println("pathOne="+pathOne+";pathTwo="+pathTwo); response.getWriter().print("執(zhí)行:doGet; value:"+value); } }
HttpServletRequest接口繼承ServletRequest接口,用于封裝請求信息,該對象在用戶每次請求servlet時創(chuàng)建并傳入servlet的service()方法,在該方法中,傳入的servletRequest將會被強制轉化為HttpservletRequest對象來進行HTTP請求信息的處理。核心作用:1.獲取請求報文信息;2.獲取網絡連接信息;3.獲取請求域屬性信息。
配置文件
servletThreeImpl com.node02.servlet.impl.ServletThreeImpl servletThreeImpl /servletThreeImpl
API用法
public class ServletThreeImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // http://localhost:6003/servletThreeImpl?myName=cicada String method = request.getMethod(); System.out.println("method="+method); // GET String requestURL = request.getRequestURL().toString(); // http://localhost:6003/servletThreeImpl System.out.println("requestURL="+requestURL); String requestURI = request.getRequestURI(); System.out.println("requestURI="+requestURI); // /servletThreeImpl String queryString = request.getQueryString() ; System.out.println("queryString="+queryString); // myName=cicada String myName = request.getParameter("myName"); System.out.println("myName="+myName); // cicada } }
HttpServletResponse繼承自ServletResponse,封裝了Http響應信息??蛻舳嗣總€請求,服務器都會創(chuàng)建一個response對象,并傳入給Servlet.service()方法。核心作用:1.設置響應頭信息;2.發(fā)送狀態(tài)碼;3.設置響應正文;4.重定向;
配置文件
servletFourImpl com.node02.servlet.impl.ServletFourImpl servletFourImpl /servletFourImpl
API用法
public class ServletFourImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8") ; response.setCharacterEncoding("UTF-8"); response.setStatus(200) ; response.getWriter().print("Hello,知了"); } }
轉發(fā)
服務器端進行的頁面跳轉的控制 ;
request.getRequestDispatcher("/轉發(fā)地址").forward(request, response);
重定向
服務端響應跳轉信息,瀏覽器端進行的頁面跳轉 ;
response.sendRedirect("重定向地址");
轉發(fā)和重定向對比
區(qū)別 | 轉發(fā) | 重定向 |
---|---|---|
地址欄 | 不變 | 變化 |
跳轉 | 服務端跳轉 | 瀏覽器端跳轉 |
請求次數(shù) | 一次 | 兩次 |
域中數(shù)據 | 不會丟失 | 丟失 |
感謝你能夠認真閱讀完這篇文章,希望小編分享的“JavaEE中Servlet核心API怎么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!