一、JSP內(nèi)置對象session晦闰、application與Servlet技術(shù)
1.內(nèi)置對象session
session的作用域:當(dāng)使用瀏覽器訪問Web服務(wù)器時鳍怨、會創(chuàng)建一次會話(即session)鞋喇、我們可以向session中存儲信息,而這些信息在我們斷開服務(wù)器之前都是有效的落塑。
-向session中存儲數(shù)據(jù)
~~session.setAttribute(“key”罐韩,“value”);
-從session中獲取數(shù)據(jù)
~~Object obj = session.getAttribute(“key”)缠沈;
~~返回值類型為Object错蝴,需要強轉(zhuǎn)成我們需要的類型。
2.內(nèi)置對象application
application
是應(yīng)用級別的對象柬赐,在整個應(yīng)用程序擁有唯一作用域官紫,如果存在多個session州藕,則各個session之間公用一個application
-向application中存儲數(shù)據(jù)
~~application.setAttribute(“key”床玻,“value”)待牵;
-從application中獲取數(shù)據(jù)
~~Object obj = application.getAttribute(“key”)喇勋;
~~返回值類型為Object,需要強轉(zhuǎn)成我們需要的類型贰拿。
3.Servlet技術(shù)
創(chuàng)建一個servlet
1)首先將開發(fā)透視圖切換到Java EE
2)點擊創(chuàng)建一個servlet
3)輸入servlet名稱
4)點擊【Finish】
創(chuàng)建完成后熄云、會在web.xml中自動生成servlet映射
--<servlet>與<servlet-mapping>是成對出現(xiàn)的
--如果包含多個servlet皱碘,兩個<servlet-name>標簽值相同的<servlet>與<servlet-mapping>為一對。如下:
<servlet>
? ? ?<description></description>
? ? ?<display-name>HelloServlet</display-name>
? ? ?<servlet-name>HelloServlet</servlet-name>
? ? ?<servlet-class>com.FreeLee.Servlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
? ? ?<servlet-name>HelloSetvlet</servlet-name>
? ? ?<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
Servlet:
是server applet的組合健蕊,指運行在服務(wù)端的應(yīng)用程序踢俄,servlet最廣泛的應(yīng)用是接收客戶端表單請求,并給出響應(yīng)嫡锌。
可以在form表單action屬性上指定servlet的映射名稱琳钉,來請求目標servlet歌懒。
servlet使用請求轉(zhuǎn)發(fā)和重定向兩種跳轉(zhuǎn)方式響應(yīng)用戶的請求。
二甫男、JSP文件上傳技術(shù)、文件寫入數(shù)據(jù)表板驳、頁面相對路徑
1.JSP文件上傳
通過表單上傳文件
--表單enctype屬性設(shè)置為multipart/form-data
--使用<input type = " file "/>標簽
--接收時會得到一個輸入流若治,可根據(jù)需要將輸入流寫入目錄
DiskFileItemFactory factory = new ?DiskFileItemFactory();
ServletFileUpload upload = new ?ServletFileUpload(factory);
FileItemIterator iter = upload.getItemIteraort(request);
InputStream ?input = iter.next().openStream();
2.文件寫入本地磁盤
使用FileOutputStream指向磁盤文件(例:Freelee)
FileOutputStream output = new FileOutputStream("c:/Freelee.doc");
byte[] buffer = new byte[512];
int length = 0;
whlie ((length = input.read(buffer)) > 0){
? ? ? ?output.write(buffer,0,length);
}
output.close();
input.close();
3.文件寫入數(shù)據(jù)庫
使用setBinaryStream方法存儲二進制數(shù)據(jù)
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql'//localhost:3308/mingtian10";
Connection conn = DriverManager.getConnection(url,"root","mysql");
String sql = "insert into mt(code,name,image) values (?,?,?)";
preparedStatement pstmt = conn.prepaerStatement(sql);
pstmt.setInt(1,100);
pstmt.setString(2,"zhangsan");
pstmt.setBinaryStream(3,input,input.available());
pstmt.execute();
4.上傳文件顯示的相對路徑問題
上傳文件后直砂,需要使用相對路徑將圖片顯示到頁面
--request.getContextPath()獲取項目根目錄