zoukankan      html  css  js  c++  java
  • jee第三周

    1.P132例子

    long before = System.currentTimeMillis();

    保存filter类作用开始时间,用来显示filter类作用范围

    long after = System.currentTimeMillis();

    保存filter类作用结束时间,用来显示filter类作用范围

    ServletContext context = this.config.getServletContext();

    获取ServletContext对象,用于记录日志

    HttpServletRequest hrequest = (HttpServletRequest)request;

    将ServletRequest请求强制转换成HttpServletRequest请求

    System.out.println("Filter已经截获到用户的请求的地址: " +hrequest.getServletPath());

    通过.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()异步上下文的 方法将提交响应并将其发送给客户端。

    运行效果不同之处:使用异步处理后的例子在大负载的情况下响应速度变快,服务器吞吐量变大

  • 相关阅读:
    HDU 1556 Color the ball【树状数组】
    HDU 3015 Disharmony Trees 【 树状数组 】
    POJ 1990 MooFest【 树状数组 】
    codeforces 493 C Vasya and Basketball
    12、Decorator 装饰器 模式 装饰起来美美哒 结构型设计模式
    11、Composite 组合模式 容器与内容的一致性(抽象化) 结构型设计模式
    10、Strategy 策略模式 整体地替换算法 行为型模式
    9、Bridge 桥梁模式 将类的功能层次结构与实现层结构分离 结构型设计模式
    读源码从简单的集合类之ArrayList源码分析。正确认识ArrayList
    8、Builder 建造者模式 组装复杂的实例 创造型模式
  • 原文地址:https://www.cnblogs.com/liyu-sky/p/8647681.html
Copyright © 2011-2022 走看看