javaee開發 之Servlet

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()

 

 

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