servlet接口 開發網頁版本需要實現自己的servlet 即繼承servlet接口
如果要訪問servlet需要配置內容到WEB-INF下的web.xml
<servlet>
<serlvet-name>HelloServlet</servlet-name>
<serlvet-class>com.ite.servlet.HelloServlet(即你的Servlet的全路徑)</servlet-class>
</serlvet>
用以向Tomcat服務器通知存在這個servlet並且具體路徑名是這個
註冊servlet的映射 servlet-name:找到上面註冊的具體servlet url-pattern:在地址欄上的path路徑
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
繼承了serlvet接口後 裏面需要實現接口中的方法 如service(HttpServletRequest req,HttpservletResponse resp)
可以找一個已經實現的Servlet的具體的實現類 直接中裏面實現的方法
Servlet(接口)---HttpServlet(抽象類 實現了servlet接口)
HTTPServlet中在實現service方法時候,內部進行了判斷,如果是如果是post get方式 那麼內部調用 doPost() doGet()方法
自己的servlet繼承HTTPServlet的時候 可以直接使用doPost doGet方法
服務器servlet生命週期:init初始化 初次訪問該servlet (只創建一次)--->訪問service (每次訪問都創建)-->destory(移除該項目和停止服務器)
ServletCongfig() 可以getServletName() 得到servlet的web.xml裏面的名字
getInitParameter("address")可以獲取具體的某一個參數
每個web工程只有一個ServletContext對象 不管在該項目中哪個Servlet裏面拿,得到的都是同一個
ServletContext也有getInitParameter()方法 用來拿到全局參數 (在web.xml 配置 <context-param></context-param>)
獲取web工程下的資源使用普通的FileInputStream 寫法是不對的 因爲路徑不對了
普通的FileInputStream是根據jre確定的,web下的路徑其實是根據---jre後面會由tomcat管理,所以真正的相對路徑在Tomcat的bin目錄裏
在web中讀取資源 可以使用ServletContext讀取 使用getResoureAsStream("file/config.properties") 得到相對路徑即web項目下的file下的配置文件的信息
也可以使用this.getClass().getClassLoader().getResourceAsstream("") 這個是得到WEB-INF下的class下的內容
HttpServletRequest 接收客戶端來的信息 getParameter("name")得到客戶端的東西(get post方式均可)
get post 的請求編碼問題
post的話 可以設置請求體編碼 setCharacterEncoding("UTF-8")
如果是get方式 那麼需要轉碼new String(username.getBytes("ISO-8859-1"),"UTF-8")
response.getWriter().write() 以字符流的方式寫數據
response.getOutputStream().write("llalala ".getBytes) 以字節流的形式寫數據
如果是以字符流的形式默認輸出ISO-8859-1格式 那麼會出現response中文亂碼問題 response.setCharacterEncoding("UTF-8")
也可以直接指定瀏覽器看的時候使用什麼編碼response.setHeader(Content-Type","text/html","charset=UTF-8") 或response.setContentType("text/html;charset=UTF-8")
如果以字節流的形式 那麼本身默認就輸出UTF-8格式
response.setHeader("Context-Disposition","attachment;filename="+filename) 讓瀏覽器收到這份資源的時候以下載的方式提供給用戶顯示
Cookie 和Session
response.addCookie("name","Bill") 瀏覽器第二次請求的時候會自動發送Cookie 到服務器端 服務器端request.getCookies()
Cookie設置時間爲-1 那麼直到瀏覽器關閉才無效 setMaxAge(秒)
Session是基於Cookie的一種會話數據 Session數據放在服務器端
request.getSession() session.setAttribute(name,value) session.getAttribute()