一、重點(diǎn)問題
ios提交數(shù)據(jù)不支持get請(qǐng)求
get提交解決中文亂碼問題,在tomcat目錄下改server.xml目錄
javaweb項(xiàng)目中默認(rèn)首頁是可以改的,但是不建議改
設(shè)置字符編碼集不區(qū)分大小寫
只有post請(qǐng)求可以返回請(qǐng)求體長(zhǎng)度
重定向會(huì)發(fā)兩次請(qǐng)求,而轉(zhuǎn)發(fā)只發(fā)一次請(qǐng)求
數(shù)據(jù)庫(kù)表存儲(chǔ)數(shù)據(jù)數(shù)據(jù)庫(kù)本身并沒有限制,而是電腦硬盤限制存儲(chǔ)數(shù)據(jù)數(shù)量
二、課堂知識(shí)
第1節(jié) Servlet是什么
1. 從廣義上來講,Servlet規(guī)范是Sun公司制定的一套技術(shù)標(biāo)準(zhǔn),包含與Web應(yīng)用相關(guān)的一系列接口,是Web應(yīng)用實(shí)現(xiàn)方式的宏觀解決方案。而具體的Servlet容器負(fù)責(zé)提供標(biāo)準(zhǔn)的實(shí)現(xiàn),也就是tomcat為你創(chuàng)建對(duì)象
?
2. 從狹義上來講,Servlet指的是javax.servlet.Servlet接口及其子接口,也可以指實(shí)現(xiàn)了Servlet接口的實(shí)現(xiàn)類
?
3. Servlet作為服務(wù)器端的一個(gè)組件,它的本意是“服務(wù)器端的小程序”。Servlet的實(shí)例對(duì)象由Servlet容器負(fù)責(zé)創(chuàng)建;Servlet的方法由容器在特定情況下調(diào)用;Servlet容器會(huì)在Web應(yīng)用卸載時(shí)銷毀Servlet對(duì)象的實(shí)例
?</pre>
第2節(jié) Servlet的技術(shù)體系
1. Servlet接口:是sun公司針對(duì)于web技術(shù)提供的一套標(biāo)準(zhǔn)(接口)
2. GenericServlet:對(duì)servlet功能進(jìn)行了封裝和完善,將service方法保留為抽象方法,讓使用者僅關(guān)心業(yè)務(wù)實(shí)現(xiàn)。
3. HttpServlet抽象類是對(duì)GenericServlet進(jìn)一步封裝和擴(kuò)展更貼近HTTP協(xié)議下的應(yīng)用程序編寫,在service方法中根據(jù)不同HTTP請(qǐng)求類型調(diào)用專門的方法進(jìn)行處理
4. 今后在實(shí)際使用中我們只需要繼承HttpServlet并且實(shí)現(xiàn)doget和dopost方法即可。
5. ServletConfig接口:封裝了Servlet配置信息</pre>
第3節(jié) ServletConfig配置獲取
// 在web.xml中配置
?
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.qianfeng.servlet.HelloServlet</servlet-class>
<init-param>
<param-name>userName</param-name>
<param-value>admin123</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping></pre>
??
</center>
在servlet組件中獲取配置信息
?
//獲取上下文ServletConfig
ServletConfig servletConfig = getServletConfig();
String userName = servletConfig.getInitParameter("userName");
System.out.println(userName);</pre>
第4節(jié) Servlet使用
- 使用Servlet接口實(shí)現(xiàn)Web的方式一
1. 使用eclipse創(chuàng)建JavaWeb動(dòng)態(tài)工程 (2.5版本的web項(xiàng)目)
2. 添加jar包 javaee-api-7.0.jar
3. 創(chuàng)建MyServlet類,extend Servlet接口
4. 在web.xml中注冊(cè)MyServlet類
5. 創(chuàng)建請(qǐng)求頁面,編寫業(yè)務(wù)代碼</pre>
- 使用GenericServlet類實(shí)現(xiàn)Web的方式二
GenericServlet類是對(duì)Servlet接口的進(jìn)步一封裝,并且將service方法抽象化,讓用戶將重心放在具體的業(yè)務(wù)上</pre>
- 使用HttpServlet類實(shí)現(xiàn)Web的方式三
HttpServlet類是對(duì)GenericServlet類的更進(jìn)步一封裝,并且抽象出doGet、doPost方法,更方便用戶處理前端發(fā)送過來的GET/POST請(qǐng)求
?
?
request對(duì)象的常用方法?
1. String getParamter(String name) : 返回指定name參數(shù)的參數(shù)值
2. String[] getParameterValues(String name) : 返回包含name參數(shù)的所有值
3. void setAttribute(String, object) : 存儲(chǔ)此請(qǐng)求域中的數(shù)據(jù)
4. Object getAttribute(String) : 從域中取出對(duì)象
5. String getProtocol() : 返回請(qǐng)求中的協(xié)議類型及版本號(hào)
6. String getServerName() : 返回接受請(qǐng)求的服務(wù)器主機(jī)名
7. int getServerPort() : 獲取服務(wù)器對(duì)應(yīng)的端口號(hào)
8. String getCharacterEncoding() : 返回字符集編碼
9. void setCharacterEncoding() : 設(shè)置請(qǐng)求的字符集編碼
10. int getContentLength() : 返回請(qǐng)求體的長(zhǎng)度【字節(jié)數(shù)】
11. String getRemoteAddr() : 返回發(fā)送此請(qǐng)求的客戶端IP地址,返回的ip地址中的0代表任意瀏覽器都可以訪問</pre>
第5節(jié) 轉(zhuǎn)發(fā)和重定向
- 請(qǐng)求轉(zhuǎn)發(fā)
1. Servlet接受瀏覽器發(fā)送過來的請(qǐng)求之后進(jìn)行初步處理而不是直接響應(yīng)給前端頁面,而是在服務(wù)器內(nèi)部轉(zhuǎn)發(fā)給其他的servlet程序繼續(xù)處理,這種情況下瀏覽器只發(fā)出了一次請(qǐng)求,瀏覽器地址欄不會(huì)發(fā)生變化,用戶不會(huì)感知到地址欄被轉(zhuǎn)發(fā)
2. 轉(zhuǎn)發(fā)請(qǐng)求的Servlet和目標(biāo)Servlet共享同一個(gè)request對(duì)象
3. 轉(zhuǎn)發(fā)可以訪問WEB-INF目錄下的資源
?
轉(zhuǎn)發(fā)語法:
request.getRequestDispatcher("/ok.html").forward(request, response);</pre>
- 請(qǐng)求重定向
1. Servlet接收到瀏覽器端請(qǐng)求并處理完成后,給瀏覽器端一個(gè)特殊的響應(yīng),這個(gè)特殊的響應(yīng)要求瀏覽器去請(qǐng)求一個(gè)新的資源,整個(gè)過程中瀏覽器端會(huì)發(fā)出兩次請(qǐng)求,且瀏覽器地址欄會(huì)改變?yōu)樾沦Y源的地址
2. 重定向的情況下,因?yàn)榘l(fā)送兩次請(qǐng)求,所以原Servlet和目標(biāo)資源之間就不能共享請(qǐng)求數(shù)據(jù)了
3. 重定向不能訪問WEB-INF下的資源(因?yàn)橹囟ㄏ蚴强蛻舳税l(fā)出的動(dòng)作)
?
重定向語法:
resp.sendRedirect("ok.html");</pre>
- 轉(zhuǎn)發(fā)和重定向的區(qū)別
?
| 轉(zhuǎn)發(fā)和重定向 |
| | 轉(zhuǎn)發(fā) | 重定向 |
| 瀏覽器地址欄 | 不改變 | 改變 |
| 發(fā)送請(qǐng)求次數(shù) | 1 | 2 |
| 能否共享request對(duì)象數(shù)據(jù) | 是 | 否 |
| 目標(biāo)資源:WEB-INF下的資源 | 能訪問 | 不能訪問 |
?