1 配置filter,非拦截器, 过滤请求.
web.xml:
<filter-mapping>
<filter-name>imageRedirectFilter</filter-name>
<url-pattern>/upload/images/*</url-pattern>
</filter-mapping>
源代码:
public class ImageRedirectFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req
HttpServletResponse response = (HttpServletResponse) res
// 禁止缓存
response.setHeader("Cache-Control", "no-store")
response.setHeader("Pragrma", "no-cache")
response.setDateHeader("Expires", 0)
// 链接来源地址
String referer = request.getHeader("referer")
System.out.println("refer is"+referer)
if (referer == null || !referer.contains(request.getServerName())) {
/**
* 如果 链接地址来自其他网站,则返回错误图片
*/
request.getRequestDispatcher("/error.gif").forward(request, response)
} else {
/**
* 图片正常显示
*/
chain.doFilter(request, response)
}
}
public void destroy() {
}
}
2 在放置图片的folder内添加.htaaccess的支持
类似下面这样
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !simcolecn [NC]
RewriteCond %{HTTP_REFERER} !zhuaxiacom [NC]
RewriteCond %{HTTP_REFERER} !googlecom [NC]
RewriteCond %{HTTP_REFERER} !baiducom [NC]
RewriteCond %{HTTP_REFERER} !bloglinescom [NC]
RewriteRule (jpg|gif|png|bmp|swf|jpeg) /image/replacegif [RNCL]
RewriteRule ^(*)$ $ [L]
java实现超链接下载方法如下:
response.setHeader("Content-disposition","attachmentfilename="下载的文件名字)备注:让response调用setheader方法添加下载的头给客户的浏览器,浏览器收到该头后就会打开相应的下载对话框。
兼容性强网校系统Java语言编写,可以在少量修改或者在不改的情况下,就可以多平台运行,这种优势是其他语言编写无法完成的事,这是语言本身的优势,而且采用Java编写还能更好的处理数据,比如pc端和手机端的数据统一,ios端和Android端的数据统一,可以说在时间成本上节约了很多。
防攻击,安全性高
大家都知道,网校等发展一定规模后,安全就成了网校需要解决的事,而Java编写的语言,前期就可以解决这样的问题,它的安全系数是非常高的,语言本身的安全性较佳,对于防病毒等,比其他语言拥有更多的优势。不仅能够防止挂马、盗链、恶意下载等,还能保护注册学员的信息不被窃取,确保音视频课程不会被盗取。总之,想要攻击用java编写的语言,是难上加难。
多线程运行,加载速度快
Java语言编写网校系统,打破用户进入课堂卡顿问题,尤其是进行大班授课,或者公开课时,学员听课时非常多的,java可以确保这么多人同时进入课程时,速度快。这是java编写网校系统的优势,在处理多线程方面是优秀的,让系统多任务同时启动,而且交互性也很强,使用者体验度高,学员课堂效率也会变高。
后期添加功能方便
比如,线下转线上教育,需要搭建网校,因为刚刚开始,功能需求不是很多,那么等后期学员越来越多以后,肯定是需要增加的,那么这个时候就Java就起到作用了,java语言就可以轻松实现,这源于它动态的特点,在扩展功能是可以将新的代码加入到运行程序中,这是容易实现的,没有太多复杂的地方。所以利用java编写,在后续加功能或者升级时,都带来很多便利。