MyException - 我的异常网
当前位置:我的异常网» Java Web开发 » 用servlet实现图片自动换(用一个.jpg结尾的URL获得

用servlet实现图片自动换(用一个.jpg结尾的URL获得一张可变图片),求教怎么在每次被外链引用时按顺序更换图片(2)

www.MyException.Cn  网友分享于:2015-08-27  浏览:124次

外链的时候为什么session会取不到值呢,我在一个应用加上iframe src="另一个应用的servlet" 可以正常取到session里的attribute啊
------解决方案--------------------
帮顶
------解决方案--------------------
楼主可以试一下 使用过滤器,大体思路是根据请求是不是你要进行变换的图片,
如果不是则放行,如果是则进行处理,然后跳转到随机产生“魔术的”图片的url
主要大体代码如下
Java code

//执行过滤的核心方法
    public void doFilter(ServletRequest request,
        ServletResponse response, FilterChain chain)
        throws IOException,ServletException
    {
        //---------下面代码用于对用户请求执行预处理---------
        //获取ServletContext对象,用于记录日志
        ServletContext context = this.config.getServletContext(); 
        long before = System.currentTimeMillis();
        System.out.println("开始过滤...");
        //将请求转换成HttpServletRequest请求
        HttpServletRequest hrequest = (HttpServletRequest)request;
        //截取所有图片请求
        if(hrequest.getServletPath().equals("你的魔术图片的url"))
        {
          //生成随机数,产生随机url,进行魔术变换,相应的业务逻辑写到这里,
                    //最后调用context.getRequestDispatcher将图片请求的url转发
                    context.getRequestDispatcher("/img/daolian.gif").forward(request, response);
        }
        //Filter只是链式处理,请求依然放行到目的地址        
        chain.doFilter(request, response);
        
    }

------解决方案--------------------
感觉不需要这么复杂~~~你可以用javascript或<% %>嵌入java代码得到一个0—10的随机数,然后进行url拼接,比如:
Random r = new Random();
int a = r.nextInt(10);a为0-9这10个数
现实图片的url="/images/picture"+<%=a%>+".jpg" 把10张图片分别命名为picture0.jpg-picture9.jpg,每刷新一下都会得到一个随机数,而url也会变,图片也会变,而且不管多少张图片都可以~~

------解决方案--------------------
你可以这样试一下,把 刷新更换 这个链接的url用encode编码一下,这样就把sessionId放到请求头信息中了,这样或许会得到上一次的Session
------解决方案--------------------

------解决方案--------------------
这么多解决办法,人多办法多。
------解决方案--------------------
学习哦。。。
------解决方案--------------------
学习,虽然偶不太懂。。。
------解决方案--------------------
有结果了没?
------解决方案--------------------
我觉得哈

既然你是想要一个顺序的图片结果集,那图片的filename生成 就是一个单独的生成器来生成的,可以定义一个全局的static变量来维护,而和你的session是没有关系的。
------解决方案--------------------
你应该先获取当前的picname吧,获取的了然后往下面累加,如果picname为空,就是第一个开始便利,感觉你程序写的怪怪的
------解决方案--------------------
学习中,帮顶
------解决方案--------------------
帮顶

------解决方案--------------------
学习.....
------解决方案--------------------
学习中!
------解决方案--------------------
学习了~~~~~~~~~
------解决方案--------------------
学习一下
------解决方案--------------------
探讨
网上搜索了下,貌似response.getOutputStream()会由服务器自动关闭,不用手动关。

总结下现在的问题……
1.

response.setContentType("image/jpeg")是否必要?注释掉以后发现图片还是一样可以显示的,不放这行代码是否会有什么潜在问题?
2.

response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有