加強(qiáng)政府網(wǎng)站建設(shè)的總結(jié)/西安seo代運(yùn)營(yíng)
一、Servlet
1.Servlet的工作過(guò)程:
Servelt的工作流程示意圖
(1)客戶(hù)端發(fā)起一個(gè)Http請(qǐng)求到服務(wù)器,請(qǐng)求特定的資源或者是要執(zhí)行特定的操作
(2)服務(wù)器在接收到請(qǐng)求后,根據(jù)請(qǐng)求相應(yīng)的URL將請(qǐng)求分發(fā)給相應(yīng)的Servlet容器
(3)Tomcat加載并初始化Servlet,然后調(diào)用service()方法處理請(qǐng)求,根據(jù)請(qǐng)求的類(lèi)型執(zhí)行相應(yīng)的操作處理,最后將生成內(nèi)容返回給服務(wù)器,服務(wù)器再把它發(fā)送到客戶(hù)端,
ps:也就是說(shuō)Servlet的工作過(guò)程是接收客戶(hù)端請(qǐng)求、處理請(qǐng)求然后生成響應(yīng)返回給客戶(hù)端,從而實(shí)現(xiàn)動(dòng)態(tài)的web頁(yè)面與用戶(hù)交互
2.常用的Servlet配置方法:
(1)@WebServlet注解方式
web.xml文件中使用<servlet>和<servlet-mapping>標(biāo)簽來(lái)配置Servlet。
- 在<servlet>標(biāo)簽中指定Servlet類(lèi)的名稱(chēng)和路徑。
- 在<servlet-mapping>標(biāo)簽中指定Servlet的URL映射。
<servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.example.MyServlet</servlet-class> </servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/myservlet</url-pattern> </servlet-mapping>
(2)web.xml文件
在Servlet類(lèi)上使用@WebServlet注解來(lái)指定Servlet的URL映射和其他配置信息。比如:
@WebServlet(name = "MyServlet", urlPatterns = {"/myservlet"}) public class MyServlet extends HttpServlet {// Servlet code }
(3)自定義容器
如果使用Spring框架,可以通過(guò)配置文件或注解來(lái)配置Servlet。在Spring配置文件中使用<bean>標(biāo)簽來(lái)配置Servlet,或者在Servlet類(lèi)上使用@Controller或@RequestMapping注解來(lái)指定URL映射。
<bean id="myServlet" class="com.example.MyServlet" />
@Controller @RequestMapping("/myservlet") public class MyServlet {// Servlet code }
3.Servlet生命周期方法:
(1)初始化調(diào)用init()方法
當(dāng)Servlet被實(shí)例化時(shí)調(diào)用,用于初始化Servlet。在這個(gè)方法中通常進(jìn)行一些初始化操作,比如加載配置文件、建立數(shù)據(jù)庫(kù)連接等。
(2)請(qǐng)求Servlet服務(wù)調(diào)用service()方法
每次有請(qǐng)求到達(dá)Servlet時(shí)都會(huì)調(diào)用這個(gè)方法。在這個(gè)方法中處理請(qǐng)求并生成響應(yīng)。
(3)銷(xiāo)毀實(shí)例前調(diào)用destory()方法
當(dāng)Servlet被銷(xiāo)毀時(shí)調(diào)用,用于釋放資源。在這個(gè)方法中通常進(jìn)行一些清理操作,比如關(guān)閉數(shù)據(jù)庫(kù)連接、釋放內(nèi)存等。
二、會(huì)話(huà)管理
1.對(duì)比session與cookie的異同。
相同點(diǎn) session和cookie都是同于保存會(huì)話(huà)數(shù)據(jù)的對(duì)象,并且都能用于客戶(hù)端與服務(wù)器之間數(shù)據(jù)傳遞,通常會(huì)話(huà)會(huì)將用戶(hù)的id號(hào)以cookie的方式存放在瀏覽器中進(jìn)行用戶(hù)的身份識(shí)別,而且兩者都與一個(gè)用戶(hù)對(duì)應(yīng)只是在不同的作用域工作。 不同點(diǎn) cookie session 存儲(chǔ)在瀏覽器的緩沖區(qū) 存儲(chǔ)在服務(wù)器端 相對(duì)不安全,因?yàn)閮?nèi)容可以被用戶(hù)修改 用戶(hù)沒(méi)有權(quán)限修改,因此安全性高 可以設(shè)置過(guò)期時(shí)間,可以長(zhǎng)期保存在客戶(hù)端 會(huì)隨著用戶(hù)的下線(xiàn)或關(guān)閉瀏覽器、超時(shí)而失效 存放在客戶(hù)端可以減輕服務(wù)器負(fù)擔(dān) 存放在服務(wù)器端對(duì)服務(wù)器的性能要求更高
2.與過(guò)濾器有關(guān)的3個(gè)接口:
javax.servlet.Filter 過(guò)濾器接口 定義了過(guò)濾器的生命周期方法和過(guò)濾方法,包括init()、doFilter()和destroy()。 javax.servlet.FilterChain 過(guò)濾器鏈接口 用于在過(guò)濾器中調(diào)用下一個(gè)過(guò)濾器。它的doFilter()方法允許過(guò)濾器將請(qǐng)求傳遞給下一個(gè)過(guò)濾器,或者如果沒(méi)有下一個(gè)過(guò)濾器,則將請(qǐng)求傳遞給Servlet。 javax.servlet.FilterConfig 過(guò)濾器配置接口 用于獲取過(guò)濾器的初始化參數(shù)和ServletContext。它的方法可以讓過(guò)濾器獲取在部署描述符中配置的初始化參數(shù),以及訪(fǎng)問(wèn)ServletContext對(duì)象。
常用方法有三個(gè):
getFilterName()、getInitParameter(String name )和 getServletContex()
?3.Servlet監(jiān)聽(tīng)器是個(gè)可以監(jiān)聽(tīng)web應(yīng)用程序內(nèi)部事件的Java類(lèi).
????Serlet有幾種監(jiān)聽(tīng)器?各實(shí)現(xiàn)哪些監(jiān)聽(tīng)功能?
Servlet上下文事件
ServletContexListener接口 對(duì)servletcontext創(chuàng)建和刪除 ServletContextAtrributeListener接口 Servletcontext屬性增刪改 會(huì)話(huà)事件
HttpSessionAtrributeListener接口 用于監(jiān)聽(tīng)Http會(huì)話(huà)中屬性設(shè)置 HttpServletListener接口 用于監(jiān)聽(tīng)會(huì)話(huà)的創(chuàng)建和銷(xiāo)毀 HttpSessionBingdingListener接口 用于監(jiān)聽(tīng)對(duì)象本身綁定或刪除到一個(gè)會(huì)話(huà) 請(qǐng)求事件
ServiceRequestListener接口 用于監(jiān)聽(tīng)每次請(qǐng)求到來(lái) ServletRequestAttributeListener接口 用于跟蹤請(qǐng)求屬性的增刪改
三、JSP
1.JSP的隱式對(duì)象:
JSP的隱式對(duì)象有九個(gè),它們分別是:
out對(duì)象 向客戶(hù)端發(fā)送文本內(nèi)容 request對(duì)象 存儲(chǔ)客戶(hù)端的請(qǐng)求 response對(duì)象 存儲(chǔ)響應(yīng)客戶(hù)端時(shí)要發(fā)送的信息 session對(duì)象 存儲(chǔ)用戶(hù)會(huì)話(huà)信息 application對(duì)象 作用在JSP頁(yè)面所屬的應(yīng)用程序 pageContext對(duì)象 使用戶(hù)在訪(fǎng)問(wèn)頁(yè)面作用域中可以定義所有的隱式對(duì)象 page對(duì)象 正在運(yùn)行的JSP頁(yè)面所產(chǎn)生的類(lèi)對(duì)象 config對(duì)象 存儲(chǔ)Servlet信息(編譯JSP頁(yè)面過(guò)程中所創(chuàng)建的) exception對(duì)象 處理異常信息
2.JSTL標(biāo)簽有哪些優(yōu)點(diǎn)?
第一,可以簡(jiǎn)化JSP和WEB程序的開(kāi)發(fā),讓本來(lái)需要大量代碼才能實(shí)現(xiàn)的功能可以通過(guò)少量JSTL代碼便可以實(shí)現(xiàn);
第二,可讀性高,在團(tuán)隊(duì)開(kāi)發(fā)中方便他人查看代碼,并且易于理解;
第三,在JSTL代碼下編寫(xiě)的web程序易于后期維護(hù);
四、JavaBean
1.JavaBean的編碼規(guī)范
首先:
- 必須要具有一個(gè)公共的(public)
- 無(wú)參的構(gòu)造方法(可以是編譯器自動(dòng)產(chǎn)生的缺省構(gòu)造方法)
然后:
提供公共的(public)setter方法和getter方法——這里是為了能夠使得外部的程序獲取或者設(shè)置JavaBean的屬性
2.Spring容器支持多種形式的Bean的三種裝配方式
(1)基于XML的顯式裝配:
設(shè)值注入與構(gòu)造注入
(2)基于注解(Annotation)的裝配:
使用注解來(lái)標(biāo)識(shí)Bean,包括@Component、@Service、@Repository、@Controller等,同時(shí)使用@Autowired、@Resource等注解來(lái)自動(dòng)裝配Bean。
(3)自動(dòng)裝配
將一個(gè)Bean自動(dòng)的注入到到其他Bean的Property中。 Spring的<bean>中包含一個(gè)autowire屬性,通過(guò)設(shè)置autowire的屬性值來(lái)自動(dòng)裝配Bean。
3.Spring實(shí)例化Bean有三種方式
構(gòu)造器實(shí)例化 Spring容器通過(guò)建立的Bean類(lèi)中的默認(rèn)構(gòu)造器來(lái)實(shí)例化Bean 靜態(tài)工廠方式實(shí)例化 Spring容器通過(guò)建立的Bean類(lèi)中的默認(rèn)構(gòu)造器來(lái)實(shí)例化Bean 實(shí)例化工廠方式實(shí)例化 直接創(chuàng)建Bean實(shí)例,在配置文件里面利用factory-bean屬性配置實(shí)例工廠,通過(guò)factory-method屬性來(lái)確定使用哪個(gè)方法,也是自行通過(guò)創(chuàng)建Bean類(lèi)和工廠類(lèi),但這里和上面的不同的是,是通過(guò)非靜態(tài)方法去獲取Bean類(lèi)的實(shí)例 以上三個(gè)方法在創(chuàng)建并實(shí)例好后,都需要?jiǎng)?chuàng)建Spring配置文件,(配置Bean類(lèi)/工廠類(lèi)),最后進(jìn)行測(cè)試