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

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

相关文章
相关标签/搜索