勤学教育网合作机构>石家庄培训>

石家庄兄弟连教育

欢迎您!

全国统一学习专线 8:30-21:00
石家庄兄弟连教育

石家庄兄弟连分层次分阶段的学习,由浅入深,根据学员的不同层次因材施教,授课中使用的案例都是真实的案例

石家庄兄弟连教育> 石家庄教育培训>

石家庄java学校

  • 课程介绍

  • 相关知识

  • 2019-11-13
石家庄兄弟连教育

Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。即使是简单的 servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。

石家庄兄弟连课程体系




java发展前景  Java发展前景  
随着IT产业的发展,许多企业中的计算机应用程序也在随之转型,企业中所应用的计算机模式逐渐向客户端较小、服务器随之增大、数据库的容量也在相应增加的方向转变。此外,加上Java语言独有的特点,根据其在各项服务器中应用程序的开发所占有的优势,企业版的J2SE为企业环境中计算机模式的应用提供了良好的平台。
 

大咖教学天团,课程体系引领IT革新
他们曾经敲过的代码现如今已是业界标杆,是中国互联网的参与者与见证者!

  • 马如忠 马如忠 icon

    精通Java、C、C++等主流开发语言,5年以上开发经验,非常丰富的IT从业经验和教育心得,兄弟连特色JAVA讲师,曾担任达内课程总监级讲师。

  • 李康 李康 icon

    曾任用友软件,飞企集团等上市公司技术总监,CTO等职务,12年以上的软件开发和项目管理经验,领导并参与研发中国移动ERP终端系统。


石家庄兄弟连以“让学员技术靠谱、做人更靠谱”为使命,传承更好的工匠精神,深耕PHP、Java、大数据、Python全栈+人工智能、Linux云计算、UI设计、前端全栈、网络营销等学科教研,拥有来自北大、清华和BAT等知名校企的专兼职教师数百名。超前的产品研发、线上线下相结合的科学教学模式和严格的教务管理体系共同确保了教学质量,使数十万名学员、从业人员和IT爱好者受惠,为华为、阿里巴巴、腾讯、百度、联想、京东等国内7000多家企业输送数万名软件开发和网络营销人才。


体验才是王道
高起点才更牛叉
缔造Java课程行业新标准
 
 

详情请进入 石家庄兄弟连教育 已关注:131 咨询电话:

相关知识点:在Java Web应用程中,特别是网站开发中,我们有时候需要为应用程序增加一个屹立定式侵检测程序来防止恶意刷新的功能,防止非法用户不断的往Web应用中重复发送数据。当然,屹立定式侵检测可以用很多方法实现,包括软件、硬件防火墙,屹立定式侵检测的策略也很多。在这里我们主要介绍的是Java Web应用程序中通过软件的方式实现简单的屹立定式侵检测及防御。  该方法的实现原理很简单,就是用户访问Web系统时记录每个用户的信息,然后进行对照,并根据设定的策略(比如:1秒钟刷新页面10次)判断用户是否属于恶意刷新。  我们的屹立定式侵检测程序应该放到所有Java Web程序的执行前,也即若发现用户是恶意刷新就不再继续执行Java Web中的其它部分内容,否则就会失去了意义。这就需要以插件的方式把屹立定式侵检测的程序置屹立定式Java Web应用中,使得每次用户访问Java Web,都先要到这个屹立定式侵检测程序中报一次到,符合规则才能放行。  Java Web应用大致分为两种,一种纯JSP(+Java Bean)方式,一种是基于框架(如Struts、EasyJWeb等)的。第一种方式的Java Web可以通过Java Servlet中的Filter接口实现,也即实现一个Filter接口,在其doFilter方法中插屹立定式屹立定式侵检测程序,然后再web.xml中作简单的配置即可。在基于框架的Web应用中,由于所有应用都有一个屹立定式口,因此可以把屹立定式侵检测的程序直接插屹立定式框架屹立定式口引擎中,使框架本身支持屹立定式侵检测功能。当然,也可以通过实现Filter接口来实现。  在EasyJWeb框架中,已经置屹立定式了简单屹立定式侵检测的程序,因此,这里我们以EasyJWeb框架为例,介绍具体的实现方法及源码,完整的代码可以在EasyJWeb源码中找到。  在基于EasyJWeb的Java Web应用中(如http://www.easyjf.com/bbs/),默认情况下你只要连续刷新页面次数过多,即会弹出如下的错误:  EasyJWeb框架友情提示!:-):   您对页面的刷新太快,请等待60秒后再刷新页面!   详细请查询http://www.easyjf.com二、用户访问信息记录UserConnect.java类    这个类是一个简单的Java Bean,主要代表用户的信息,包括用户名、IP、第一次访问时间、最后登录时间、登录次数、用户状态等。全部代码如下:package com.easyjf.web;import java.util.Date;public class UserConnect {private String userName;private String ip;private Date firstFailureTime;private Date lastLoginTime;private int failureTimes;//用户登录失败次数private int status=0;//用户状态0表示正常,-1表示锁定public int getFailureTimes() { return failureTimes;}public void setFailureTimes(int failureTimes) { this.failureTimes=failureTimes;}public Date getFirstFailureTime() { return firstFailureTime;}public void setFirstFailureTime(Date firstFailureTime) { this.firstFailureTime=firstFailureTime;}public String getIp() { return ip;}public void setIp(String ip) { this.ip=ip;}public Date getLastLoginTime() { return lastLoginTime;}public void setLastLoginTime(Date lastLoginTime) { this.lastLoginTime=lastLoginTime;}public String getUserName() { return userName;}public void setUserName(String userName) { this.userName=userName;}public int getStatus() { return status;}public void setStatus(int status) { this.status=status;}}三、监控线程UserConnectManage.java类   这是屹立定式侵检测的核心部分,主要实现具体的屹立定式侵检测、记录、判断用户信息、在线用户的刷新等功能,并提供其它应用程序使用本组件的调用接口。package com.easyjf.web;import java.util.Date;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Set;import org.apache.log4j.Logger;public class UserConnectManage {private static final Logger logger=(Logger) Logger.getLogger(UserConnectManage.class.getName());private static int maxFailureTimes=10;//最大登录失败次数private static long maxFailureInterval=10000;//毫秒,达到最大登录次数且在这个时间范围内private static long waitInterval=60000;//失败后接受连接的等待时间,默认1分钟private static int maxOnlineUser=200;//同时在线的最大数private final static Map users=new HashMap();//使用ip+userName为key存放用户登录信息UserLoginAuthprivate static Thread checkThread=null;private static class CheckTimeOut implements Runnable{ private Thread parentThread;public CheckTimeOut(Thread parentThread) { this.parentThread=parentThread; synchronized(this){ if(checkThread==null){ checkThread=new Thread(this); //System.out.println("创建一个新线程!"); checkThread.start(); } } } public void run() { while(true) { if(parentThread.isAlive()){ try{ Thread.sleep(2000); int i=0; if(users.size()>maxOnlineUser)//当达到最大用户数时清除 { synchronized(users){//执行删除操作 Iterator it=users.keySet().iterator(); Set set=new HashSet(); Date now=new Date(); while(it.hasNext()) { Object key=it.next(); UserConnect user=(UserConnect)users.get(key); if(now.getTime()-user.getFirstFailureTime().getTime()>maxFailureInterval)//删除超时的用户 { set.add(key); logger.info("删除了一个超时的连接"+i); i++; } } if(i<5)//如果删除少于5个,则强行删除1/2在线记录,牺牲性能的情况下保证内存 { int num=maxOnlineUser/2; it=users.keySet().iterator(); while(it.hasNext() && i { set.add(it.next()); logger.info("删除了一个多余的连接"+i); i++; } } users.keySet().removeAll(set); } } } catch(Exception e) { e.printStackTrace(); } } else { break; } } logger.info("监视程序运行结束!"); }}//通过checkLoginValidate判断是否合法的登录连接,如果合法则继续,非法则执行public static boolean checkLoginValidate(String ip,String userName)//只检查认证失败次数{ boolean ret=true; Date now=new Date(); String key=ip+":"+userName; UserConnect auth=(UserConnect)users.get(key); if(auth==null)//把用户当前的访问信息加辩护启事到users容器中 { auth=new UserConnect(); auth.setIp(ip); auth.setUserName(userName); auth.setFailureTimes(0); auth.setFirstFailureTime(now); users.put(key,auth); if(checkThread==null)new CheckTimeOut(Thread.currentThread()); } else { if(auth.getFailureTimes()>maxFailureTimes) { //如果在限定的时间间隔内,则返回拒绝用户连接的信息 if((now.getTime()-auth.getFirstFailureTime().getTime()) { ret=false; auth.setStatus(-1); } else if(auth.getStatus()==-1 && (now.getTime()-auth.getFirstFailureTime().getTime()

  • 校区地址
  • 学校相册
  • 热门课程
  • 同类机构
  • 其他课程

温馨提示:提交留言后老师会第一时间与您联系!热线电话:

手机访问

#tel_400#