2 回答

TA貢獻1806條經驗 獲得超8個贊
JavaWeb開發中Servlet是屬于控制層最底端的部分的 ,也就是MVC c的最底層。
他往往用來處理請求的。他的外一層就是View、他的一層就是Service(Servlet往往調用他做邏輯判斷的操作)
原始的Servlet的生命周期
servlet在第一次訪問的時候就會被初始化
servlet對象一旦被創建就會駐留在內存中,當服務器關閉或者web應用被移除的時候servlet對象才銷毀
1:當servlet被創建的時候那么 servlet就會被初始化 調用init方法
2:任何請求來自客戶端,service方法就會被自動調用
3:當servlet從服務器被移除的時候 distroy方法將會被調用
如下是一個原始的Servlet代碼(這并不是現在開發一貫的做法,請往下看)
1 2 3 4 5 6 7 8 9 10 11 | import javax.servlet.*; class FirstServlet extends GenericServlet { public void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException { response.getWriter().write("hello servlet"); } } |
ServletConfig
getServletConfig 方法 用來獲得servlet的啟動信息,和getServletInfo方法 可以活的servlet的基本信息,和關于它自己的一些信息,例如作者,版本,版權等
為Servlet設置初始參數要在web.xml中配置(只對當前servlet有效)
如下是在Web.xml中為當前servlet配置初始化參數的。
1 2 3 4 5 6 7 8 9 10 11 12 13 | <servlet> <servlet-name>ServletConfigDemo</servlet-name> <servlet-class> cn.itcast.servlet.ServletConfigDemo </servlet-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>encoding2</param-name> <param-value>utf-9</param-value> </init-param> </servlet> |
ServletCofig對象可以通過this.getServletConfig來獲得,因為在父類中已經在獲得了ServletConfig對象;也可以servletconfig對象可以通過父類的init方法內穿過來的config對象獲取
1 2 3 | public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } public ServletConfig getServletConfig() { return config; } |
ServletContext
通常我們稱ServletContext叫Application對象 。也叫域對象
Servlet引擎為每個WEB應用程序都創建一個對應的ServletContext對象,ServletContext對象被包含在ServletConfig對象中,調用ServletConfig.getServletContext方法可以返回
通常獲得ServletContext的方法是直接getservletcontext 因為在父類中已經定義了這樣的方法,子類直接繼承使用
ServletContext對象的引用。getServletContext().getInitParameter("a") 的方式獲得web應用的初始化參數
我們還可以為整個web應用配置初始化參數
Request & Response
基本servlet 中service的方法的request 和 response 對象分別是
RequestFacade 和 ResponseFacade 這個類是Tomcat中的類 他繼承自HttpServletRequest而 HttpServletRequest 又繼承 ServletRequest(Response同理)
一些常用方法:
request.getRequestURL(); 獲得URl
request.getHeader("accept-encoding"); 獲得支持的壓縮格式
request.getHeader("referer"); 獲得來自哪里(防盜鏈)
request.getInputStream(); 獲得消息體
request.getParameter("name") 獲得參數
如下是現代開發中常用的Servlet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class UpLoadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } |
添加回答
舉報