java課件 第12章 JSP與Servlet技術(shù)(共十套)_第1頁
java課件 第12章 JSP與Servlet技術(shù)(共十套)_第2頁
java課件 第12章 JSP與Servlet技術(shù)(共十套)_第3頁
java課件 第12章 JSP與Servlet技術(shù)(共十套)_第4頁
java課件 第12章 JSP與Servlet技術(shù)(共十套)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第12章JSP與Servlet技術(shù)主要內(nèi)容12.1JSP簡介12.2JSP頁面元素12.3JSP內(nèi)置對象12.4Servlet12.5ServletAPI接口12.6開發(fā)Servlet12.1JSP概念Java服務(wù)器頁面(JavaServerPage,JSP)以擴展名.jsp保存在JavaServerPage里面使用Java編程語言和基礎(chǔ)類庫HTML用于表示頁面,而Java代碼用于訪問動態(tài)內(nèi)容,并有效控制動態(tài)內(nèi)容的生成JSP概念簡單jsp頁面舉例:<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%><html><head><title>avceit</title></head><bodybgcolor="#ffffff"><%java.util.Datenow=newjava.util.Date();out.println("當(dāng)前時間是:"+now);%><h1>你好,這就是一個JSP頁面</h1></body></html>JSP執(zhí)行過程TomcatJSP執(zhí)行過程Jsp容器管理jsp頁面生命周期,分為兩個階段:轉(zhuǎn)換階段和執(zhí)行階段轉(zhuǎn)換階段當(dāng)有一個對jsp頁面的請求到來時,jsp容器檢查jsp頁面的語法是否正確,將jsp頁面轉(zhuǎn)換為Servlet源文件,然后調(diào)用javac命令編譯Servlet源文件生成字節(jié)碼文件.執(zhí)行階段Servlet容器加載轉(zhuǎn)換后的Servlet類主要內(nèi)容12.1JSP簡介12.2JSP頁面元素12.3JSP內(nèi)置對象12.4Servlet12.5ServletAPI接口12.6開發(fā)Servlet12.2JSP頁面元素靜態(tài)內(nèi)容指令表達(dá)式Scriptlet<%Java代碼%><%=Java表達(dá)式%>HTML靜態(tài)文本以“<%@”開始,以“%>”結(jié)束。比如:<%@includefile="

Filename"%>聲明動作<%!函數(shù)或方法%>以“<jsp:動作名”開始,以“</jsp:動作名>”結(jié)束比如:<jsp:includepage="Filename"/>注釋<!--這是注釋,但客戶端可以查看到--><%--這也是注釋,但客戶端不能查看到--%>腳本元素包含三個部分:聲明,腳本段,表達(dá)式聲明:用于聲明在其它腳本元素中可以使用的變量和方法腳本段:是一段java代碼表達(dá)式:java語言中完整的表達(dá)式聲明聲明以<%!開始,以%>結(jié)束 <%!inti=0;%> <%! publicvoidmethod(){ } %>利用<%!%>聲明的變量,在jsp容器將jsp轉(zhuǎn)換為servlet時將作為servlet類的屬性,聲明的方法將成為servlet的方法腳本段在請求處理期間要執(zhí)行的java代碼段<% if(){}else{}%>在腳本段中可以聲明變量,并且在后面的腳本中可以使用該變量。容器轉(zhuǎn)換jsp頁面為servlet的時候,一次性被轉(zhuǎn)換為_jspService()方法中的代碼表達(dá)式<%=表達(dá)式%>計算表達(dá)式的值插入到當(dāng)前流中<%=newjava.util.Date().toLocaleString()%>例:計數(shù)器<%@pagelanguage="java"import="java.util.*"pageEncoding="GB2312"%><html><head></head>

<body>

<%!

inti=0;%><%i++;%><p>您是第<%=i%>個訪問本站的客戶<br></body></html>注意和以下代碼的區(qū)別:<%@pagelanguage="java"import="java.util.*"pageEncoding="GB2312"%><html><head></head><body>

<%

inti=0;%><%++i;%><p>您是第<%=i%>個訪問本站的客戶<br></body></html>分析:1、這兩個代碼唯一的區(qū)別是聲明變量i的方式不同,前者是成員變量,后者是局部變量。2、這個計數(shù)器有計數(shù)漏洞,有可能出現(xiàn)計數(shù)不同步的可能,原因是可能會有若干人同時訪問i的值,這樣大家獲取的是同一個i值,與事實不符。解決的辦法是synchronized加鎖。聲明方法舉例<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%><html><head></head>

<body><%--聲明一個方法countpeople()--%><%!

intnumber=0;

synchronized

voidcountPeople(){number++;}%><%--調(diào)用countPeople()計算人數(shù)--%><%countPeople();%><p>您是第<%=number%>個訪問本站的客戶</body></html>JSP指令元素<%@pagecontentType="text/html;charset=GBK"language="java"import="java.util.Calendar"%><%!StringgetHello(Stringname){return"Hi,"+name+"!";}%><%Calendarnow=Calendar.getInstance();%>JSPScriptletJSP指令page指令page指令作用于整個jsp頁面,定義了許多與頁面相關(guān)的屬性,這些屬性將規(guī)定和jsp容器通信時的約定。

語法:<%@pageattr1=“value”%attr2=“value”%>屬性值總是用單引號或雙引號括起來。如果一個屬性有多個值的時候,這些值用逗號分開。例如:

<@pageimport=“java.util.*”,”java.io.*”%>page指令屬性屬性默認(rèn)值說明languagejavaimport默認(rèn)不引入包import=”java.io.*,java.util.*”sessiontrue制定一個Http會話中這個頁面是否參與bufferBuffer=”64K”客戶輸出流緩沖模式autoFlashtrueinfo關(guān)于jsp頁面的信息isErrorPagefalseerrorPage定義該頁面出現(xiàn)異常時調(diào)用的頁面isThreadSafetruecontentType“text/html”;charset=iso8859-1pageEncodingpageEncoding=”ISO-8859-1”Include指令該指令的作用是將JSP頁面出現(xiàn)該指令的位置處靜態(tài)的插入一個文件。其語法為:<%@includefile=“文件”%>例:<body><%@includefile="test.txt"%></body>JSP動作元素JSP中一共制定了7種標(biāo)準(zhǔn)的“動作元素”,分別是:<jsp:include><jsp:forward><jsp:plugin><jsp:param><jsp:useBean><jsp:getProperty><jsp:setProperty><jsp:include>動作

include動作標(biāo)簽格式為: <jsp:includepage=“文件的名字”/> <jsp:includepage=“文件的名字”><jsp:paramname=“”value=“”> </jsp:include>Include動作標(biāo)簽的功能:告訴JSP頁面動態(tài)包含一個文件,即JSP頁面運行時才將文件加入。JSP頁面元素<html><head><title>JSP頁面構(gòu)成</title></head><!--這是注釋,但客戶端可以察看到--><%--這也是注釋,但客戶端不能察看到--%><body><h1align="center">JSP頁面構(gòu)成</h1><%=getHello("朋友")%><%if(now.get(Calendar.AM_PM)==Calendar.AM){%>早上好!<%}else{%>下午好!<%}%><br><br><jsp:includeflush="false"page="welcome.jsp"><jsp:paramname="str"value="參數(shù)"/></jsp:include></body></html><jsp:forward>動作forward指令格式: <jsp:forwardpage=“要轉(zhuǎn)向的頁面”/><jsp:forwardpage=“要轉(zhuǎn)向的頁面”><jsp:paramname=“”value=“”/> </jsp:forward>forward指令功能:

從該指令處停止當(dāng)前頁面的繼續(xù)執(zhí)行,而轉(zhuǎn)向其他的一個jsp頁面。JSPexample1<html>

<head><title>demo1.jsp</title></head>

<body>

<%

if(choice.equals("manage")){

%>

<jsp:forwardpage="demo1.1.jsp">

<jsp:paramname="username"

value="<%=username%>"/>

<jsp:paramname="password"value="<%=password%>"/>

</jsp:forward>

<%}%>

</body>

</html>

JSPexample2-文件訪問<%@pagecontentType="text/html;charset=GB2312"%><%@pagelanguage="java"%><%@pageimport="java.io.*"%><HTML><HEAD><TITLE>取得目錄中的文件</TITLE></HEAD><BODY><CENTER><FONTSIZE=5COLOR=blue>取得目錄中的文件</FONT></CENTER><BR><HR><BR></BODY></HTML><%//取得目前目錄的磁盤目錄Stringpath=request.getRealPath("/");Filed=newFile(path);Filelist[]=d.listFiles();%>在<Fontcolor=red><%=path%></Font>目錄下的文件有<BR><Fontcolor=blue><ul><%for(inti=0;i<list.length;i++){%><li><%=list[i].getName()%><BR><%}%></ul></Font>主要內(nèi)容12.1JSP簡介12.2JSP頁面元素12.3JSP內(nèi)置對象12.4Servlet12.5ServletAPI接口12.6開發(fā)Servlet12.3JSP內(nèi)置對象九種內(nèi)置對象request,response,out,session,application,cookie,config,page,exception。HttpServletRequest類的Request對象該對象封裝了用戶提交的信息,通過調(diào)用該對象的方法可以獲取用戶提交的信息。getParameter(StringstrTextName)獲取表單提交的信息。getRermoteAddr()獲取客戶的IP地址。getProtocol()獲取客戶使用的協(xié)議。

JSP內(nèi)置對象HttpServletResponse類的Respone對象對客戶的請求做出動態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。(1)將客戶重新引導(dǎo)至另一個頁面使用response的sendRedirect(URL)方法實現(xiàn)客戶的重定向。例如:response.sendRedirect("index.jsp");(2)動態(tài)響應(yīng)contentType屬性使用response對象的setContentType(Strings)方法來改變contentType的屬性值。格式:response.setContentType(Strings);

參數(shù)s可取text/html,application/x-msexcel,application/msword等HttpSession類的session對象從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束,被稱為一個會話。publicStringgetId():獲取Session對象編號;publicvoidsetAttribute(Stringkey,Objectobj):將參數(shù)Object指定的對象obj添加到Session對象中,并為添加的對象指定一個索引關(guān)鍵字。publicObjectgetAttribute(Stringkey):獲取Session對象中含有關(guān)鍵字的對象。如:session.setAttribute(“username",“jack");JSP內(nèi)置對象JSP內(nèi)置對象ServletContex類的application對象服務(wù)器啟動后產(chǎn)生了Application對象,直到服務(wù)器關(guān)閉。與Session對象不同的時,所有客戶的Application對象都是同一個,即所有客戶共享這個內(nèi)置的Application對象。setAttribute(Stringkey,Objectobj):getAttribute(Stringkey):JSPexample3-模擬登陸Login.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>CH5-Login.jsp</title></head><body><h2>javax.servlet.http.HttpSession-session對象</h2><formaction=“Login.jsp”method="POST">LoginName:<inputtype="text"name="Name"><br>LoginPassword:<inputtype="text"name="Password"><br><inputtype="submit"value="Send"><br><form><%if(request.getParameter("Name")!=null&&request.getParameter("Password")!=null){StringName=request.getParameter("Name");StringPassword=request.getParameter("Password");if(Name.equals("mike")&&Password.equals("1234")){session.setAttribute("Login","OK");

response.sendRedirect("Member.jsp");}else{out.println("登錄錯誤,請輸入正確名稱");}}%></body></html>JSPexample3-模擬登陸Member.jsp<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>CH5-Member.jsp</title></head><body><h2>javax.servlet.http.HttpSession-session對象</h2><%StringLogin=(String)session.getAttribute("Login");if(Login!=null&&Login.equals("OK")){out.println("歡迎進(jìn)入");}else{out.println("請先登錄,謝謝");}%></body></html>主要內(nèi)容12.1JSP簡介12.2JSP頁面元素12.3JSP內(nèi)置對象12.4Servlet12.5ServletAPI接口12.6開發(fā)Servlet12.4什么是ServletServlet(java服務(wù)器小程序)是一個用Java編寫的程序,此程序在服務(wù)器上運行以處理客戶端請求。是按照Servlet規(guī)范編寫的java類請求客戶端響應(yīng)Servlet運行于服務(wù)器上ServletAPIServlet的框架是由兩個java包組成:javax.servlet和javax.servlet.httpjavax.servlet包中定義了所有的servlet類都必須實現(xiàn)的接口和類。Servlet的框架的核心是:javax.servlet.Servlet接口,所有的Servlet都必須實現(xiàn)這一接口.javax.servlet.http包中定義了采用HTTP協(xié)議通信的HttpServlet類ServletAPI創(chuàng)建自定義ServletpublicvoiddoGet(HttpServletRequestreq,HttpServletResponseres)publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)用戶自定義的ServletGenericServletHttpServletServlet1.實現(xiàn)servlet接口2.繼承GenericServlet類3.繼承HttpServlet類,并重寫doGet()或doPost()方法實現(xiàn)對HTTP請求信息的動態(tài)響應(yīng)。(在Web程序設(shè)計中,表單數(shù)據(jù)的提交方法常用有兩種:Post方法和Get方法)創(chuàng)建自定義Servlet有兩個參數(shù):HttpServletRequest和HttpServletResponse,這兩個類實現(xiàn)了ServletRequest接口和ServletResponse接口ServletRequest接口中封裝了客戶請求信息.如客戶請求方式,參數(shù)名,參數(shù)值,客戶端正在使用的協(xié)議,以及發(fā)出客戶請求的遠(yuǎn)程主機信息等ServletResponse接口為Servlet提供了返回響應(yīng)結(jié)果的方法HelloWordServlet編寫一個HelloWordServlet類Servlet的生命周期Servlet容器創(chuàng)建Servlet的一個實例Servlet的生命周期就是指創(chuàng)建Servlet實例之后其存在的時間以及何時消失生命周期的3個方法為:init()service()destroy()Servlet的生命周期生命周期的各個階段為:實例化Servlet容器創(chuàng)建Servlet的實例初始化該容器調(diào)用init()方法服務(wù)如果請求Servlet,則容器調(diào)用service()方法銷毀實例之前調(diào)用destroy()方法銷毀不可用銷毀實例并標(biāo)記為垃圾收集Service方法會自動根據(jù)請求的方式,調(diào)用doGet或者doPost方法,如果Service方法被重寫,則doGet或者doPost方法失效部署、運行HelloWorldServlet在web.xml中部署Servlet后才能夠使用Servlet在瀏覽器中輸入,“http://localhost:8080/HelloWordServlet”,主要內(nèi)容12.1JSP簡介12.2JSP頁面元素12.3JSP內(nèi)置對象12.4Servlet12.5ServletAPI接口12.6開發(fā)Servlet12.5ServletAPI接口目的類、接口Servlet實現(xiàn)javax.servlet.Servlet,javax.servlet.SingleThreadModeljavax.servlet.GenericServlet,javax.servlet.http.HttpServletServlet配置javax.servlet.ServletConfigServlet異常javax.servlet.ServletException,javax.servlet.UnavailableException請求和應(yīng)答javax.servlet.ServletRequest,javax.servlet.ServletResponsejavax.servlet.ServletInputStream,javax.servlet.ServletOutputStreamjavax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse會話跟蹤javax.servlet.http.HttpSession,javax.servlet.http.HttpSessionBindingListenerjavax.servlet.http.HttpSessionBindingEventServlet上下文javax.servlet.ServletContextServlet協(xié)作javax.servlet.RequestDispatcher其他javax.servlet.http.Cookie,javax.servlet.http.HttpUtils一個簡單的JSP+Servlet實例<html>

<head>

<title>Sayhi.html</title>

<metahttp-equiv=“Content-Type”content=“text/html;charset=UTF-8”>

</head>

<body>

<h2>Servlet范例程序</h2>

<formname=“Sayhi”Method=“Post”action=“/myapp/Sayhi”>

<p>請訪問者輸入姓名:<inputtype="text"name="Name"size="30"></p><inputtype="submit"value="提交">

<inputtype="reset"value="清除">

</form>

</body>

</html>importjavax.servlet.*;importjavax.servlet.http.*;importjava.io.*;publicclassSayhiextendsHttpServlet{publicvoidinit(ServletConfigconfig)throwsServletException{

super.init(config);

}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(“text/html;charset=UTF-8”);

PrintWriterout=response.getWriter();

request.setCharacterEncoding(“UTF-8”);

StringName=request.getParameter(“Name”);

out.println(“<html>”);

out.println(“<head><title>Sayhi</title></head>”);

out.println(“<body>”);

out.println(“Hi”+Name);

out.println(“</body>”);

out.println(“</html>”);

out.close();

//RequestDispatcherrd=request.getRequestDispatcher("userlist.jsp");//request.setAttribute(“Name“,"hello“+Name);

//rd.forward(request,response);}}一個簡單的JSP+Servlet實例一個簡單的JSP+Servlet實例<?xmlversion="1.0"encoding="ISO-8859-1"?>

<web-appxmlns="/xml/ns/j2ee"

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_5.xsd"

version="2.5">

<servlet>

<servlet-name>Sayhi</servlet-name>

<servlet-class>Sayhi</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Sayhi</servlet-name>

<url-pattern>/Sayhi</url-pattern>

</servlet-mapping>

</web-app>

HttpSession使用實例importjav

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論