国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JSP > 正文

【Servlet】05-使用JSP

2019-11-08 01:50:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Servlet作為服務(wù)器的小程序,為我們解決了業(yè)務(wù)問(wèn)題(作為控制器)。但是,我們想要寫出更接近“前端”的代碼,需要我們了解jsp相關(guān)技術(shù)。

在JSP中,我們要了解:

JSP代碼組成 模板腳本元素(指令、動(dòng)作、聲明、scriptlet和表達(dá)式)標(biāo)準(zhǔn)動(dòng)作和定制動(dòng)作使用指令寫JSP代碼 page includetablib JSP標(biāo)準(zhǔn)動(dòng)作 include(運(yùn)行時(shí)調(diào)用-單獨(dú)的.class文件)forward(跳轉(zhuǎn)JSP、Servlet)JSP內(nèi)置對(duì)象 request responseoutsessionconfigapplicationpagepageContextexceptionJSP的生命周期 頁(yè)面轉(zhuǎn)換:JSP->ServletJSP頁(yè)面編譯加載類創(chuàng)建實(shí)例jspinit使用_jspService

一個(gè)JSP示例:

<%@ page language="java" pageEncoding="utf-8"%><%@ page import="com.web.po.*"%><%-- 這是一個(gè)JSP注釋 --%><% int number = 0;%><%= number++1 %>

首先,我們要考慮的是,容器對(duì)我們的JSP頁(yè)面做了什么,如何讓JSP轉(zhuǎn)換成Servlet的:

小腳本里的代碼會(huì)放在通用服務(wù)方法,變量為局部變量使用JSP聲明的變量,會(huì)成為Servlet的類變量

容器,實(shí)際上,按照如下的步驟生成Servlet

查看指令,轉(zhuǎn)換相應(yīng)的方法創(chuàng)建一個(gè)HttpServlet的子類檢查聲明,把變量寫入類創(chuàng)建服務(wù)方法把HTML轉(zhuǎn)換成流輸出的方式

好了,該看一下JSP的生命周期了:

JSP文件被部署到Web容器里第一個(gè)請(qǐng)求到來(lái),JSP文件被轉(zhuǎn)換成.javaJava文件被編譯成.class文件容器加載Servlet類實(shí)例化Servlet,調(diào)用servlet的jspInit()初始化

和Servlet一樣,我們的JSP也是可以配置初始化參數(shù)的,我們需要在DD文件里這樣寫:

<servlet> <jsp-file>somefile</jsp-file> <init-param> <param-name></param-name> <param-value></param-value> </init-param></servlet>

或者,自己在JSP文件中寫聲明:

<%! public void jspInit(){ // 在這里寫初始化的邏輯代碼 }%>

然后,我們的JSP中也是有作用域(PageContext中的枚舉值):

APPLICATION_SCOPEPAGE_SCOPEREQUEST_SCOPESESSION_SCOPE

好了,終于可以聊聊JSP的指令,動(dòng)作和內(nèi)置對(duì)象了: 指令列表:

page(屬性如下) importisThreadSafecontentTypeisErrorPageerrorPagepageEncoding。。。。。。taglibinclude

其實(shí),這些指令已經(jīng)允許我們?cè)贘SP頁(yè)面中書寫Java代碼,但是,為了后期維護(hù),我們不應(yīng)該寫scriptlet。這就需要我們?cè)贒D中禁用小腳本

<web-app> <jsp-config> <jsp-PRoperty-group> <!-- 下面的配置對(duì)所有的JSP文件,都禁用Java小腳本 --> <url-pattern>*.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> <jsp-property-group> </jsp-config><web-app>

不過(guò),當(dāng)我們寫了太多的腳本,我們開始尋求無(wú)腳本頁(yè)面,于是,JSP標(biāo)準(zhǔn)動(dòng)作可以來(lái)幫忙:

JavaBean相關(guān)

jsp:useBeanjsp:setPropertyjsp:getPropertyjsp:param<%-- 帶體的useBean --%><jsp:useBean id="beanId" class="someClass" scope="someScope"> <jsp:setProperty name="propertyName" value="propertyValue"/></jsp:useBean><%-- 使用多態(tài)的useBean --%><jsp:useBean id="xx" class="someClass" type="superClassName"></jsp:useBean><%-- 使用param設(shè)置bean的屬性 --%><jsp:useBean id="xx" class="xx" scope="someScope"> <jsp:setProperty name="propertyName" param="propertyName"/></jsp:useBean><%-- 如果bean的屬性和表單屬性名一致,可以使用如下代碼 --%><jsp:useBean id="xx" class="xx" scope="someScope"> <jsp:setProperty name="propertyName" property="*"/></jsp:useBean>

如果某個(gè)JavaBean的屬性還是一個(gè)對(duì)象,我們就得寫EL咯!

<%-- dot-Operator --%>${requestScope.name}<%-- []-operator --%>${requstScope.someList["0"]}

EL中有一些隱式對(duì)象,下面是其一覽表:

作用域 pageScoperequsetScopesessionScopeapplicationScope請(qǐng)求參數(shù) paramparamValue請(qǐng)求首部 headerheaderValuescookieinitParampageContext<%-- 下面是一個(gè)表單 --%><form action="result.jsp" method="post"> 用戶名:<input type="text" name="username"> 食物1:<input type="text" name="food"> 食物2:<input type="text" name="food"></form><%-- 下面是result.jsp --%>${param.username}<%-- 使用paramValues獲取多值參數(shù) --%>${paramValues.food[0]}<%-- 獲取頭部信息 --%>${header.host}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丰台区| 宝丰县| 庆元县| 彝良县| 宣武区| 得荣县| 阿克苏市| 堆龙德庆县| 瑞金市| 邓州市| 新巴尔虎左旗| 阳新县| 永宁县| 合山市| 长海县| 依兰县| 东阳市| 罗定市| 营山县| 拉孜县| 舟曲县| 都江堰市| 阿荣旗| 青州市| 沁源县| 哈密市| 年辖:市辖区| 屏边| 额济纳旗| 南靖县| 来宾市| 五大连池市| 铁岭市| 双江| 齐齐哈尔市| 民权县| 新平| 肃宁县| 嘉峪关市| 湘潭市| 三河市|