jee第三週

1.P132例子java

long before = System.currentTimeMillis();web

保存filter類做用開始時間,用來顯示filter類做用範圍瀏覽器

long after = System.currentTimeMillis();安全

保存filter類做用結束時間,用來顯示filter類做用範圍服務器

 

ServletContext context = this.config.getServletContext();cookie

獲取ServletContext對象,用於記錄日誌session

 

HttpServletRequest hrequest = (HttpServletRequest)request;app

將ServletRequest請求強制轉換成HttpServletRequest請求異步

 

System.out.println("Filter已經截獲到用戶的請求的地址: " +hrequest.getServletPath());jsp

經過.getServletPath()方法返回一個URL對象,獲得用戶請求的地址,fliler類只是在用戶發送請求後將用戶請求的地址顯示出來

 

filter用戶受權例子

LoginFilter.java

public class LoginFilter implements Filter { 

 

    private String permitUrls[] = null; 

    private String gotoUrl = null; 

    public void destroy() { 

        // TODO Auto-generated method stub 

        permitUrls = null; 

        gotoUrl = null; 

    } 

    public void doFilter(ServletRequest request, ServletResponse response, 

            FilterChain chain) throws IOException, ServletException { 

        // TODO Auto-generated method stub 

        HttpServletRequest res=(HttpServletRequest) request; 

        HttpServletResponse resp=(HttpServletResponse)response; 

        if(!isPermitUrl(request)){ 

            if(filterCurrUrl(request)){ 

                System.out.println("--->請登陸"); 

                resp.sendRedirect(res.getContextPath()+gotoUrl); 

                return; 

            } 

        } 

        System.out.println("--->容許訪問"); 

        chain.doFilter(request, response); 

    } 

    public boolean filterCurrUrl(ServletRequest request){ 

        boolean filter=false; 

        HttpServletRequest res=(HttpServletRequest) request; 

        User user =(User) res.getSession().getAttribute("user"); 

        if(null==user) 

            filter=true; 

        return filter;  

    }       

    public boolean isPermitUrl(ServletRequest request) { 

        boolean isPermit = false; 

        String currentUrl = currentUrl(request); 

        if (permitUrls != null && permitUrls.length > 0) { 

            for (int i = 0; i < permitUrls.length; i++) { 

                if (permitUrls[i].equals(currentUrl)) { 

                    isPermit = true; 

                    break; 

                } 

            } 

        } 

        return isPermit; 

    }        

    //請求地址 

    public String currentUrl(ServletRequest request) {   

        HttpServletRequest res = (HttpServletRequest) request; 

        String task = request.getParameter("task"); 

        String path = res.getContextPath(); 

        String uri = res.getRequestURI(); 

        if (task != null) {// uri格式 xx/ser 

            uri = uri.substring(path.length(), uri.length()) + "?" + "task="

                    + task; 

        } else { 

            uri = uri.substring(path.length(), uri.length()); 

        } 

        System.out.println("當前請求地址:" + uri); 

        return uri; 

    } 

    public void init(FilterConfig filterConfig) throws ServletException { 

        // TODO Auto-generated method stub 

        String permitUrls = filterConfig.getInitParameter("permitUrls"); 

        String gotoUrl = filterConfig.getInitParameter("gotoUrl"); 

  

        this.gotoUrl = gotoUrl; 

  

        if (permitUrls != null && permitUrls.length() > 0) { 

            this.permitUrls = permitUrls.split(","); 

        } 

    } 

Web.xml

<filter> 

 

    <filter-name>loginFilter</filter-name> 

    <filter-class>filter.LoginFilter</filter-class> 

  

    <init-param> 

        <param-name>ignore</param-name> 

        <param-value>false</param-value> 

    </init-param> 

    <init-param> 

        <param-name>permitUrls</param-name> 

        <param-value>/,/servlet/Loginservlet?task=login,/public.jsp,/login.jsp</param-value> 

    </init-param> 

    <init-param> 

        <param-name>gotoUrl</param-name> 

        <param-value>/login.jsp</param-value> 

    </init-param> 

</filter> 

<filter-mapping> 

    <filter-name>loginFilter</filter-name> 

    <url-pattern>/*</url-pattern> 

</filter-mapping>

引用地址:http://www.jb51.net/article/38730.htm

 

2.session

定義:具體到Web中的Session指的就是用戶在瀏覽某個網站時,從進入網站到關閉瀏覽器所通過的這段時間,也就是用戶瀏覽這個網站所花費的時間。所以從上述的定義中咱們能夠看到,Session其實是一個特定的時間概念。

 

用途:Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

 

session in JEE:

Java Servlet API引入session 機制來跟蹤客戶的狀態,session指的是在一段時間內,單個客戶和web服務器之間一連串的交互過程,在一個session中,一個客戶可能會屢次請求同一個網頁,也可能請求多個不一樣服務器資源,例如:在一個郵件系統應用中,從一個客戶登陸到郵件系統,到寫信,收信和發信等,到最後退出郵件系統,整個過程爲一個session;再例如:你們在網上購物的時候,從購物到最後的付款,整個過程也是一個session 。

 session對像是jsp中的內置對象,能夠直接使用;在Servlet中使用session時,必須先建立出該對象,Servlet中建立session的方法:

HttpSession session=request.getSession();或   HttpSession session=request.getSession(boolean value);

 在服務器上,經過session ID來區分每個請求服務器的用戶,用戶只要一鏈接到服務器,服務器就會爲之分配一個惟一的不會重複的session ID,session ID由服務器統一管理,人爲不能控制

 session中的主要方法:

         session.getId();//獲取session ID,長度爲32位

session.isNew();//判斷是不是新創建的session 

session.getCreationTime();//獲取session建立的時間   
        session.getLastAccessedTime();//獲取用戶最後操做時間

sesson.setAttribute(String key,Object value);//將對象存到session中    
        session.getAttribute(String key);//獲取session中存的Object對象   

session.removeAttribute(String key);//將鍵值爲key的對象從session中刪除
        session的銷燬

         web容器關閉或重啓,session會死亡
        調用session.invalidate();方法,強制session死亡
        先後兩次請求超過了session指定的生命週期時間,默認爲30分鐘,咱們能夠經過在web.xml文件中進行以下配置:
Xml代碼 
<session-config>  
      <session-timeout>5</session-timeout>  
</session-config>  

 也能夠調用session.setMaxInactiveInterval(int intelval);方法來設置,單位爲秒

轉載地址: https://blog.csdn.net/u013510614/article/details/50480993

 

session與cookie的區別:1.Session將信息保存在服務器上,而Cookie保存在客戶端上。2.Session比Cookie更安全,Session比Cookie更佔資源。3.session使用cookie的機制,若是cookie被禁用,那麼session也沒法使用,由於session ID是以cookie的形式保存在客戶端的內存當中

 

3.JEETT 

異步例子區別:

1.註釋時asyncSupported=true,顯式指定開啓異步調用

2.request.startAsync()致使請求被異步處理; 在服務方法結束時,響應不會發送到客戶端。

3.acontext.start(new Runnable() {…​}) 從容器中獲取新線程。

4.run()內部類的方法內的代碼在新線程中執行。內部類能夠訪問異步上下文以從請求讀取參數並寫入響應。調用complete()異步上下文的 方法將提交響應並將其發送給客戶端。

運行效果不一樣之處:使用異步處理後的例子在大負載的狀況下響應速度變快,服務器吞吐量變大

相關文章
相關標籤/搜索