JSP的本質是Servlet,那么Servlet是可以進行web.xml配置,那么理論上JSP也可以進行基本的配置。
修改web.xml
<context-param> <param-name>title</param-name> <param-value>czbk</param-value> </context-param> <servlet> <servlet-name>myjsp</servlet-name> <jsp-file>/init.jsp</jsp-file> <init-param> <param-name>ip</param-name> <param-value>192.168.10.1</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myjsp</servlet-name> <url-pattern>/haha.html</url-pattern> </servlet-mapping>
編寫代碼獲取配置信息
<body> <%-- JSP的訪問路徑 --%> this is my jsp! <br/> <%-- 獲取配置參數 --%> <%= config.getInitParameter("ip") %><br/> <%= application.getInitParameter("title") %><br/> <%-- 重寫JSP的初始化方法 --%> <%! public void jspInit(){ System.out.JSP排錯1.翻譯階段 <body> <%-- </body>org.apache.jasper.JasperException: /error.jsp(7,8) Unterminated <%-- tag 2.編譯階段 <body> <%= "itcast %> </body>org.apache.jasper.JasperException: Unable to compile class for JSP: 3.運行階段 <body> <%= 1/0 %> </body>org.apache.jasper.JasperException: An exception occurred processing JSP page /error.jsp at line 7處理錯誤的方式只有一種就是看錯誤信息。
如果在進行jsp配置的時候強行的將jsp映射為其他的路徑,那么需要使用使用一對多映射將原來的路徑也進行映射,否則原來的路徑中是無法進行配置參數獲取的。
<servlet-mapping> <servlet-name> myjsp</servlet-name> <url-pattern>/init.jsp</url-pattern> <url-pattern>/haha.html</url-pattern> </servlet-mapping>二 JavaBean
目前為止JavaBean主要幫助我們進行基本的數據類型的封裝??梢苑奖愫笃诘臄祿鬏?。
特征:
- 私有話幾乎所有的屬性
- 提供所有的get和set方法
- 無參數的構造函數
- 提供有參數的構造函數
JavaBean的屬性值得并不是你在JavaBean中定義的屬性,是get和set方法后面的去掉首字母大小的字母轉換為小寫后的值。
JavaBean技術JSP主要的任務是顯示用戶的數據。那么也需要承擔封裝用戶數據的職責。那么在JSP頁面中我們必須要使用相應的技術實現數據的封裝。即JSP中的JavaBean技術。
1 創建JavaBean對象
<jsp:useBean ? 指定是動作名,使用javabeanid="" ? 指定的是引用變量名,也可以是屬性名beanName="" ? 指定對象的別名class="" ? 指定要創建的javabean類(全限定名)scope="page" ? 指定域type="">? 指定類的類型</jsp:useBean>舉例1:在JSP中創建一個javabean的對象。
<body>
<%-- 創建一個javabean對象存儲在指定的page域中 --%>
<jsp:useBean id="myuser" class="cn.itcast.beans.User" scope="page"></jsp:useBean>
<%= ((User)pageContext.findAttribute("myuser")).getName() %>
</body>
以上的代碼被翻譯為:
cn.itcast.beans.User myuser = null;
synchronized (_jspx_page_context) {
myuser = (cn.itcast.beans.User) _jspx_page_context.getAttribute("myuser", PageContext.PAGE_SCOPE);
if (myuser == null){
myuser = new cn.itcast.beans.User();
_jspx_page_context.setAttribute("myuser", myuser, PageContext.PAGE_SCOPE);
}
}
首先檢測指定的域中是否包含指定的屬性名的對象,如果有直接獲取出來,如果沒有直接創建出來。
1 設置屬性值
<jsp:setProperty ? 指定是一個設置屬性的動作name="" ? 指定要設置哪一個對象property="" ? 指定要設置哪一個屬性param="" ? 指定以什么請求參數作為以上屬性的值value=""/>? 指定具體的值如果需要將請求參數作為屬性的值那么可以使用param,如果需要將所有的請求參數進行封裝指定對象的相應屬性上去,那么property的值可以直接是*。2 獲取屬性值
<jsp:getProperty name="" 指定要獲取的對象property=""/> 指定要獲取的屬性3 舉例實現數據的封裝和獲取
<%-- 創建一個javabean對象存儲在指定的page域中 --%>
<jsp:useBean id="myuser" class="cn.itcast.beans.User" scope="page"></jsp:useBean>
<%-- 設置javabean屬性 --%>
<jsp:setProperty name="myuser" property="*"/> à 使用請求參數封裝數據
<%-- 獲取javabean屬性 --%>
<jsp:getProperty name="myuser" property="name"/><br/>
<jsp:getProperty name="myuser" property="age"/><br/>
<jsp:getProperty name="myuser" property="likes"/><br/>
新聞熱點
疑難解答