【問(wèn)題描述】
最近公司安排我面試Java的FreshMan,面試者一般是工作1年多點(diǎn)的新人(這里我就裝老一下,其實(shí)我也才工作3年不到),在被問(wèn)及Struts1和Struts2的Action的線程安全問(wèn)題的時(shí)候,大多是支支吾吾,答不出所以然。所以在這里我整理一下我個(gè)人的理解。
【問(wèn)題答案】
這是由于Servlet的工作原理產(chǎn)生的。我們先來(lái)簡(jiǎn)單回顧一下Servlet的生命周期“初始化->init->service->destroy->卸載”。
這里大家都知道,我們?cè)趙eb.xml里面定義一個(gè)servlet的時(shí)候,我們可以給他們?cè)O(shè)置一個(gè)“l(fā)oad-on-startup” 的值,如果 Servlet 的 load-on-startup 配置項(xiàng)大于 0,那么在 Context 容器啟動(dòng)的時(shí)候就會(huì)被實(shí)例化,并且tomcat給每一個(gè)servlet加載并且實(shí)例化一個(gè)對(duì)象(注解:也就是說(shuō),我們用戶(hù)在web.xml里面配置的每一個(gè)servlet都會(huì)被實(shí)例成一個(gè)servlet對(duì)象)
a, 下面的配置表示會(huì)有兩個(gè)servlet對(duì)象被實(shí)例化,即使他們對(duì)應(yīng)的是同一個(gè)servlet class
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>ServletTest1</servlet-name> <servlet-class>web.servlet.ServletTest1</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletTest1</servlet-name> <url-pattern>/servlet/ServletTest1</url-pattern> </servlet-mapping> <servlet> <servlet-name>ServletTest2</servlet-name> <servlet-class>web.servlet.ServletTest1</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletTest2</servlet-name> <url-pattern>/servlet/ServletTest1</url-pattern> </servlet-mapping> </web-app>
網(wǎng)頁(yè)題目:Struts中action線程安全問(wèn)題解析-創(chuàng)新互聯(lián)
本文URL:http://www.rwnh.cn/article8/djhdip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、小程序開(kāi)發(fā)、靜態(tài)網(wǎng)站、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容