JSP基礎筆記

JSP開發模式:
1.小型應用:JSP+javaBeans
2.大型應用:JSP+javaBeans+Servlet


編碼修改法:
1.<%@ pageEncoding="gb2312" %>
2.<%@ content Type="text/html; chavset="gb2312" %>


導入java包:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


導入Jar或者tld文件
用<%@ taglib uri="" prefix="" %>導入方法
1.自定義uri:
<1>首先得在web.xml中加入橋
<jsp-config>  
    <taglib>  
          <taglib-uri>自定義的uri</taglib-uri>  
         <taglib-location>/WEB-INF/tld/c.tld</taglib-location>  //文件相對路徑
    </taglib>  
 </jsp-config>
<2>調用
頭部:<%@ taglib prefix="c" uri="自定義的uri" %>
body:<c:out value="${param.username}"/> //Jar或者tld文件的值
2.標準定義--直接調用
頭部:<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>
body:<c:out value="${param.username}"/> //Jar或者tld文件的值


JSP腳本元素
1.聲明:<%!~~~%>      //聲明變量或方法
2.表達式:<%=~~~%> //變量或有返回值的方法名
3.腳本程序段:<%~~~%> //java語言


#####################JSP動作標籤#####################
一,include(包含)標籤
1:<jsp:include page="top.jsp">:先將top.jsp中的java腳本和jsp指令都執行完畢以後再將top.jsp頁面加入到引用頁面中。
2:<%@ include file="top.jsp"%>靜態讀取:則是將top.jsp的整個頁面不加解析(無論是腳本還是指令)統統讀入到引用頁面中,然後和引用頁面一起進行解析(即開始執行腳本和指令)。
3:區別:其實上邊的兩條就是區別,但是需要注意的是用<%@ include file=""%>的時候被引用頁面中不能再出現其他網頁標籤和page指令了,否則會衝突的。


二,forward(轉發)標籤
轉發標籤,網址不變,內容轉換。


三,useBean(傳遞java代碼)標籤
<jsp:useBean>多與<jsp:setProperty><jsp:getProperty>一起使用
<jsp:useBean id="實例名" scope="保存範圍" class="包名.類名">
注、保存範圍有:page--當前頁面   request--任何執行相同請求的JSP   session--會話層生命週期中   application--相同的應用內都可以使用


四,setProperty(建立所有權)標籤
<jsp:setProperty name="實例名" property="屬性名" param="表單元素名">
注、屬性名爲java內名稱  當實例名和屬性名相同時:可全部關聯-property="*";


五,getProperty(引用所有權)標籤
<%String str=request.getParameter("*");%> //其中*爲封裝的參數


六,plugin(聲明插件)標籤
用於插入javaApplet小程序或javaBean,能在客戶端運行,並根據瀏覽器版本轉換成<object>或者<embed>HTML標籤。flush="true"--瀏覽後清除緩存


七,fallback(無網絡鏈接的頁面,後備物)標籤
當plugin轉換失敗時,可用<jsp:fallback>~~~~</jsp:fallback>動作標籤顯示提示信息
注、其中~~~~爲提示信息文本


八,param(參數)標籤
param可向Applet或javaBean傳遞參數。
注、<jsp:param name="參數調用時名稱" value="實際參數值">


九,params(多個參數)標籤
<jsp:params>
<jsp:param name="參數調用時名稱" value="實際參數值">
<jsp:param name="參數調用時名稱" value="實際參數值">
<jsp:param name="參數調用時名稱" value="實際參數值">
</jsp:params>
注、可傳遞多個參數


#####################JSP動作標籤END#####################


#####################JSP內置對象#####################
向客戶端輸出信息對象---out---javax.servlet.http.jsp軟件包的抽象類JspWriter的實例
<%out.println("內容")%> <%write()%> <%out.close()%>--關閉輸出流


相應客戶端請求對象---reponse---javax.servlet.http.HttpServletResponse接口的實例
<%=reponse.方法名%>
常用的方法名有:
sendRedirect() //客戶端跳轉,名稱變化,重定向請求,產生頁面跳轉。
addCookie() //將cookie信息寫入客戶端硬盤
getWriter() //獲取PrinterWriter類型的相應流對象
setHeader() //設置指定的Http文件的頭信息
setContentType() //設置相應的MIME類型,改變ContentType屬性


請求信息對象---request---javax.servlet.http.HttpServletRequest接口的實例對象
<%=request.方法名%>
常用的方法名有:
String getParameter("*"); //返回*指定參數的參數值
String[] getParameterValues("*") //返回包含參數*的所有值的數組
void setAttribute("name","value") //設置屬性name的屬性值value
String getRealPath(".") //返回當前的物理路徑(不含文件名)
String getContextPath(".") //返回當前的相對路徑(不含文件名)
String getRequestURL() //返回請求資源的絕對路徑(含文件名)
String getRequestURI() //返回請求資源的相對路徑(含文件名)
String getQueryString() //返回http請求時傳遞的參數
request.getHeader(String name) //獲取來訪者地址,上一級地址
request.getInitParameter(String name) //獲取InitParameter內參數
String getRemoteAddr() //返回發送此請求的客戶端IP地址
String getServerName() //返回接受請求的服務器主機名
String getCharacterEncoding() //返回字符編碼方式
setCharacterEncoding("code") //設定接受信息的編碼,code通常是utf-8或者gbk
getSession() //返回與請求相關的session
getCookies() //返回客戶端的所有Cookie,結果爲一個Cookie數組


會話信息對象---session---javax.servlet.http.HttpSession接口的實例化對象
<%=session.方法名%>
常用的方法名有:
getId() //返回JSP引擎創建session對象時設置的唯一ID號
isNew() //返回服務器創建的一個session,客戶端是否已經加入
setAttribute(屬性名,值) //設置指定名稱的屬性值
getAttribute(屬性名) //獲取指定的屬性值
getValueNames() //返回一個包含此session中所有可用屬性的數組
removeValue(String name) //刪除session中指定的屬性
setMaxInactiveInterval(int n) //設置session信息的有效期,默認值爲1800秒
getMaxInactiveInterval //獲取session的有效期
invalidate() //取消session,使其不可用


所有會話信息共享對象---application---javax.servlet.ServletContext接口的實例化對象
<%=application.方法名%>
常用的方法名有:
setAttribute(屬性名,值) //設置指定名稱的屬性值
getAttribute(屬性名) //獲取指定的屬性值
getServerInfo() //返回當前版本Servlet編譯器的信息
getRealPath() //得到虛擬目錄對應的物理目錄(絕對路徑)
getContextPath() //獲取當前的虛擬路徑名稱(相對網站根目錄而言)
getAttributeNames() //獲取所有屬性的名稱
removeAttribyte() //刪除指定屬性


注:session是局部變量,application是全局變量。前者關閉或重啓客戶端消失,後者關閉或重啓服務器消失


Cookie信息的建立與運用---Cookie---javax.servlet.http.Cookie類來處理
將由下面實例闡述Cookie的用法
<%
Cookie  name=new  Cookie("屬性名","屬性值"); //創建對象
response.addCookie(name); //將cookie信息寫入客戶端硬盤
Cookie[] c=request.getCookies(); //獲取客戶端設置的全部cookie
for(int i=0;i<c.lenght;i++)
{
out.println(c[i].getName()+".."+c[i].getValue()) //輸出(”屬性名..屬性值“)
}
%>
常用的方法名有:
Cookie(String name,String value) //構造方法,實例化對象
Cookie[] getCookies() //獲取客戶端設置的全部cookie
getName() //獲得cookie的屬性名
getValue() //獲得cookie的屬性值
setMaxAge(int) //設置cookie的保存時間,單位爲秒


頁面上下文對象---pageContext---javax.servlet.jsp.PageContext抽象類的實例
通過pageContext可訪問頁面內所有對象(session和application等)或者重新定向客戶端請求
常用的方法名有:
forward() //頁面重定向到另一個頁面或者servlet
getSession() //返回當前頁面的HttpSession對象
getRequest() //返回當前頁面的request對象
getResponse() //返回當前頁面的response對象
setAttribute(屬性名,屬性值) //設置屬性在page範圍內
getServletContext() //獲取當前頁的ServletContext對象
getServletConfig() //獲取Servlet的配置參數
getRealPath(String path) //獲取相對路徑的物理路徑


Servlet的配置對象---config---javax.servlet.SerletConfig接口內
<%=ServleConfig.方法名%>
常用的方法名有:
getServletName() //獲取當前的Servlet名稱
getServletContext() //獲得當前的Servlet上下文對象
getInitparameter() //獲取指定的初始參數的值
request對應的內置對象爲HttpServletRequest
response對應的內置對象爲HttpServletResponse
session對應的內置對象爲HttpSession,調用session之前需要request.getSession()實例化之後纔可以使用
application對應的內置對象爲:ServletContext,this.getServletContext()調用


Servlet轉發:
requset||response作爲轉發器RequestDispatcher 提供兩個方法
forward(req,res);
include(req,res);
getServletContext().getRequestDispacher("目標位置").forward(req,res);


向瀏覽器輸出:
response.setContentType("text/html;charset=utf-8");//防止中文亂碼
PrintWriter x=response.getWriter();x.println("輸出內容");


可接入Servlet接口,也繼承GenericServlet,HttpServlet實現
Servlet 接口繼承方法方法:
init()  //初始化
service() //訪問時調用方法
getServletConfig() //獲取Servlet配置信息
getServletInfo() //獲取Servlet信息
destroy() //銷燬實例(關閉瀏覽器時)
繼承GenericServlet僅僅用Service()即可完成
繼承HttpServlet擁有兩個方法dopost(),doget();分別對應兩種提交方式
<servlet>
<servlet-name>w</servlet-name> //過濾器名
<servlet-class>a.Whata</servlet-class> //包.類
</servlet>
<servlet-mapping>
<servlet-name>w</servlet-name> //過濾器名,僅用於關聯
<url-pattern>/wh</url-pattern> //可與過濾器名不一樣,但不建議,決定訪問路徑和訪問關鍵字
</servlet-mapping>


監聽器 javax.servlet.http.HttpSessionListener接口,用於查看在線人數
sessionCreated(HttpSessionEvent se);增加
sessionDestroyed(HttpSessionEvent se);減少
<listerner>
<listener-class>包.類</listener>
</listerner>


過濾器 javax.servlet.Filter單一過濾,方法數三,javax.servlet.FilterChain,過濾鏈,方法數一
接口實現的方法
init()、destroy()、doFileter(req,rqs,chain),過濾鏈需要在doFileter方法結尾轉發給下一個過濾器chain.doFileter(req,res);
<filter>
  <filter-name>utf-8</filter-name> //過濾器名稱,僅用於關聯
  <filter-class>file.utf</filter-class> //包.類
<init-param>
<param-name>名稱</param-name>
<param-value>值</param-value> //下面有調用方法
</init-param>
</filter>
<filter-mapping>
  <filter-name>utf-8</filter-name> //過濾器名稱,僅用於關聯
  <url-pattern>/*</url-pattern> //過濾路徑
</filter-mapping>


上傳下載直接調用做好的代碼。JSP知識就這麼多了!


附一:web.xml相關資料
<?xml version="1.0" encoding="utf-8"?>//版本 編碼
<!DOCTYPE web-app="/webapp_2.3dtd" />//dtd文檔位置,可ctrl查看位置
<web-app>
<icon>
<small-icon>/images/app_small.gif</small-icon>//應用小圖標
<large-icon>/images/app_large.gif</large-icon>//應用大圖標
</icon>
<display-name>名稱</display-name>
<description>註釋</description>
</web-app>


<distributable/>//是否支持集羣服務器,多個服務器


<context-param>
<param-name>名稱</param-name>
<param-value>值</param-value>
</context-param>


<filter>
  <filter-name>utf-8</filter-name>
  <filter-class>file.utf</filter-class>
<init-param>
<param-name>名稱</param-name>
<param-value>值</param-value>//下面有調用方法
</init-param>
</filter>
<filter-mapping>
  <filter-name>utf-8</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>


FilterConfig f;
f.getInitParamter("名稱");


<listerner>
<listener-class>包.類</listener>
</listerner>//監聽器


<servlet>
<servlet-name>servlet名</servlet-name>
  <servlet-class>包.類</servlet-class>
<init-param>
<param-name>名稱</param-name>
<param-value>值</param-value>//下面有調用方法
</init-param>
<run-as>
<load-on-startup>優先級(必須大於0的整數,越小優先級越高)</load-on-startup>
</run-as>
</servlet>
<servlet-mapping>
  <servlet-name>servlet名</servlet-name>
  <url-pattern>/*</url-pattern>//激活區域,激活調用
</servlet-mapping>


<session-config>
<session-timeout>存在時間(s)</session-timeout>
</session-config>//與HttpSession.setMaxInactiveInterval方法相同


<mime-mapping>
<extension>htm</extension>
<mime-type>text/html</mime-type>
</mime-mapping>


<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>//錯誤轉向


<error-page>
<exception-type>包.類</exception-type>
<location>/error.html</location>//拋出異常處理界面
</error-page>


<taglib>
<taglib-uri>http://anlemusic.cn</taglib-uri>
<taglib-location>/WEB-INFx.tld</taglib-location>
</talib>//源文件地址密封


保護資源
<security-constraint>
<web-resource-coolection>
<web-resource-name>Test</web-resource-name>//保護名稱
<url-pattern>/test/*</url-pattern>//保護目錄
<http-method>post</http-method>//保護命令,如:(get,post,put,delete,head,options,trace)
</web-resource-coolection>
</security-constraint>


<security-constraint>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>//訪問權


<security-constraint>
<user-data-constraint>
<transport-guarantee>NONE|INTEGRAL|CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>//任何傳輸保護,分別爲:不加限制,防止截取,閱讀方式傳輸


//conf/tomcat-users.xml中用戶名密碼
<tomcat-users>
<user name="admin" password="admin" roles="admin">
</tomcat-users>




附二:


response.setContentType("x");


application/msword doc Microsoft Word
application/octet-stream bin dms lha lzh exe class可執行程序
application/pdf pdf Adobe Acrobat
application/postscript ai eps ps PostScript
appication/powerpoint ppt Microsoft Powerpoint
appication/rtf rtf rtf 格式
appication/x-compress z unix 壓縮文件
application/x-gzip gz gzip
application/x-gtar gtar tar 文檔 (gnu 格式 )
application/x-shockwave-flash swf MacroMedia Flash
application/x-tar tar tar(4.3BSD)
application/zip zip winzip
audio/basic au snd sun/next 聲音文件
audio/mpeg mpeg mp2 Mpeg 聲音文件
audio/x-aiff mid midi rmf Midi 格式
audio/x-pn-realaudio ram ra Real Audio 聲音
audio/x-pn-realaudio-plugin rpm Real Audio 插件
audio/x-wav wav Microsoft Windows 聲音
image/cgm cgm計算機圖形元文件
image/gif gifCOMPUSERVE GIF 圖像
image/jpeg jpeg jpg jpe JPEG 圖像
image/png PNG 圖像
text/html HTML 
text/plain          TXT 
text/xml              XML
text/json            json字符串


附三:
域名映射
<Host name="www.abc.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="webapps" path=""  reloadable="true" ></Host>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章