2 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
JavaWeb開發(fā)中Servlet是屬于控制層最底端的部分的 ,也就是MVC c的最底層。
他往往用來處理請求的。他的外一層就是View、他的一層就是Service(Servlet往往調(diào)用他做邏輯判斷的操作)
原始的Servlet的生命周期
servlet在第一次訪問的時候就會被初始化
servlet對象一旦被創(chuàng)建就會駐留在內(nèi)存中,當(dāng)服務(wù)器關(guān)閉或者web應(yīng)用被移除的時候servlet對象才銷毀
1:當(dāng)servlet被創(chuàng)建的時候那么 servlet就會被初始化 調(diào)用init方法
2:任何請求來自客戶端,service方法就會被自動調(diào)用
3:當(dāng)servlet從服務(wù)器被移除的時候 distroy方法將會被調(diào)用
如下是一個原始的Servlet代碼(這并不是現(xiàn)在開發(fā)一貫的做法,請往下看)
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的基本信息,和關(guān)于它自己的一些信息,例如作者,版本,版權(quán)等
為Servlet設(shè)置初始參數(shù)要在web.xml中配置(只對當(dāng)前servlet有效)
如下是在Web.xml中為當(dāng)前servlet配置初始化參數(shù)的。
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來獲得,因為在父類中已經(jīng)在獲得了ServletConfig對象;也可以servletconfig對象可以通過父類的init方法內(nèi)穿過來的config對象獲取
1 2 3 | public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } public ServletConfig getServletConfig() { return config; } |
ServletContext
通常我們稱ServletContext叫Application對象 。也叫域?qū)ο?/p>
Servlet引擎為每個WEB應(yīng)用程序都創(chuàng)建一個對應(yīng)的ServletContext對象,ServletContext對象被包含在ServletConfig對象中,調(diào)用ServletConfig.getServletContext方法可以返回
通常獲得ServletContext的方法是直接getservletcontext 因為在父類中已經(jīng)定義了這樣的方法,子類直接繼承使用
ServletContext對象的引用。getServletContext().getInitParameter("a") 的方式獲得web應(yīng)用的初始化參數(shù)
我們還可以為整個web應(yīng)用配置初始化參數(shù)
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") 獲得參數(shù)
如下是現(xiàn)代開發(fā)中常用的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); } } |

TA貢獻1804條經(jīng)驗 獲得超3個贊
ervlet屬于MVC結(jié)構(gòu)中的控制層,也就是連接頁面和數(shù)據(jù)庫的那個層次。
擴展:
m(model)模型,代表的是數(shù)據(jù)庫層,通常用到的是:oracle、db2、mysql等sql知識;
v(view)視圖,代表的是頁面(相關(guān)),通常用到的是:html5、jsp,js等頁面知識;
c(Controller)控制,代表的控制器,通常用到一些框架知識,如ssh(struts,spring,hibernate)。
備注:mvc實際上是一個很寬泛的內(nèi)容,根據(jù)用到的技術(shù)不同,需要實現(xiàn)的業(yè)務(wù)邏輯不一樣,所以靈活開發(fā)配置即可。
添加回答
舉報