WEB項目

1.web項目

運行環境web容器----->web程序的運行環境
web容器:tomcat最常用的,glassfish等等 weblogic、websphere收費
的等等
2.tomcat的安裝
tomcat與jdk版本對應
2.1解壓 並瞭解tomcat的目錄結構
bin 啓動停止的命令都在這個目錄下
conf 關於tomcat的配置信息
lib目錄 tomcat提供的jar JavaEE只是一個平臺標準提供了接口
具體的實現由各web容器自己完成,當然也有容器自己的jar
webapps 這裏面是默認的項目發佈目錄
裏面包含了一些項目,這些項目有提供給我們學習的,也有幫助
2.2啓動和關閉tomcat
a.配置環境變量
JAVA_HOME
PATH %JAVA_HOME%\bin
b.啓動
bin/startup.bat 雙擊即可 從瀏覽器中訪問http://localhost:8080出現首頁
就說明tomcat就安裝成功
c.關閉
bin/shutdown.bat 雙擊即可

3.手動開發第一個WEB項目
3.1 熟悉web項目的目錄結構
發佈的目錄結構
3.2創建項目的目錄結構
a.在webapps下構建 比如項目名稱aaa,創建aaa文件夾
b.aaa文件下構建WEB-INF目錄
c.在WEB-INF創建web.xml文件
直接從root項目中粘貼過來,留下頭尾即可
d.在aaa目錄下創建一個靜態頁面文件index.html
e.啓動tomcat
在地址欄中
http://localhost:8080/aaa/index.html
http://ip地址:port/項目名/頁面(項目目錄)
3.3手動寫一個
a.寫一個類繼承HttpServlet
重寫doGet方法,輸出一個語句
b.編譯
javaEE只提供了標準,沒有提供實現 實現容器自己去完成的
對於tomcat jar都放在了tomcat/lib/*.jar
配置classpath環境變量
set classpath=D:\java\apache-tomcat-8.5.35\lib\servlet-api.jar
c.發佈到tomcat容器中配置web.xml文件
使用aaa項目
c.1先把class拷貝到WEB-INF的classes目錄下(簡歷classes目錄–>有包建立包)
c.2配置web.xml文件

<servlet>
	<servlet-name>helloServlet</servlet-name>
	<servlet-class>HelloServlet</servlet-class>
 </servlet>
<servlet-mapping>
	<servlet-name>helloServlet</servlet-name>
	<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

c.3重啓tomcat訪問servlet
http://ip地址:port/項目名servlet的urlpattern

4.在eclipse中建立web項目
4.1創建---->Dynamic web project
界面中填寫project name---->Servlet(起名子即可)
target runtime---->new runtime
5.
6.Servlet的講解
6.1Servlet生命週期 繼承HttpServlet
init方法----------->初始化Servlet
service方法------>處理請求的
一般不需要重寫service方法,重寫doGet,doPost方法即可
如果不重寫service方法,Servlet會根據請求時那種方法,get
請求調用doGet方法,post請求調用doPost方法
destory方法------>不用去管它
注意:我們也可以直接繼承GenericServlet 不繼承HttpServlet
HttpServlet本身就是GenericServlet的子類,提供了更多的
服務,我們一般繼承HttpServlet,生命週期中的三個核心方法
都是GenericServlet中的
我們直接用的時候直接繼承HttpServlet即可
然後重寫doGet,doPost方法,分別代表get請求和post請求
其實不管get請求,還是post請求,處理方式類似,所以一般
習慣在doGet中調用一下doPost 或 在doPost中調用一下doGet

6.2 Servlet的配置信息
init()無參數 init(ServletConfig)
參數

<init-param>
		<param-name>hello</param-name>
		<param-value>helloword</param-value>
		</init-param>

ServletConfig類中包裝了當前Servlet的配置信息
6.3 Servlet 請求和響應
a. 請求數據是封裝在HttpServletRequest對象中的
響應數據是封裝在HttpServletResponse對象中的
b. Servlet如何獲取請求數據
請求數據如何提交給Servlet
如 果表單action屬性是訪問Servlet的url
超鏈接href屬性是訪問Servlet的url
url使用相對路徑----->相當於當前項目http://ip:port/項目名/
只要寫Servlet的url(/不需要)
url使用絕對路徑----->相當於http://ip:port
寫/項目名+urlpattern內容(需要/)
獲取請求數據
request.getParameter(請求表單的名稱)
request.getParameterValues()---->針對複選按鈕
超鏈接(地址欄)如何提交請求數據
get請求提交的數據會在地址欄中顯示
post請求提交的數據地址欄中顯示不出來
多個請求數據中間&符號隔開
c.請求數據的中文問題
c.1 post請求提交中文 get請求請不要提交中文(也可已解決)
request.setCharacterEncoding(項目的編碼);----------->post請求中的
c.2響應
reponse 設置響應頭
response.setContentType(“text/html;charset=項目編碼”);

6.4 Servlet好像做了頁面的工作
將來Servlet主要做控制,業務調用。不做頁面,頁面內容交給jsp
我們還沒學jsp,現在拿Servlet既做業務邏輯處理也做頁面
Servlet最終作爲控制器使用
響應去另外的頁面如何處理
重定向 reponse.sendRedirect(url)----->發送了新的請求
跳轉的方式

歡迎頁------>web.xml文件進行配置

<welcome-file-list>
		<welcome-file>login.html</welcome-file>
	</welcome-file-list>	

6.5 Servlet實例的創建
a.web容器創建,只創建一次
b.我們之前看到的servlet是在下給你器發送請求,Servlet實例纔會被創建
Servlet實例也可以在項目啓動的時候直接創建,將來用於加載項目中的一些
準備數據 在web.xml文件中的Sevlet配置中配置如下
例如 <load-on-startup>數字</load-on-startup>

7.會話管理
7.1全局範圍的數據ServletContext(上下文)
a.全局數據配置
b.ServletContext的一些常用方法
getContextPath()----->/項目名稱
getRealPath(" ")//得到項目的發佈路徑—>不同的eclipse
位置可能不一樣,有的直接就在tomcat的webapp下,有的
是在工作目錄下的
如:D:\java\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0
\wtpwebapps\servletlesson2
getServerInfo() 獲取web容器(還可以湖區很多關於web容器的信息)
類的一些方法信息,可以查詢幫助文檔
c.保存數據(是全局的)
ServletContext實例,整個項目中對象是唯一的
servletContext.setAttribute(“屬性名”,“屬性值”)
(強制類型)servletContext.getAttribute(“屬性名”);
d.把Servlet作爲一個頁面,計算該頁面的訪問量(刷新一次也算一次新的訪問)
e.ServletContext的監聽器
e.1 ServletContextListener(生命週期)
需要配置web.xml文件,監聽器纔會起作用

<listener>
	<listener-class>servlet.ContextListener</listener-class>
	</listener>

1.2請求範圍內(HttpServletRequest request)
a. request.setAttribute(“屬性名”,“屬性值”);
request.getAttribute(“屬性名”);
同一個請求內有效(url地址不能發生變化)
b. 之前講解的sendRedirect是重定向會發送新的請求
如果點擊超鏈接,也是發送新的請求
如何去另外一個頁面,還是同一個請求呢
要用的是跳轉 forward
c.除了首頁之外,我們習慣把頁面藏到WEB-INF目錄下
這樣就避免了直接訪問項目目錄下的頁面
放到WEB-INF下的 必須通過forward才能訪問到

1.3用戶範圍(HttpSession)
a.request.getSession()//直接獲取session沒有就創建
request.getSession(boolean create) //有都是直接用,如果true沒有session就創建 一個, 如果false,沒有就返回null
b.session的原理
當發送請求,服務器第一次有session創建創建時,會給session分配一個
唯一的標識。服務器給客戶端響應的時候,會把這個sessionId跟隨響應寫
到客戶端機器,下次當用戶再次發送請求,sessionId會跟隨請求發送給服務
器,服務器會去驗證sessionId。就能夠分清楚誰是誰?(這個技術在web中是
通過cookie來實現的)
所以直接關閉瀏覽器,session就課能沒有銷燬,就存在不安全的因素
c.修改之前的ListServlet案例
以後Servlet不用來做頁面,只做控制,頁面交給jsp來做
d.session的監聽器
一定要做安全退出
HttpSessionListener監聽session的創建和銷燬
session的銷燬:a.調用invalidate()
b.有效時間到了(一段時間內沒有和服務器產生任何交互,就會失效)
到web.xml文件中配置

<session-config> <session-timeout>30</session-timeout> </session-config>

2 Cookie
2.1Cookie = new Cookie(name,value)
cookie.setMaxAge()
reponse.addCookie()
request.getCookies();
目錄:IE------>Internal選項----->設置
C:\Users\Administrator\AppData\Local\Microsoft\Windows
2.2如果cookie禁用了需要使用url重寫(jsp再去看)

3.過濾器
3.1post請求中的編碼問題
每個處理的地方都需要做request.setCharacterEncoding(“utf-8”)
能不能就一次處理
過濾器---->對請求進行攔截,攔截後可以做中文處理、權限控制等
然後交給Servlet處理----->響應時還要經過過濾器–>再響應
3.2創建一個類實現Filter接口
在web.xml中進行配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章