[TOC]
# HTTP請求

# request獲得請求行
獲得客戶端的請求方式:String getMethod()
獲得請求的資源:
~~~
String getRequestURI()
StringBuffer getRequestURL()
String getContextPath() ---web應用的名稱
String getQueryString() ---- get提交url地址后的參數字符串
username=zhangsan&password=123
~~~
注意:request獲得客戶機(客戶端)的一些信息
request.getRemoteAddr() --- 獲得訪問的客戶端IP地址
# request獲得請求頭
~~~
long getDateHeader(String name)
String getHeader(String name)
Enumeration getHeaderNames()
Enumeration getHeaders(String name)
int getIntHeader(String name)
~~~
referer頭的作用:執行該此訪問的的來源
做防盜鏈
# request獲得請求體
請求體中的內容是通過post提交的請求參數,格式是:
~~~
username=zhangsan&password=123&hobby=football&hobby=basketball
key ---------------------- value
username [zhangsan]
password [123]
hobby [football,basketball]
~~~
以上面參數為例,通過一下方法獲得請求參數:
~~~
String getParameter(String name)
String[] getParameterValues(String name)
Enumeration getParameterNames()
Map<String,String[]> getParameterMap()
~~~
注意:get請求方式的請求參數 上述的方法一樣可以獲得
解決post提交方式的亂碼:request.setCharacterEncoding("UTF-8");
解決get提交的方式的亂碼(每一個參數都要這樣):
parameter = new String(parameter.getBytes("iso8859-1"),"utf-8");
# request的其他功能
## request是一個域對象
request對象也是一個存儲數據的區域對象,所以也具有如下方法:
~~~
setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)
~~~
注意:request域的作用范圍:一次請求中
## request完成請求轉發
獲得請求轉發器----path是轉發的地址
~~~
RequestDispatcher getRequestDispatcher(String path)
~~~
通過轉發器對象轉發
~~~
requestDispathcer.forward(ServletRequest request, ServletResponse response)
~~~
~~~
RequestDispatcher requestDispathcer = request.getRequestDispatcher("/MyRequest");
requestDispathcer.forward(request, response);
~~~
# ServletContext域與Request域生命周期
ServletContext:
創建:服務器啟動
銷毀:服務器關閉
域的作用范圍:整個web應用
request:
創建:訪問時創建request
銷毀:響應結束request銷毀
域的作用范圍:一次請求中
# 轉發與重定向的區別
1)重定向兩次請求,轉發一次請求
2)重定向地址欄的地址變化,轉發地址不變
3)重新定向可以訪問外部網站 轉發只能訪問內部資源
4)轉發的性能要優于重定向
# 客戶端地址與服務器端地址的寫法?
客戶端地址:
是客戶端去訪問服務器的地址,服務器外部的地址,特點:寫上web應用名稱 直接輸入地址:
重定向
服務器端地址:
服務器內部資源的跳轉的地址,特點:不需要寫web應用的名稱
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化